graylog使用总结这一篇就够了

graylog使用总结.md

大纲

  • 概念
  • springboot集成graylog
  • gelf详细配置说明
  • graylog搜索语法
  • graylog控制台使用
  • 问题总结

概念

Graylog 官网 https://www.graylog.org/
Graylog 教程 https://docs.graylog.org/docs/lookuptables

选择graylog的原因是:

  • 1 轻量化,springboot可以直接接入到graylog不需要其他的配置
  • 2 简单,单机版可以满足大部分非高并发行公司的业务日志查询

部署 graylog 最简单的架构就是单机部署(足够满足医蟹这种体量的公司使用),复杂的也是部署集群模式

Graylog 的组件主要有3个

  • Elasticsearch
  • MongoDb
  • Graylog

Elasticsearch 用来持久化存储和检索日志文件数据(IO 密集)
MongoDb 用来存储关于 Graylog 的相关配置
Graylog 来提供 Web 界面和对外接口的(CPU 密集)

graylog使用总结这一篇就够了_第1张图片

graylog的安装见《Graylog安装总结.md》此处假设已经将graylog安装完成

springboot集成graylog

基础概念

springboot集成graylog 主要是使用logback-gelf (搭建graylog的指定GELF 暴露的端口就是为此处使用的)

step1 项目引入logback-gelf

pom.xml文件中加入

  de.siegmar
  logback-gelf
  3.0.0

这样就可以再logback配置文件中加入 GelfTcpAppender GelfUdpAppender

step2 项目logback文件中加入 Gelf Appender

1 在application.properties 中指定logback的配置文件

logging.config=classpath:logback-logstash-graylog.xml

2 在 logback-logstash-graylog.xml 配置文件中加入GelfTcpAppender


       
		  192.168.0.211
		  
		  12201
		  
		    
		    false
		    true
		    true
		    false
		    false
		    
		    
		    true
		    
		      %m%nopex
		    
		    
		      #[%level] %d{yyyy-MM-dd HH:mm:ss.SSS } %thread  %logger{35} - %msg %n
		    
		    app_name:saas-task-server-AKA-TCP
		    my_field1:9991
		  
    

也可以使用UDP通信的 GelfUdpAppender 见logback-logstash-graylog.xml 中的配置

区分项目过滤
使用app_name:saas-task_server 固定项目名称

graylog使用总结这一篇就够了_第2张图片

此时项目部分就配置完成了

step3 配置GrayLog

此时需要配置GrayLog 的input选择 新增TCP 或 UDP 的输入
graylog使用总结这一篇就够了_第3张图片graylog使用总结这一篇就够了_第4张图片graylog使用总结这一篇就够了_第5张图片
如果创建UDP的输入同理

在这里插入图片描述
graylog使用总结这一篇就够了_第6张图片

step4 测试日志收集

访问 GraylogController 中的mapping
http://127.0.0.1:8881/g/t3?b=2

graylog使用总结这一篇就够了_第7张图片
graylog使用总结这一篇就够了_第8张图片

gelf详细配置说明

GELF是一种日志格式,能避免传统意义上的 syslogs的一些问题,而我们引入的Maven依赖则是把日志格式化成GELF格式然后append到GrayLog上。

graylog 搜索语法

语法搜索: https://docs.graylog.org/docs/query-language (用chorme打开)

输入框中输入内容默认是搜索 message字段中的内容

graylog使用总结这一篇就够了_第9张图片

这里主要是注意 空格表示OR ""框起来表示整体

  • 输入一个单词MM 表示message内容中有MM
  • 输入两个单词MM KFC 表示message内容中有MM 或者 KFC
  • 输入"MM KFC" 表示精确匹配

** 1 字段查询**

字段名称:内容
例如 
app_name:saas-task-server-FFFJJ  精确匹配app_name字段内容为saas-task-server-FFFJJ
app_name:med*  使用正则匹配pp_name字段内容为med开头的
app_name:(med* saas-task*) 可以配置app_name字段内容为多个的

** 2 范围查询**

http_response_code:[500 TO 504]
http_response_code:{400 TO 404}
bytes:{0 TO 64]
http_response_code:[0 TO 64}
或者这是大于小于号
http_response_code:>400
http_response_code:<400
http_response_code:>=400
http_response_code:<=400
http_response_code:(>=400 AND <500)

** 3 关键字**

  • AND
  • OR
  • NOT
    注意需要大写

4 通配符

Use ? to replace a single character or * to replace zero or more characters:

graylog控制台使用

查询控制面板的使用

graylog使用总结这一篇就够了_第10张图片

报警与通知

graylog使用总结这一篇就够了_第11张图片

创建email通知

graylog配置支持

创建邮件通知前需要先在graylog配置中开启并配置邮件发送相关配置 (见《Graylog安装总结.md》)

transport_email_enabled = true
transport_email_hostname = smtp.mxhichina.com
transport_email_port = 587
transport_email_use_auth = true
transport_email_auth_username = [email protected]
transport_email_auth_password = xxxxx
transport_email_subject_prefix = [graylog-mail]
transport_email_from_email = [email protected]
transport_email_use_tls = true

