Graylog 安装使用

Graylog 安装使用Graylog 安装使用简介 Graylog 是一个简单易用 功能较全面的日志管理工具 相比 ELK 组合 优点 部署维护简单查询语法简单易懂 对比 ES 的语法 内置简单的告警可以将搜索结果导出为 json 提供简单的聚合统计功能 UI 比较友好当然 拓展性上比 ELK 差很多 整套依赖 Graylog 提供 graylog 对外接口 CPU 密集 Elasticsearc 日志文

Graylog 安装使用

简介

Graylog 是一个简单易用、功能较全面的日志管理工具,相比 ELK 组合, 优点:

  • 部署维护简单
  • 查询语法简单易懂(对比ES的语法…)
  • 内置简单的告警
  • 可以将搜索结果导出为 json
  • 提供简单的聚合统计功能
  • UI 比较友好

当然, 拓展性上比 ELK 差很多。

整套依赖:

  • Graylog 提供 graylog 对外接口, CPU 密集
  • Elasticsearch 日志文件的持久化存储和检索, IO 密集
  • MongoDB 只是存储一些 Graylog 的配置

Graylog 最简单的架构:

图 11.0.1

Graylog 集群架构:

图 11.0.2

安装

docker 安装

环境:centos 7.0 64位

Graylog 官方提供了 docker 镜像:

docker pull mongo:3 docker pull elasticsearch:2 docker pull graylog2/server:2.1.2-1 

docker-compose 拉起服务:

version: '2' services: mongo: image: "mongo:3" volumes: - /data/mongo:/data/db elasticsearch: image: "elasticsearch:2" volumes: - /data/elasticsearch:/usr/share/elasticsearch/data command: "elasticsearch -Des.cluster.name='graylog'" graylog: image: graylog2/server:2.1.2-1 environment: GRAYLOG_WEB_ENDPOINT_URI: http://x.x.x.x:9000/api depends_on: - mongo - elasticsearch ports: - "9000:9000" - "514:514" - "515:515" 

docker-compose -f graylog.yml up -d

浏览器访问 http://x.x.x.x:9000, 默认账户名和密码均为 admin, 可得:

图 11.1

修改配置

Graylog 配置文件默认装在容器内的 /usr/share/graylog/data/config/graylog.conf, 可以通过 volume 挂载自己的配置。

其他如 log4j2, journal, plugin 也都在 /usr/share/graylog/data/config/ 目录。

例如修改时区,只需要修改配置文件:

# Default is UTC  root_timezone = Asia/Shanghai

接入 syslog

首先在 webui 创建 input:

图 11.2

以 rsyslog 为例:

/etc/rsyslog.d/graylog.conf:

*.* @@x.x.x.x:514;RSYSLOG_SyslogProtocol23Format

service rsyslog restart

即可查看该 input 的 message:

图 11.3

GELF (http 为例)

GELF (Graylog Extended Log Format) 可以接收结构化的事件, 支持压缩(GZIP’d or ZLIB’d)和分块。

GELF message:

  • version string
  • host string
  • short_message string
  • full_message string
  • timestamp number
  • level number
  • facility string
  • line number
  • file string
  • _[additional field] string or number, 通过 _ 前缀添加自定义的字段

新建一个 GELF HTTP input:

图 11.6

推送日志:

curl -XPOST http://106.75.62.142:12201/gelf -p0 -d '{"message":"这是一条消息", "host":"172.3.3.3", "facility":"test", "topic": "meme"}'

查看推送的日志:

图 11.7

收集服务日志( nodejs 为例)

log4js, bunyan, winston 等等 nodejs 日志框架都可以, 这里我们以 bunyan 为例, 因为 bunyan 可以将日志以 json 的形式打印。

const express = require('express'); const bodyParser = require('body-parser'); const bunyan = require('bunyan'); const log = bunyan.createLogger({ name: 'server-bunyan', level: 'debug', streams: [{ type: 'rotating-file', path: '/data/logs/server-bunyan.log', period: '1d', count: 3 }] }); const app = express(); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.get('/hello', (req, res) => { log.info({ query: req.query }, 'hello'); res.send('hello world'); }); app.listen(5004, '0.0.0.0', () => { log.info('app listening on 5004'); }); 

rsyslog:

 module(load="imfile" PollingInterval="10") # input input(type="imfile" File="/data/logs/server.log" Tag="server" ruleset="push_remote") input(type="imfile" File="/data/logs/detail.log" Tag="detail" ruleset="push_remote") input(type="imfile" File="/data/logs/server-bunyan.log" Tag="bunyan_server" ruleset="push_remote") # template template(name="mytpl" type="string" string="node1 %programname% %msg%\n" ) # output ruleset(name="push_remote") { action( type="omfwd" protocol="tcp" target="x.x.x.x" port="515" template="mytpl" action.resumeRetryCount="-1" action.resumeInterval="1" queue.filename="push-remote" queue.size="" queue.highwatermark="60000" queue.lowwatermark="2000" queue.maxdiskspace="100g" queue.saveonshutdown="on" queue.type="LinkedList" queue.maxfilesize="128m" ) } 

