日志管理 GrayLog VS ELK

Graylog开源版官网: https://www.graylog.org/

Graylog 文档:https://docs.graylog.org/docs

GRAYLOG 的架构方向

Graylog 是最接近 Splunk 架构的:

  • Graylog 是从第一行代码单独构建的日志管理系统。 这使得它非常高效且易于使用。

  • graylog-server组件位于中间,解决了 Elasticsearch(全文搜索引擎,而不是日志管理系统)在日志管理方面的缺点。它还在其之上构建了一个抽象层,以使数据访问尽可能容易,而无需选择索引和编写繁琐的时间范围选择过滤器等 - 只需提交搜索查询,Graylog 将为您处理剩下的事情。

  • 系统的所有部分都紧密集成,许多部分相互通信,使您的工作更轻松。

  • 就像 WordPress 使 MySQL 成为一个很好的博客解决方案一样,Graylog 使 Elasticsearch 成为一个很好的日志记录解决方案。您永远不应该直接使用系统或前端查询 Elasticsearch 来进行日志管理,因此我们将其放在graylog-server前面。

Graylog的部署图

最低部署图:

在这里插入图片描述

生产集群部署图

在这里插入图片描述

Graylog 的部署步骤

graylog 包括四部分:

  1. mongodb

  2. elasticsearch

  3. graylog-server

  4. graylog-web

1. 环境准备

我这里采用的是docker-compose的方式启动

官方提供了多个版本的 docker-compose.yml文件可供选择。

官方连接:https://docs.graylog.org/en/3.3/pages/installation/docker.html

version: '3'
services:
    # MongoDB: https://hub.docker.com/_/mongo/
    mongo:
      image: mongo:4.2
      networks:
        - graylog
    # Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docker.html
    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: https://hub.docker.com/r/graylog/graylog/
    graylog:
      image: graylog/graylog:4.2
      environment:
        # CHANGE ME (must be at least 16 characters)!
        - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
        # Password: admin
        - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
        - GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
      entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 --  /docker-entrypoint.sh
      networks:
        - graylog
      restart: always
      depends_on:
        - mongo
        - elasticsearch
      ports:
        # Graylog web interface and REST API
        - 9000:9000
        # Syslog TCP
        - 1514:1514
        # Syslog UDP
        - 1514:1514/udp
        # GELF TCP
        - 12201:12201
        # GELF UDP
        - 12201:12201/udp
networks:
    graylog:
      driver: bridge

这里需要注意GRAYLOG_HTTP_EXTERNAL_URI 这个配置项是web页面的路径,如果是本地可以指定localhost或者127.0.0.1。如果是远程访问这里则需要填写外网ip。

2. 启动容器

通过 docker-compose up 启动容器

3.登录控制台

通过前面配置文件中 GRAYLOG_HTTP_EXTERNAL_URI 指定的路径登录页面

springboot 集成Graylog

1. 添加pom 依赖

<!-- 提供logback传输日志到graylog的依赖 -->
		<dependency>
            <groupId>de.siegmar</groupId>
            <artifactId>logback-gelf</artifactId>
            <version>2.0.0</version>
        </dependency>

2. 修改logback.xml

支持tcp 和 udp 两种方式,这里采用udp示例

具体描述信息见官网:https://github.com/osiegmar/logback-gelf

<!-- graylog 日志收集 -->
  <appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
    <graylogHost>localhost</graylogHost>
    <graylogPort>12201</graylogPort>
    <maxChunkSize>508</maxChunkSize>
    <useCompression>true</useCompression>
    <encoder class="de.siegmar.logbackgelf.GelfEncoder">
      <includeRawMessage>true</includeRawMessage>
      <includeMarker>true</includeMarker>
      <includeMdcData>true</includeMdcData>
      <includeCallerData>false</includeCallerData>
      <includeRootCauseData>false</includeRootCauseData>
      <includeLevelName>true</includeLevelName>
      <shortPatternLayout class="ch.qos.logback.classic.PatternLayout">
        <pattern>${GRAY_LOG_SHORT_PATTERN}</pattern>
      </shortPatternLayout>
      <fullPatternLayout class="ch.qos.logback.classic.PatternLayout">
        <pattern>${GRAY_LOG_FULL_PATTERN}</pattern>
      </fullPatternLayout>
      <staticField>app_name:${APP_NAME}</staticField>
      <staticField>os_arch:${os.arch}</staticField>
      <staticField>os_name:${os.name}</staticField>
      <staticField>os_version:${os.version}</staticField>
    </encoder>
  </appender>

  <root level="INFO">
    <appender-ref ref="GELF" />
  </root>