**注意选择邮件服务器和端口可能是587 465 具体看邮件服务器提供商 阿里云使用587端口 **

选择创建通知

graylog使用总结这一篇就够了_第12张图片

配置邮件

graylog使用总结这一篇就够了_第13张图片graylog使用总结这一篇就够了_第14张图片
graylog使用总结这一篇就够了_第15张图片

创建http通知

配置http通知

http 通知可以警告消息发送给自己的服务器
graylog使用总结这一篇就够了_第16张图片

消息通知的数据格式

graylog会发送一个http post json请求到对应的url地址,json数据内容如下

{
  "event_definition_id": "this-is-a-test-notification",
  "event_definition_type": "test-dummy-v1",
  "event_definition_title": "Event Definition Test Title",
  "event_definition_description": "Event Definition Test Description",
  "job_definition_id": "",
  "job_trigger_id": "",
  "event": {
    "id": "NotificationTestId",
    "event_definition_type": "notification-test-v1",
    "event_definition_id": "EventDefinitionTestId",
    "origin_context": "urn:graylog:message:es:testIndex_42:b5e53442-12bb-4374-90ed-0deadbeefbaz",
    "timestamp": "2020-05-20T11:35:11.117Z",
    "timestamp_processing": "2020-05-20T11:35:11.117Z",
    "timerange_start": null,
    "timerange_end": null,
    "streams": [
      "000000000000000000000002"
    ],
    "source_streams": [],
    "message": "Notification test message triggered from user ",
    "source": "000000000000000000000001",
    "key_tuple": [
      "testkey"
    ],
    "key": "testkey",
    "priority": 2,
    "alert": true,
    "fields": {
      "field1": "value1",
      "field2": "value2"
    }
  },
  "backlog": []
}

服务器端接收数据的方式

  • 直接使用inputstream
  • 基于graylog发送的json 自定义bean

直接使用inputstream

graylog使用总结这一篇就够了_第17张图片

基于graylog发送的json 自定义bean (推荐)

graylog使用总结这一篇就够了_第18张图片

创建报警

创建报警配置

graylog使用总结这一篇就够了_第19张图片

基础配置

graylog使用总结这一篇就够了_第20张图片

配置匹配条件与频率

graylog使用总结这一篇就够了_第21张图片

配置匹配结果

  • Filter has results : 匹配一个就报警
  • Aggregation of results reaches a threshold: 满足聚合后的量才报警(例如出现几次异常才报警)
    graylog使用总结这一篇就够了_第22张图片

配置自定字段

配置自定义字段内容是一个关键,可以把日志中的一些数据发送出去!便于问题排查

graylog使用总结这一篇就够了_第23张图片
graylog使用总结这一篇就够了_第24张图片

自定义自定会以fields Map 作用json发送

在这里插入图片描述

可以使用以下字段作为 自定义字段数据(即graylog 当前search支持的显示字段即可)

graylog使用总结这一篇就够了_第25张图片

配置通知方式

选择已经配置好的通知即可 可以是邮件 可以是http

graylog使用总结这一篇就够了_第26张图片
graylog使用总结这一篇就够了_第27张图片

最后点击 Done完成配置

输入input 数据流streams 索引index

默认情况下是需要配置一个input 就可以自动与all-message streams绑定 做到开箱即用

但是我们有可能想对不同的项目,使用不同的streams 使用不同的索引管理日志,例如 nginx的日志保存3天 业务日志保存一个月

input streams index 的关系如下
graylog使用总结这一篇就够了_第28张图片

注意数据

配置一个自定义的streams 做日志管理

Step1 创建一个 input

理论上只需要一个input即可
在这里插入图片描述

以下是为了展示多个input的使用

graylog使用总结这一篇就够了_第29张图片

注意 如果是docker安装 要提前暴露端口

Step2 创建一个 index 索引

graylog使用总结这一篇就够了_第30张图片

graylog使用总结这一篇就够了_第31张图片
graylog使用总结这一篇就够了_第32张图片

Step3 创建一个 streams 数据流

graylog使用总结这一篇就够了_第33张图片

注意 一定要勾选 Remove matches from ‘All messages’ stream 这样数据不会到All messages中

创建完成后 点击管理规则

在这里插入图片描述graylog使用总结这一篇就够了_第34张图片

**规则的匹配方式有很多 **
例如 可以匹配某个字段是否是某个值

比如 app_name 是否是 saas-task-server-FFF 这样可以做项目间的区分

这里我们使用匹配 input

graylog使用总结这一篇就够了_第35张图片

配置完规则后 可以测试下是否匹配成功

graylog使用总结这一篇就够了_第36张图片

在这里插入图片描述

Step4 search面板中找到自己创建的stream

graylog使用总结这一篇就够了_第37张图片


问题总结

如果Graylog宕机后 会影响程序么

测试发现应该没有影响,只会打印连接失败,对正常业务没有影响

Graylog与文件配置使用方式

见配置《logback-logstash-graylog-tcp-file.xml》

打印ip

支持gl2_remote_ip 打印远程ip

graylog使用总结这一篇就够了_第38张图片

你可能感兴趣的:(graylog,spring,boot,graylog)