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

系列文章目录

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



前言

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


一、graylog-web界面操作

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

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

2、页面配置:创建sidecar采集器
	Web界面进入System/Sidecars

	Collector根据需要这里选择了:filebeat on Linux
	paths处填写你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 节点 ID
	fields.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: log
	  enabled: true
	  ignore_older: 48h
	  tail_files: false
	  paths:
	    - /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.log
	  fields: #此处的配置适用于日志城市平台
	    systemCode: Etown #系统code
	    appId: coupons  #应用code
	  multiline.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/data
	  logs: /var/lib/graylog-sidecar/collectors/filebeat/log
	#如遇到相同节点日志目录不统一的情况下则需要根据一下配置进行调整
	fields_under_root: true
	fields.collector_node_id: ${sidecar.nodeName}
	fields.gl2_source_collector: ${sidecar.nodeId}
	fields.localIp: ${sidecar.nodeName}
	fields.inputType: agent
	filebeat.registry.flush: 60s
	filebeat.shutdown_timeout: 10s
	max_procs: 2
	filebeat.inputs:
	- type: log
	  enabled: true
	  ignore_older: 48h
	  tail_files: false
	  paths:
	    - /export/Logs/xxx/*/app_error.log
	  fields:
	    systemCode: pro
	    appId: app_pro
	    serviceId: test1
	  multiline.pattern: '^[[:space:]]+(at|\.{3})[[:space:]]+\b|^Caused by:|^org|^com|^java.|^\,|^###|^;|^For|^feign|^from|^to|^class|^Desired|^par|^concurrent|^eden|^Metaspace'
	  multiline.negate: false
	  multiline.match: after
	  multiline.max_lines: 200
	- type: log
	  enabled: true
	  ignore_older: 48h
	  tail_files: false
	  paths:
	    - /export/icity/*/all.log
	  fields:
	    systemCode: pro
	    appId: app_pro
	    serviceId: test1
	  multiline.pattern: '^[[:space:]]+(at|\.{3})[[:space:]]+\b|^Caused by:|^org|^com|^java.|^\,|^###|^;|^For|^feign|^from|^to|^class|^Desired|^par|^concurrent|^eden|^Metaspace'
	  multiline.negate: false
	  multiline.match: after
	  multiline.max_lines: 200
	output.logstash:
	   hosts: ["ip:5044","ip:5044"]
	path:
	  data: /var/lib/graylog-sidecar/collectors/filebeat/data
	  logs: /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"
when
  has_field("log_file_path")
then
  let 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"
when
  has_field("fields_appId")
then
  rename_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"
when
    has_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"
when
    has_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  分词方法 standard
	index 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中的日志转换规则、清洗脚本等,对原本复杂的日志进行简单化处理,拿到自己想看到的日志字段。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
## 什么是graylog Graylog 是一个简单易用、功能较全面的日志管理工具,相比 ELK 组合, 优点: - 部署维护简单 - 查询语法简单易懂(对比ES的语法…) - 内置简单的告警 - 可以将搜索结果导出为 json - 提供简单的聚合统计功能 - UI 比较友好 - 当然, 拓展性上比 ELK 差很多。 整套依赖: - Graylog 提供 graylog 对外接口 - Elasticsearch 日志文件的持久化存储和检索 - MongoDB 只是存储一些 Graylog配置 ## 安装 > 可以是裸机安装,也可以是docker安装,这里用docker安装 环境要求: - centos7.4 - cpu2个 内存2G 参考: https://hub.docker.com/r/graylog2/graylog/ ### 环境准备 ``` mkdir /root/graylog && cd /root/graylog //挂载目录 mkdir -p mongo_data graylog_journal es_data //配置文件目录 mkdir -p ./graylog/config cd ./graylog/config wget https://raw.githubusercontent.com/Graylog2/graylog-docker/3.0/config/graylog.conf wget https://raw.githubusercontent.com/Graylog2/graylog-docker/3.0/config/log4j2.xml //提前准备镜像 docker pull mongo:3 docker pull graylog/graylog:3.0 docker pull elasticsearch:5.6.9 ``` ### docker-compose.yml ``` version: '2' services: # MongoDB: https://hub.docker.com/_/mongo/ mongo: image: mongo:3 volumes: - ./mongo_data:/data/db - /etc/localtime:/etc/localtime # Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/docker.html elasticsearch: image: elasticsearch:5.6.9 volumes: - ./es_data:/usr/share/elasticsearch/data - /etc/localtime:/etc/localtime environment: - http.host=0.0.0.0 - transport.host=localhost - network.host=0.0.0.0 # Disable X-Pack security: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/security-settings.html#general-security-settings - xpack.security.enabled=false - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 mem_limit: 1g # Graylog: https://hub.docker.com/r/graylog/graylog/ graylog: image: graylog/graylog:3.0 volumes: - ./graylog_journal:/usr/share/graylog/data/journal - ./graylog/config:/usr/share/graylog/data/config - /etc/localtime:/etc/localtime environment: # CHANGE ME! - GRAYLOG_PASSWORD_SECRET=somepassword

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值