Graylog 日志收集入门
1. 一句话简介
Graylog 是一个开源日志管理平台,负责把分散在各应用、各服务器上的日志集中起来,提供搜索、分析和告警能力。在 Spring Boot 中,应用通过 logback-gelf 将 Logback 日志编码为 GELF(Graylog Extended Log Format)协议,用 UDP 推送到 Graylog 的 12201 端口;Graylog 接收后存入 Elasticsearch,通过 MongoDB 保存配置元数据,用户再通过 9000 端口的 Web 界面检索分析。本 demo 的核心全部在 logback-spring.xml 的一个 GelfUdpAppender 上:为每条日志附加 app_name、os_arch 等静态字段,并同时输出到本地控制台和 Graylog,实现集中日志管理。
2. 什么时候使用
- ✅ 多应用、多实例需要统一查看日志:微服务/集群环境下日志散落在各节点,通过 Graylog 汇集成单一搜索入口,免去逐台登录服务器翻日志。
- ✅ 需要全文检索与结构化过滤:借助底层的 Elasticsearch,可按时间、日志级别(INFO/ERROR)、应用名、线程等字段快速定位问题。
- ✅ 需要低成本快速上手:只要引入一个
logback-gelf依赖并配置一个 Appender 即可完成接入,Docker 一键即可起好 Graylog + MongoDB + Elasticsearch 环境,适合中小团队。 - ✅ 需要在日志中附带上下文:通过
GELF Encoder的includeMdcData把 MDC 链路追踪信息一起发送,便于排查一次请求的完整调用链。 - ❌ 海量日志的大规模集群:Graylog 的存储和告警能力相对有限,PB 级或超高吞吐场景更多会选 ELK Stack 这类更强的组合。
- ❌ 需要复杂的数据管道处理:日志入平台前的清洗、结构化、富化等自定义加工,Graylog 能力弱于 Logstash/Humpback 这类专用管道,需谨慎。
- ❌ 对日志送达可靠性要求极高:demo 中的
GelfUdpAppender走 UDP,性能好但不保证送达,落盘可能丢日志;要求不丢则需改用 TCP GELF 或增加缓冲/重试机制。 - ❌ 不想自建运维日志平台:若团队缺运维人力、无 Docker 环境,或需要原生多租户、细粒度权限的企业级能力,直接选用商业 SaaS 或依赖成套 ELK 更为稳妥。
3. 常见业务场景
集中日志检索:开发运维跨几十个微服务排查线上故障时,无需逐一 ssh 进每台机器翻文件,直接在 Graylog Web 搜索页面按 app_name:graylog、level:ERROR 等条件过滤,一次定位问题日志及其来源节点。
错误告警与异常追踪:将应用 ERROR 级日志实时汇入 Graylog 并配置告警规则,当某服务错误率骤增时及时触发通知;配合 includeRootCauseData 关联异常堆栈,快速定位根因。
链路上下文还原:接入时开启 includeMdcData 把请求 ID、traceId 等写入每一条日志,对一个用户请求、一次业务失败进行全链路日志串联,还原完整调用路径与耗时。
系统与基础设施信息采集:通过 staticField 为每条日志附加 os_name、os_version、os_arch 等服务器元信息,运维可按运行环境维度做日志聚合,分析不同操作系统/机器上的行为差异。
开发调试审计:业务日志以 DEBUG 级上报(本 demo 中 com.xkcoding 包设为 DEBUG),本地控制台与 Graylog 双路输出,既保留开发期详细日志,又可持续沉淀为事后审计与性能分析的素材。
4. 同类技术对比
| 维度 | Graylog | ELK Stack (Elasticsearch+Logstash+Kibana) | 各类日志 SaaS(如阿里云 SLS、Datadog) |
|---|---|---|---|
| 部署复杂度 | 低,Docker 一键起 | 中高,节点多且需调优 | 零部署,开箱即用 |
| 资源占用 | 中 | 高,组件多 | 低(无自建资源) |
| 学习成本 | 低 | 中高,需懂 Logstash 配置、索引管理等 | 低 |
| 分布式/扩展能力 | 中,单机架构为主 | 强,可水平扩展 | 强,厂商管理 |
| 内置告警 | ✅ | 需付费 X-Pack | ✅,能力强 |
| 存储/检索 | Elasticsearch 底层 | Elasticsearch 原生 | 厂商专有存储 |
| 成本 | 开源免费 | 开源免费,但 License 收费项多 | 按量付费 |
| 适用规模 | 中小型项目日志收集 | 大规模日志分析与全文检索 | 缺乏自建运维能力或企业级多租户需求 |
选型建议:中小团队、希望快速搭建且不想折腾组件,选 Graylog——它把 Elasticsearch 和 MongoDB 封装在内,一个镜像即可跑通,配合 logback-gelf 接入最简单。数据量大、需要强横向扩展和复杂管道加工、且有人力长期运维,选 ELK Stack。缺乏自建运维能力、需要企业级权限/多租户/高 SLA,直接上 日志 SaaS,虽按量付费但省去全部运维成本。选择时先估量日均日志规模、有无专职运维、是否需要复杂数据处理,这三点决定最终归属。