日志平台--graylog-web配置、接入微服务日志

2024-03-04 06:10

本文主要是介绍日志平台--graylog-web配置、接入微服务日志,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章目录

第一章 搭建es集群
第二章 mongodb搭建
第三章 graylog搭建与反向代理


文章目录

  • 系列文章目录
  • 前言
  • 一、graylog-web界面操作
  • 二、分流操作
  • 三、分流示例
  • 四、graylog查看某个服务的日志
  • 五、graylog创建不同用户的流程及权限分类
  • 总结


前言

通过第三章内容,已成功搭建完成graylog,并且使用nginx实现了反向代理。因此在本章中,主要是针对graylog-web界面的熟悉、配置、微服务日志接入为目标,展开详细说明。


一、graylog-web界面操作

1、配置graylog首先在Web管理界面进入System/Inputs,进行如下操作:选择Beats类型,点击 Launch new input。如下图所示接着填入参数,端口根据需要进行修改,然后保存即可:

在这里插入图片描述
在这里插入图片描述

2、页面配置:创建sidecar采集器Web界面进入System/SidecarsCollector根据需要这里选择了:filebeat on Linuxpaths处填写你Nginx服务器上日志所在位置hosts处填写Graylog服务器的IP+端口(上面System/Inputs时候填入的端口):

在这里插入图片描述
在这里插入图片描述

	3、详细的configuration配置说明
#该文件适用于日志目录统一的情况fields_under_root: true  #自定义字段将直接位于输出文档的最外层,而不是嵌套在 fields 子字典中。fields.collector_node_id: ${sidecar.nodeName} #当 Graylog 集群中有多个 Collector 节点时,这个字段可以用来追踪每个日志事件的来源。fields.gl2_source_collector: ${sidecar.nodeId} #指定消息的来源采集器,其值为 Sidecar 节点 IDfields.localIp: ${sidecar.nodeName} #指定消息的本地 IP 地址,其值为 Sidecar节点名称fields.inputType: agent #指定消息的输入类型,其值为“agent”,表示该消息是来自 Agent 的日志数据。filebeat.registry.flush: 60s #指定 Filebeat 注册表的刷新时间filebeat.shutdown_timeout: 10s #指定 Filebeat 的关闭超时时间max_procs: 2  #指定 Filebeat 的最大进程数,默认值为逻辑 CPU 数量的两倍  该参数用于限制 Filebeat 运行时的并发度,防止系统资源被占用过多filebeat.inputs:- type: logenabled: trueignore_older: 48htail_files: falsepaths:- /export/Logs/*/app_error.log- /export/Logs/*/app_info.log- /export/Logs/*/system_info.log- /export/Logs/*/system_error.log- /export/Logs/*/all.log- /export/Logs/*/error.log- /export/Logs/*/coredns-66bff467f8-k8n9b.log- /export/Logs/*/coredns-66bff467f8-r5598.log- /export/Logs/*/coredns-66bff467f8-sxsnh.logfields: #此处的配置适用于日志城市平台systemCode: Etown #系统codeappId: coupons  #应用codemultiline.pattern: '^[[:space:]]+(at|\.{3})[[:space:]]+\b|^Caused by:|^org|^com|^java.|^\,|^###|^;|^For|^feign|^from|^to|^class|^Desired|^par|^concurrent|^eden|^Metaspace'multiline.negate: false #设置为false表示不否定多行模式multiline.match: after  #设置为after表示在多行模式下,从当前行的末尾开始匹配multiline.max_lines: 200 #设置允许的最大行数,超过此限制的多行日志将被截断output.logstash:hosts: ["ip:5044","ip:5044"] #此处为graylog地址path:data: /var/lib/graylog-sidecar/collectors/filebeat/datalogs: /var/lib/graylog-sidecar/collectors/filebeat/log
	#如遇到相同节点日志目录不统一的情况下则需要根据一下配置进行调整fields_under_root: truefields.collector_node_id: ${sidecar.nodeName}fields.gl2_source_collector: ${sidecar.nodeId}fields.localIp: ${sidecar.nodeName}fields.inputType: agentfilebeat.registry.flush: 60sfilebeat.shutdown_timeout: 10smax_procs: 2filebeat.inputs:- type: logenabled: trueignore_older: 48htail_files: falsepaths:- /export/Logs/xxx/*/app_error.logfields:systemCode: proappId: app_proserviceId: test1multiline.pattern: '^[[:space:]]+(at|\.{3})[[:space:]]+\b|^Caused by:|^org|^com|^java.|^\,|^###|^;|^For|^feign|^from|^to|^class|^Desired|^par|^concurrent|^eden|^Metaspace'multiline.negate: falsemultiline.match: aftermultiline.max_lines: 200- type: logenabled: trueignore_older: 48htail_files: falsepaths:- /export/icity/*/all.logfields:systemCode: proappId: app_proserviceId: test1multiline.pattern: '^[[:space:]]+(at|\.{3})[[:space:]]+\b|^Caused by:|^org|^com|^java.|^\,|^###|^;|^For|^feign|^from|^to|^class|^Desired|^par|^concurrent|^eden|^Metaspace'multiline.negate: falsemultiline.match: aftermultiline.max_lines: 200output.logstash:hosts: ["ip:5044","ip:5044"]path:data: /var/lib/graylog-sidecar/collectors/filebeat/datalogs: /var/lib/graylog-sidecar/collectors/filebeat/log
	4、管理sidecar并配置日志采集项,与sidecar绑定完成后,等待几秒日志便会采集上来,在界面中可以看到相关日志

