CentOS 上常用的 Java 日志监控工具与方案
一 集中式日志平台
- ELK Stack(Elasticsearch + Logstash + Kibana):在 CentOS 上通过 YUM 源安装 Java 8、Elasticsearch、Logstash、Kibana,常用端口为 9200(ES) 与 5601(Kibana);Java 侧使用 Logback/Log4j2 输出到文件,Filebeat 采集后送入 Logstash 解析,再写入 ES,在 Kibana 做可视化与告警面板。适合中大型集群与复杂查询分析场景。
- EFK Stack(Elasticsearch + Fluentd + Kibana):以 Fluentd 替代 Logstash 做采集与过滤,资源占用更轻;既可裸机部署,也常用 Docker Compose 一键拉起 ES/Kibana/Fluentd,适合容器化与轻量化需求。
- Graylog:开源集中式日志平台,集采集、存储、检索、可视化与告警于一体,可横向扩展,适合需要快速落地且希望降低组件维护复杂度的团队。
- Splunk:企业级商业方案,功能强大、生态完善,适合大规模与合规要求高的生产环境。
二 轻量采集与系统自带工具
- Filebeat:轻量级日志采集器,部署在应用节点,Tail 文件并通过 Logstash 或直接写入 Elasticsearch,资源占用小、可靠性高,常与 ELK/EFK 搭配使用。
- journalctl:针对 systemd 管理的 Java 服务(如 systemd unit)查看与检索日志,支持按服务名、时间范围等过滤,便于快速定位服务级问题。
- Logwatch / Auditd:Logwatch 做日志汇总与日报,Auditd 做安全审计与关键文件/命令监控;二者不直接解析业务日志,但可与集中式平台配合增强运维与合规能力。
三 典型架构与适用场景
| 方案 |
组件链路 |
适用场景 |
关键端口/配置 |
| ELK |
Filebeat → Logstash → Elasticsearch → Kibana |
复杂解析、丰富可视化与告警 |
9200/5601;Logstash Grok 解析;Kibana 索引模式 |
| EFK |
Fluentd → Elasticsearch → Kibana |
容器化、轻量采集、易扩展 |
9200/5601;Fluentd tail/forward 输入 |
| Graylog |
Graylog Server/Collector → Elasticsearch/MongoDB → Web |
快速落地集中式平台 |
默认 9000(Web);集群化部署 |
| 轻量直传 |
Filebeat → Elasticsearch |
日志结构简单、追求低开销 |
需模板/ILM;避免频繁 mapping 冲突 |
| Loki 方案 |
Fluentd/Loki/Promtail → Grafana |
成本敏感、云原生生态 |
3100(Loki Push API);Grafana Explore 查询 |
| 上述链路与端口配置在 CentOS 7/8 的 YUM 安装、Docker Compose 部署与防火墙放行实践中均较常见。 |
|
|
|
四 落地配置要点
- Java 日志框架与格式:优先使用 Logback/Log4j2,输出包含 时间戳、线程、级别、类名、消息、异常栈 的结构化日志;便于 Grok/正则 解析与检索。
- 日志轮转与保留:使用 logrotate 管理日志大小与保留周期,避免单文件过大与磁盘占满;与采集器确认 inode/文件句柄 与 pos 文件 策略一致。
- 解析与索引策略:Logstash 用 Grok 匹配多行堆栈;按 应用名/环境/日期 建立索引模板与 ILM 策略,控制分片与生命周期。
- 资源与内核参数:Elasticsearch 单节点开发环境可设 discovery.type=single-node;生产需关注堆大小(如 -Xms/-Xmx)、文件句柄与虚拟内存;常见要求如 vm.max_map_count=262144/655360(视版本与规格调整)。
- 安全与网络:启用 TLS/认证(ES/Kibana/Logstash/Fluentd),在 firewalld 放行 9200/5601/3100 等端口;跨机房/跨域访问使用反向代理或内网专线。