Graylog之Grok解析

📚概述

通常情况下,原始日志被采集上来之后,需要通过编写正则进行日志字段的解析,以便用来进行日志分析,看板的制作。

📗Grok Patterns配置

graylog默认提供了很多规则,如果可以满需求,直接使用即可。没有可用的可根据正则表达式自定义配置

🎄graylog新增Grok Patterns配置

  1. 点击System/Grok Patterns,进入页面后点击Create pattern新增规则

image.png
image.png
配置完规则就可以使用了。具体操作如下:
Search中选中一条消息,点击message,点击小三角选择create extractor,然后选择Grok Pattern
image.png
image.png
根据选中的message进行配置
image.png
image.png

格式说明:

  • 简单讲解一下以^%{IP:remote_addr} 为例,^代表日志开头,大括号里面的IP代表名为IPgrok pattern,可以在**System/Grok pattern**中查到,冒号后边就是你要存储的字段名称为remote_addr
  • 每一个配置中间需要加一个空格,否者会报错,例如:%{TIMESTAMP_ISO8601:time_local} %{LOGLEVEL:level_name}

配置完以后,后续的日志就会按照配置规则进行分割,再次查看日志时,已经按照规则进行切割了
image.png

注意:

  • Named captures only要勾选,这样配置就会按照我们指定的名称显示,否者会显示很多

image.png

配置完的规则可以在System/inputs中查看
image.png
image.png

📐自定义日志配置示例

  1. 分发日志格式
# 格式:字段间以空格分开,前边标志信息和后续的日志信息用英文:分隔 包含空格。格式-> 时间 日志级别 代码信息 机器名称 ip地址 : 日志信息
时间                日志级别 日志代码位置             机器名称   IP地址        :  日志信息 
2022-08-29 13:52:34 INFO [UnzipServer.cpp row:129] [SERVER_NAME:75本机] 192.168.124.75 : 收到下载列表,调用下载功能!
  1. 配置
%{TIMESTAMP_ISO8601:time_local} %{LOGLEVEL:level_name} %{CLASS_NAME_AND_ROW:class_info} %{SERVER_NAME:server_name} %{IP:client_ip}

配置说明:
%{TIMESTAMP_ISO8601:time_local}:解析日志时间,存储为time_local
%{LOGLEVEL:level_name}:解析日志级别,存储字段为level_name

自定义正则:CLASS_NAME_AND_ROW

\[\s*[a-zA-z0-9]+\.[a-zA-z0-9]+\s*[a-zA-z]+\:[0-9]*\s*\]   # [UnzipServer.cpp row:129] 匹配  \s*匹配为一个或多个空格
  1. 解析结果
time_local
2022-08-29 15:02:59
level_name
INFO

💡nginx日志配置示例

nginx日志格式

log_format  main  '$remote_addr - $remote_user [$time_local] "$http_host" "$request" '
                  '$status $body_bytes_sent $request_length $content_length'
                  '"$http_referer" "$http_user_agent" "$http_x_forwarded_for"'
                  '"$upstream_addr" "$request_time" "$upstream_response_time"';

根据log_format的输出格式编写相应的正则表达式。
简单讲解一下以^%{IP:remote_addr} 为例,^代表日志开头,大括号里面的IP代表名为IPgrok pattern,可以在System/Grok pattern中查到,冒号后边就是你要存储的字段名称为remote_addr

%{IP:remote_addr}%{SPACE}-%{SPACE}%{DATA:remote_user}%{SPACE}\[%{HTTPDATE:time_local}\]%{SPACE}\"%{DATA:http_host}\"%{SPACE}\"%{NOTSPACE:method} %{NOTSPACE:url}%{SPACE}%{NOTSPACE:http_version}\"%{SPACE}%{NOTSPACE:status}%{SPACE}%{NOTSPACE:body_bytes_sent}%{SPACE}%{NOTSPACE:request_length}%{SPACE}%{NOTSPACE:content_length}%{SPACE}\"%{DATA:http_referer}\"%{SPACE}\"%{DATA:http_user_agent}\"%{SPACE}\"%{DATA:http_x_forwarded_for}\"%{SPACE}\"%{DATA:upstream_addr}\"%{SPACE}\"%{DATA:request_time}\"%{SPACE}\"%{DATA:upstream_response_time}\"

日志示例:

192.168.124.77 - - [02/Sep/2022:15:12:40 +0800] "10.0.204.66:18099" "GET /gdmp/biz_panorama/biz/alarm_statistic HTTP/1.1" 200 7741 781 -"http://localhost:8090/devops/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36" "127.0.0.1""10.0.204.66:18090" "0.104" "0.103"

Grok Pattern

%{IP:remote_addr}%{SPACE}-%{SPACE}%{DATA:remote_user}%{SPACE}\[%{HTTPDATE:time_local}\]%{SPACE}\"%{DATA:http_host}\"%{SPACE}\"%{NOTSPACE:method} %{NOTSPACE:url}%{SPACE}%{NOTSPACE:http_version}\"%{SPACE}%{NOTSPACE:status}%{SPACE}%{NOTSPACE:body_bytes_sent}%{SPACE}%{NOTSPACE:request_length}%{SPACE}%{NOTSPACE:content_length}%{SPACE}\"%{DATA:http_referer}\"%{SPACE}\"%{DATA:http_user_agent}\"%{SPACE}\"%{DATA:http_x_forwarded_for}\"%{SPACE}\"%{DATA:upstream_addr}\"%{SPACE}\"%{DATA:request_time}\"%{SPACE}\"%{DATA:upstream_response_time}\"

📜Java日志配置

日志格式
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<property name="LOG_FORMAT" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/>
日志示例
2022-11-03 15:46:58.478 [http-nio-8081-exec-3] ERROR c.a.g.controller.LogGenerateController - error级别199952
Grok Patterns配置
%{TIMESTAMP_ISO8601:log_time} \[%{NOTSPACE:thread_name}\] %{LOGLEVEL:level_name} %{NOTSPACE:logger_name}
解析结果

image.png

📖参考资料

  1. 常用日志正则解析grok pattern
  2. [日志分析]Graylog2进阶 通过正则解析Nginx日志
  3. graylog 使用之 编写 grok 表达式_qq_33451502的博客-优快云博客_graylog grok
  4. nginx 日志配置不生效的问题 - 走看看
  5. [日志分析]Graylog2采集Nginx日志 主动方式
  6. Graylog最佳实践
  7. nginx日志格式详解 - 爱码网
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值