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的安装见《Graylog安装总结.md》此处假设已经将graylog安装完成

springboot集成graylog

基础概念

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

step1 项目引入logback-gelf

pom.xml文件中加入
<dependency>
  <groupId>de.siegmar</groupId>
  <artifactId>logback-gelf</artifactId>
  <version>3.0.0</version>
</dependency>

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

step2 项目logback文件中加入 Gelf Appender

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

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

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

<appender name="GELF_TCP" class="de.siegmar.logbackgelf.GelfTcpAppender">
       <!-- Graylog服务的地址 -->
		  <graylogHost>192.168.0.211</graylogHost>
		  <!-- TCP Input端口 -->
		  <graylogPort>12201</graylogPort>
		  <encoder class="de.siegmar.logbackgelf.GelfEncoder">
		    <!-- 是否发送原生的日志信息 -->
		    <includeRawMessage>false</includeRawMessage>
		    <includeMarker>true</includeMarker>
		    <includeMdcData>true</includeMdcData>
		    <includeCallerData>false</includeCallerData>
		    <includeRootCauseData>false</includeRootCauseData>
		    
		    <!-- 是否发送日志级别的名称,否则默认以数字代表日志级别 -->
		    <includeLevelName>true</includeLevelName>
		    <shortPatternLayout class="ch.qos.logback.classic.PatternLayout">
		      <pattern>%m%nopex</pattern>
		    </shortPatternLayout>
		    <fullPatternLayout class="ch.qos.logback.classic.PatternLayout">
		      <pattern>#[%level] %d{yyyy-MM-dd HH:mm:ss.SSS } %thread  %logger{35} - %msg %n</pattern>
		    </fullPatternLayout>
		​
		    <!--
		     配置应用名称(服务名称),通过staticField标签可以自定义一些固定的日志字段 
		    -->
		    <staticField>app_name:saas-task-server-AKA-TCP</staticField>
		    <staticField>my_field1:9991</staticField>
		  </encoder>
    </appender>

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

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

在这里插入图片描述

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

step3 配置GrayLog

此时需要配置GrayLog 的input选择 新增TCP 或 UDP 的输入
在这里插入图片描述在这里插入图片描述在这里插入图片描述
如果创建UDP的输入同理

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

step4 测试日志收集

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

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

gelf详细配置说明

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

graylog 搜索语法

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

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

在这里插入图片描述

这里主要是注意 空格表示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控制台使用

查询控制面板的使用

在这里插入图片描述

报警与通知

在这里插入图片描述

创建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 = qq@qq.com
transport_email_auth_password = xxxxx
transport_email_subject_prefix = [graylog-mail]
transport_email_from_email = qq@qq.com
transport_email_use_tls = true

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

选择创建通知

在这里插入图片描述

配置邮件

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

创建http通知

配置http通知

http 通知可以警告消息发送给自己的服务器
在这里插入图片描述

消息通知的数据格式

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": "<unknown>",
  "job_trigger_id": "<unknown>",
  "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 <admin>",
    "source": "000000000000000000000001",
    "key_tuple": [
      "testkey"
    ],
    "key": "testkey",
    "priority": 2,
    "alert": true,
    "fields": {
      "field1": "value1",
      "field2": "value2"
    }
  },
  "backlog": []
}
服务器端接收数据的方式
  • 直接使用inputstream
  • 基于graylog发送的json 自定义bean

直接使用inputstream

在这里插入图片描述

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

在这里插入图片描述

创建报警

创建报警配置

在这里插入图片描述

基础配置

在这里插入图片描述

配置匹配条件与频率

在这里插入图片描述

配置匹配结果

  • Filter has results : 匹配一个就报警
  • Aggregation of results reaches a threshold: 满足聚合后的量才报警(例如出现几次异常才报警)
    在这里插入图片描述
配置自定字段

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

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

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

在这里插入图片描述

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

在这里插入图片描述

配置通知方式

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

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

最后点击 Done完成配置

输入input 数据流streams 索引index

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

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

input streams index 的关系如下
在这里插入图片描述

注意数据

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

Step1 创建一个 input

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

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

在这里插入图片描述

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

Step2 创建一个 index 索引

在这里插入图片描述

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

Step3 创建一个 streams 数据流

在这里插入图片描述

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

创建完成后 点击管理规则

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

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

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

这里我们使用匹配 input

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述


问题总结

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

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

Graylog与文件配置使用方式

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

打印ip

支持gl2_remote_ip 打印远程ip

在这里插入图片描述

  • 40
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
## 什么是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
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寂寞的4角钱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值