分布式日志GrayLog使用

文章目录

GrayLog简介

GrayLog是一个轻量型的分布式日志管理平台,一个开源的日志聚合、分析、审计、展示和预警工具。在功能上来说,和 ELK类似,但又比 ELK要简单轻量许多。依靠着更加简洁,高效,部署使用简单的优势很快受到许多公司的青睐。

GrayLog包含 ElasticsearchMongoDbGraylog三个模块。其中,Elasticsearch用来持久化存储和检索日志文件数据,MongoDb 用来存储关于 Graylog的相关配置,而 Graylog用来提供 Web 界面和对外接口。

  • 单机部署

分布式日志GrayLog使用

  • 集群部署

    分布式日志GrayLog使用

GrayLog功能分析

简单来讲,Input 表示日志数据的来源,对不同来源的日志可以通过 Extractors 来进行日志的字段转换。然后,通过不同的标签类型分组成不用的 Stream,并将这些日志数据存储到指定的 Elastic Index 库中进行持久化保存。

组件名称 功能介绍 主要特点
Dashboards 数据面板固定展示 主要是用来保存特定搜索条件的数据面板
Searching 日志信息条件搜索 关键字搜索、时间搜索、搜索保存、创建面板、分组查询、结果导出、查询高亮显示、自定义时间
Alert 设置告警提示方式 支持邮件告警、HTTP 回调和自定义脚本触发
Inputs 日志数据抓取接收 部署 Sidercar 主动抓取或使用其他服务被动上报
Extractors 日志数据格式转换 json 解析、kv 解析、时间戳解析、正则解析
Streams 日志信息分类分组 设置日志分类条件并发送到不同的索引文件中去
Indices 持久化数据存储 设置数据存储性能
Outputs 日志数据的转发 解析的 Stream 发送到其他 Graylog 集群或服务
Pipelines 日志数据的过滤 建立数据清洗的过滤规则、字段添加删除、条件过滤、自定义函数等
Sidecar 轻量级的日志采集器 相当于 C/S 模式;大规模时使用
Lookup Tables 服务解析 基于 IP 的 Whois 查询和基于来源 IP 的情报监控
Geolocation 可视化地理位置 实现基于来源 IP 的情报监控

参考:https://docs.graylog.org/docs/

https://blog.csdn.net/wjandy0211/article/details/108485836

https://blog.csdn.net/qianshangding0708/article/details/121312622

单机部署GrayLog

使用docker-compose安装方便快捷。参考官网文档Docker - Installing Graylog

声明:此次安装基于centos8

docker-compose文件

version: '3'
services:
    mongo:
      image: mongo:4.2
      networks:
        - graylog
    elasticsearch:
      image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
      environment:
        - http.host=0.0.0.0
        - transport.host=localhost
        - network.host=0.0.0.0
        - "ES_JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=true -Xms512m -Xmx512m"
      ulimits:
        memlock:
          soft: -1
          hard: -1
      deploy:
        resources:
          limits:
            memory: 1g
      networks:
        - graylog
    graylog:
      image: graylog/graylog:4.2
      environment:
        - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
        - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 #默认密码:admin
        - GRAYLOG_HTTP_EXTERNAL_URI=http://ip:9000/	# ip修改为自己的
        - GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai         #设置时区
        - GRAYLOG_ALLOW_HIGHLIGHTING=true             #搜索高亮
      entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 --  /docker-entrypoint.sh
      networks:
        - graylog
      restart: always
      depends_on:
        - mongo
        - elasticsearch
      ports:
        - 9000:9000
        - 1514:1514
        - 1514:1514/udp
        - 12201:12201
        - 12201:12201/udp
networks:
    graylog:
      driver: bridge

该文件从官网文档复制而来,我修改了三个地方,即访问graylog web页面的ip和端口、设置了时区、开启了搜索内容的高亮显示。更多的配置包括自定义配置文件、持久化数据可以参考官方文档。

在docker-compose文件所在目录下运行以下命令启动graylog

docker-compose up -d  #-d以守护进程启动

启动成功后访问上方设置的ip:port进入graylog的后台地址,默认账号密码是admin/admin

分布式日志GrayLog使用

配置输入也就是graylog的数据源,使用udp的方式接收日志。之后点击Launch new inputa按钮,只需要输入Title 保存,其他默认即可。

分布式日志GrayLog使用

分布式日志GrayLog使用

spring 整合graylog

一般我们的程序都会使用logback或者其他日志框架收集日志,要想graylog能够显示我们的业务日志,只需要将日志数据写入graylog即可。

1.引入依赖

<dependency>
 <groupId>de.siegmar</groupId>
 <artifactId>logback-gelf</artifactId>
 <version>3.0.0</version>
</dependency>

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

https://docs.graylog.org/docs/gelf

2.在logback.xml文件中新增以下代码

<appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
    <!-- Graylog服务的地址 -->
    <graylogHost>IP</graylogHost>
    <!-- UDP Input端口 -->
    <graylogPort>12201</graylogPort>
    <!-- 最大GELF数据块大小(单位:字节),508为建议最小值,最大值为65467 -->
    <maxChunkSize>508</maxChunkSize>
    <!-- 是否使用压缩 -->
    <useCompression>true</useCompression>
    <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>%d - [%thread] %-5level %logger{35} - %msg%n</pattern>
      </fullPatternLayout>

      <!-- 配置应用名称(服务名称),通过staticField标签可以自定义一些固定的日志字段 -->
      <staticField>app_name:boss</staticField>
    </encoder>
</appender>

:将IP改为自己的。

3.启动程序,打开graylog的后台页面就能看到日志信息了。

分布式日志GrayLog使用

GrayLog常用查询语法

这里列几个GrayLog常用的查询语法,更多语法可以查看官网文档:https://docs.graylog.org/docs/query-language

1.根据字段精准查询:full_message:"sys"

2.根据日志级别查询:level_name:"ERROR"

3.组合多字段查询 :app_name:"boss" AND full_message:"sys" AND level_name:"DEBUG"

更多操作

GrayLog的功能远不止这些,更多相关用法可以自行探索。

https://blog.csdn.net/abu935009066/article/details/119030784

参考官方文档

上一篇:【书籍下载】 80x86汇编语言程序设计教程 pdf 下载


下一篇:频率学派(古典学派)和贝叶斯学派