在这里插入图片描述

在这里插入图片描述

	5、提取日志级别和时间戳配置点击其中一条日志,然后右键会出来如箭头所示的文件

在这里插入图片描述
提取日志级别
提取时间(%{TIMESTAMP_ISO8601:logTime} )该方式只能提取时间格式为yyyy-MM-dd HH:mm:ss.SSS日志如有其他格式请使用pipeline提取

	6、配置日志清洗转换脚本

在这里插入图片描述
在这里插入图片描述

1、上述图片中添加了三个日志处理规则
第一个 serverId
rule "serverId"
whenhas_field("log_file_path")
thenlet pathArray = split("/",to_string($message.log_file_path));set_field("serviceId",to_string(pathArray[3])); 如果是/export/Logs/xx.log 就为3;如果是/export/Logs/xx/xxx.log 就为4
end第二个 Remove filebeat fields prefix(删除filebeat字段前缀)
rule "Remove filebeat fields prefix"
whenhas_field("fields_appId")
thenrename_field("fields_systemCode", "systemCode");rename_field("fields_appId", "appId");rename_field("fields_serviceId", "serviceId");
end第三个 replace timestamp with log even time(将时间戳替换为日志偶数时间)
rule "replace timestamp with log even time"
whenhas_field("logTime")
then
let new_date = parse_date(value: to_string($message.logTime),pattern: "yyyy-MM-dd HH:mm:ss.SSS",timezone: "Asia/Shanghai");set_field("timestamp", new_date);
end
可选的转换脚本如果日志格式是非yyyy-MM-dd HH:mm:ss.SSS格式则需要使用字符串截取等方式提取时间
rule "replace timestamp with log even time"
whenhas_field("timestamp")
then
let eventTime = substring(to_string($message.message), 0, 21);
let new_date = parse_date(value: eventTime,pattern: "yy-MM-dd.HH:mm:ss.SSS",timezone: "Asia/Shanghai");set_field("timestamp", new_date);
end
	7、pipelines规则添加

在这里插入图片描述
在这里插入图片描述

	8、至此,所有关键字均已提取完成

在这里插入图片描述