3 . 设置来源信息

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

在这里插入图片描述

4. 启动项目

在这里插入图片描述

Graylog与ELK之间的主要区别

  • ELK stack;它使用弹性搜索收集、索引和存储数据;logstash 是分析存储在弹性搜索中的所有信息的工具;此信息可能是日志数据。他们所做的所有推论和观察都由 kibana 使用其交互式仪表板进行可视化。ELK stack主要专注于大数据分析,而 Graylog 则专门用于日志分析。与 ELK 不同,它只处理日志数据。

  • 可视化由 ELK 中的 kibana 完成;kibana 必须与其他人一起单独设置。Graylog 是处理和可视化的完整包。它的 GUI 比 kibana 更具交互性和用户友好性。在日志分析方面,Graylog 非常强大。

  • ELK stack和Graylog在一定程度上都是开源工具,用户可以亲身体验,持续支持,所有高级功能都是授权的。

  • Graylog 用于许多安全应用程序中,并且是集中式的。由于所有数据都是集中的,因此可以从多个日志源以及多个地理位置分析大规模(TB)的数据,因此可以在任何地方访问。

ELK中的日志分析流程:

  • 在大多数对日志分析感兴趣的情况下,ELK stack使用 filebeat(一种用于集中所有日志的轻量级工具)将所有日志定向到特定服务器。

  • filebeat正在推送的所有数据都被推送到logstash进行处理。Logstash 非常轻巧且灵活。它可以与多个插件集成,但要以性能为代价。

  • 虽然 logstash 很容易使用,但由于其局限性,处理高流量数据变得困难。

  • 所有logstash处理的数据都会发送到kibana进行可视化。它非常具有交互性,让用户可以定义他们选择的可视化类型。除了数据表示之外,它还提供了一些有关应用程序在生产环境中的行为的统计信息。

Graylog中的日志分析流程:

  • Graylog主要由三个组件组成,分别是MongoDB、Graylog主服务器和Graylog Web界面。

  • Graylog 客户端设置有特定的配置,可以实现服务器-客户端通信。客户端将日志数据推送到服务器,服务器分析并存储在 mongoDB 中。

  • Graylog Web UI 非常用户友好;它提供对用户权限的控制。它使用 RESTful API。

  • Web UI 可以支持多种数据类型,而 Graylog 不支持系统日志。数据应直接发送到 Graylog。这使得仪表板中的日志管理变得困难。

Graylog vs ELK对比表

GraylogELK
不接受系统日志文件。数据应直接发送。ELK 支持所有大多数数据类型,如 json 等。可以使用第三方插件进行数据转换。
专为日志管理和日志分析而开发。ELK 支持日志管理和日志分析以及其他功能。它是一个多用途的工具。
Graylog 在处理日志方面非常强大。Logstash 是 ELK 的一部分,它进行处理的速度不如 Graylog 快,并且在存在高流量数据时会出现问题。
用java开发,支持GLEF(Graylog扩展日志格式)ELK也是用java开发的,支持json格式。
支持实时 UDP 日志记录/GLEF 日志记录以及直观的搜索。支持弹性搜索的全文查询搜索分析。
使用 Lucene 语法作为其搜索语言使用基于 Lucene 作为其搜索语言的 Query DSL。
内置警报可用。警报基于流数据。可以在 Graylog Web 界面中配置自定义警报过滤器。内置警报不可用,但可以使用 X-pack 等第三方插件向用户发送警报。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
## 什么是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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值