新建 input, 监听 515 端口,这里我们体验一下 graylog 的 Extractor,给改 input 添加一个 Extractor:

图 11.5

我们加了一个抓取器,来提取 node, topic 两个字段。

在 webui 查看该 input 的 message:

图 11.4

Alerts

Graylog 内置的告警条件:

  • 消息数量
  • 字段值(number)
  • 字段内容

内置告警方式:

  • Email
  • HTTP 回调

体验一下 HTTP 回调。

新建一个 Stream, 进入 manager alerts, 新建一个告警条件:

图 11.8

创建一个 HTTP 回调:

图 11.9

告警以 post 方式请求回调, 请求的 body 内容:

{ "check_result": { "result_description": "Stream had 0 messages in the last 1 minutes with trigger condition less than 10 messages. (Current grace time: 1 minutes)", "triggered_condition": { "id": "6bacc1c1-1eac-49f9-9ac8-998ea851f101", "type": "message_count", "created_at": "2017-01-17T05:25:13.592Z", "creator_user_id": "admin", "title": "日志一分钟内少于10条", "parameters": { "grace": 1, "threshold_type": "less", "threshold": 10, "time": 1, "backlog": 0 } }, "triggered_at": "2017-01-17T05:44:11.921Z", "triggered": true, "matching_messages": [] }, "stream": { "creator_user_id": "admin", "outputs": [], "alert_receivers": { "emails": [ "" ], "users": [ "" ] }, "matching_type": "AND", "description": "alert", "created_at": "2017-01-17T05:21:58.852Z", "disabled": false, "rules": [], "alert_conditions": [ { "creator_user_id": "admin", "created_at": "2017-01-17T05:25:13.592Z", "id": "6bacc1c1-1eac-49f9-9ac8-998ea851f101", "type": "message_count", "title": "日志一分钟内少于10条", "parameters": { "grace": 1, "threshold_type": "less", "threshold": 10, "time": 1, "backlog": 0 } } ], "id": "587da9f62ab79c0001352b7a", "title": "test", "content_pack": null } }

查看告警历史:

图 11.10

更多更好用的功能等待发现…

原文

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220354.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午8:41
下一篇 2026年3月17日 下午8:42


相关推荐

  • idea maven project 包加载出错问题

    idea maven project 包加载出错问题错误要点:maven下载包很慢,配置了setting.xml文件之后还是很慢然后我采取的方案是重新导入项目,下载maven ,还是很慢,而且外网的包无法下载,于是我配置了setting国内的仓库,还是无法下载,而且 mavenproject中包倒入出错解决方案:去 C:\Users\Administrator\.IntelliJIdea14\system 

    2022年7月14日
    32
  • 西安市住房购房意向登记平台网址「建议收藏」

    西安市住房购房意向登记平台网址「建议收藏」西安市住房购房意向登记平台网址:http://124.115.228.93/zfrgdjpt/index.html

    2022年8月3日
    6
  • Windows Server服务器上DNS服务器配置方法[通俗易懂]

    Windows Server服务器上DNS服务器配置方法[通俗易懂]图解WindowsServer服务器上DNS服务器配置 本篇经验将和大家介绍WindowsServer服务器上DNS服务器配置的步骤,希望对大家的工作和学习有所帮助!DNS服务器安装 1  打开“添加角色”,安装DNS服务。点击下一步,安装,开始启动dns服务器进行配置,如下图所示: 2 首先配置dns服务器,如下图所示: 3  进…

    2022年6月4日
    48
  • 一份较心新的端口列表[通俗易懂]

    一份较心新的端口列表[通俗易懂]PORTNUMBERS(lastupdated18November2004)Theportnumbersaredividedintothreeranges:theWellKnownPorts,theRegisteredPorts,andtheDynamicand/orPrivatePorts.TheWellKnown

    2025年12月4日
    6
  • java dom4j 查找_java dom4j根据条件读取查找xml节点的方法

    java dom4j 查找_java dom4j根据条件读取查找xml节点的方法1.假如有下面的books.xml要用javadom4j解析查找。LuceneStudingDom4jTutorialsSpringinActionO’Reilly2.下面我们使用dom4j的xPath来解析:publicvoidparseBooks(){SAXReaderreader=newSAXReader();try{Documentdoc=reader.rea…

    2022年7月26日
    19
  • c语言与java哪个更好_c语言和java哪个好?[通俗易懂]

    c语言与java哪个更好_c语言和java哪个好?[通俗易懂]看到这个问题,一定要参与一下,这两个语言我都太熟悉了,也用了很长时间。关于程序设计语言,有这么两句话:C语言,神一样的语言。java语言是一个神话。所以说这是两个神级语言,到底哪个好?下面咱们逐个分析一下:1。C语言,C语言是计算机程序设计语言史上具有划时代意义的语言,到今天为止也依然是主力语言。最新的2017年语言排行榜以微弱的差距排在第二位,远远高于榜单中其他语言的使用率,而且C语言的一众小弟…

    2022年7月9日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号