二、分流操作

	分流的意思是创建一定的流规则,然后可以根据此规则,将日志分流,例如hbase的日志放到hbase的流中,然后放到hbase的索引中存储起来.因为在实际生产环境中,日志来源并不是单一的,除了应用服务日志外,还有nginx日志、系统日志等.这种时候就会产生重要性的问题,比如,生产环境的nginx访问日志要保存1年。而测试环境的应用服务日志,只需要保存7天就可以了这种不同情况的需求,为了能更好的区分不同类型的日志,我们就可以创建不同的索引,来储存不同类型的日志.比如创建test环境,prod环境的索引来区分环境,创建nginx,web-app等来区分nginx和应用web服务等.
	1、创建indices 如下图所示elasticsearch是以索引来存储数据的,启动graylog后,会自动生产一个默认的索引,索引地段值就为graylog,如下图。我们还可以在其中配置数据存储限制,可以通过时间,大小,数量来进行存储限制。2、分流的相关配置参数Title  标题Descriptions  描述index prefix  索引前缀analyzer  分词方法 standardindex shards  分片数量index  replicas  副本数Max.number of segments 最大分段数Field type refresh interval 字段刷新时间select rotation strategy 保存策略  时间(Index time)、字节大小(Index size)、信息统计数量(Index Msg Count)Rotation period 如果保存策略是以时间为单位  这里可以写P1~nD(天数)、P1M(一个月)、PT6H(6小时) 根据实际情况修改如果保存策略是以大小为单位   1073741824(1GB)、MB 根据实际情况修改如果保存策略是以数量为单位    默认是20000000个Select retention strategy 选择保留策略删除分片(Delete Index) 关闭分片(close index) 什么也不做(do nothing)Max number of indices如果保留策略是删除分片 ,则设定最大的索引数量,当超过设定的最大索引数量时,会删除旧的索引

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

	3、点击streams 完成创建流

在这里插入图片描述

三、分流示例

	1、查看一条具体的日志内容,如下图所示

在这里插入图片描述

	2、创建流规则流规则中Type的类型有以下几种:match exactly (精确匹配) 设定的Field字段在日志中必须符合设定的value值match regular expression(匹配正则表达式)contain (包含)greater than(大于)smaller than(小于)field presence(字段存在) 主要就是告诉graylog只要字段设定的字段是存在的,就放入设定字段的这个stream中,方便我们日后查阅。always match (始终匹配)

在这里插入图片描述

	下面配置的那个key就是上图中的,必须符合value才可以进入到这个流中,进而存到流对应的索引中

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

	完成规则创建后,点击start即可开启流

在这里插入图片描述

四、graylog查看某个服务的日志

根据创建的serviceId即可查询到
在这里插入图片描述

五、graylog创建不同用户的流程及权限分类

	1、使用管理员帐户登录到Graylog的Web界面。2、单击顶部菜单栏中的 “System” 选项卡,然后单击左侧侧边栏中的 “Authentication”。3、在 “Authentication” 屏幕上,单击 “Users” 选项卡。4、然后单击右上角的 “Create User” 按钮。5、在弹出的 “Create User” 窗口中,输入要创建的用户名、电子邮件地址和密码。你还可以选择为此用户分配角色,从而控制他们在Graylog中的访问权限。例如,如果你想让他们只能查看特定的流(stream),则可以为其分配 “Reader” 角色,并授予该流的只读权限。6、单击 “Save” 按钮保存新用户。
	Admin 所有Manager权限,以及可以管理全局用户、角色和仪表板的权限。Reader 只能查看和搜索自己有访问权限的数据。不能修改任何配置和内容。Sidecar System (Internal) 内部技术角色。授予对Sidecar节点的注册和拉取配置的访问权限(内置)Alerts Manager 允许读取和写入所有事件定义和事件通知Views Manager 允许读取和写入所有视图和扩展搜索

总结

以上就是今天要讲的内容,本文对graylog的界面操作做出了大量的讲解,并配合着graylog中的日志转换规则、清洗脚本等,对原本复杂的日志进行简单化处理,拿到自己想看到的日志字段。

这篇关于日志平台--graylog-web配置、接入微服务日志的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/772226

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短