Ubuntu Java日志如何与监控系统集成
导读:Ubuntu Java日志与监控系统集成实战 一 架构总览与选型 日志采集与存储:在 Ubuntu 上常用 Filebeat → Logstash → Elasticsearch → Kibana 的链路,Filebeat 负责轻量采集与...
Ubuntu Java日志与监控系统集成实战
一 架构总览与选型
- 日志采集与存储:在 Ubuntu 上常用 Filebeat → Logstash → Elasticsearch → Kibana 的链路,Filebeat 负责轻量采集与可靠传输,Logstash 做解析与丰富,Elasticsearch 存储与检索,Kibana 负责可视化与告警面板。
- 指标与可视化:Java 侧通过 Micrometer → Prometheus → Grafana 暴露 JVM/业务指标,Grafana 做仪表盘与阈值告警。
- 错误与告警:将异常日志或告警事件推送到 Sentry 做错误聚合、去重与通知。
- 传统监控:使用 Zabbix 采集系统与应用指标,并通过解析 GC 日志监控 JVM 健康度。
二 日志链路 Filebeat Logstash Elasticsearch Kibana
- 安装组件(Ubuntu 示例)
- Elasticsearch、Logstash、Kibana 可通过 APT 安装;生产环境建议按版本系列统一(如 7.x 或 8.x),并配置系统服务自启。
- Filebeat 采集配置
- 编辑 /etc/filebeat/filebeat.yml,采集应用日志并输出到 Logstash:
- filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/myapp/*.log
- type: log
enabled: true
paths:
- output.logstash:
- hosts: [“localhost:5044”]
- filebeat.inputs:
- 编辑 /etc/filebeat/filebeat.yml,采集应用日志并输出到 Logstash:
- Logstash 解析与输出
- 新建 /etc/logstash/conf.d/java-logs.conf:
- input { beats { port => 5044 } }
- filter { grok { match => { “message” => “%{ COMBINEDAPACHELOG} ” } } date { match => [ “timestamp”, “dd/MMM/yyyy:HH:mm:ss Z” ] } }
- output { elasticsearch { hosts => [“http://localhost:9200”] index => “java-logs-%{ +YYYY.MM.dd} ” } stdout { codec => rubydebug } }
- 新建 /etc/logstash/conf.d/java-logs.conf:
- Elasticsearch 与 Kibana
- Elasticsearch 配置网络与发现(如 network.host: 0.0.0.0 等),Kibana 设置 elasticsearch.hosts: [“http://localhost:9200”],启动后在 Kibana 的 Discover 中查看索引 java-logs-* 的数据。
- 验证
- 在 Kibana 执行查询:GET /filebeat-*/_search 或在 Discover 中检索日志,确认日志已入库并可解析。
三 指标链路 Micrometer Prometheus Grafana
- Java 依赖(Maven)
- 添加 micrometer-registry-prometheus:1.10.5(或更高兼容版本)。
- Spring Boot 配置
- 开启 Actuator 暴露 /actuator/prometheus 端点,并添加应用标签:
- management:
- endpoints.web.exposure.include: prometheus
- metrics.tags.application: ${ spring.application.name}
- management:
- 开启 Actuator 暴露 /actuator/prometheus 端点,并添加应用标签:
- Prometheus 与 Grafana
- Ubuntu 安装 Prometheus 与 Grafana,Prometheus 抓取 /actuator/prometheus,Grafana 导入 JVM/Micrometer 仪表盘并配置阈值告警。
四 错误与告警集成 Sentry
- 自托管 Sentry
- 使用 getsentry/self-hosted 部署,执行安装脚本后通过 docker-compose up -d 启动;按需配置 SMTP 邮件以接收告警。
- 应用接入
- 在 Java 应用中引入 Sentry SDK(如 sentry-logback 或 sentry-log4j2),设置 DSN 与环境标签,异常日志将自动上报到 Sentry 做聚合、去重与通知。
五 传统监控 Zabbix 与 GC 日志
- Zabbix 基础
- 在 Ubuntu 安装 Zabbix Server/Agent,配置 Server 与 Hostname,重启 Zabbix Agent。
- 启用 GC 日志
- 启动 Java 时添加 JVM 参数以输出 GC 详情与日志文件:
- -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/to/gc.log
- 启动 Java 时添加 JVM 参数以输出 GC 详情与日志文件:
- Zabbix 监控 GC
- 在 Zabbix Web 为主机创建监控项,例如每分钟检索包含 “GC” 的日志行;配置触发器与图形以可视化 GC 频率与异常,并在“最新数据”中验证。
六 日志框架选型与最佳实践
- 统一门面与实现:优先采用 SLF4J + Logback/Log4j2,通过桥接器将 JUL、JCL、Log4j1.x 等历史日志统一到 SLF4J,避免“jar 地狱”与重复日志。
- 性能与可靠性:高并发场景优先 Log4j2(AsyncAppender + Disruptor);普通业务 Logback 足够;合理配置异步队列与滚动策略,防止 Full GC 与数据丢失。
- 格式标准化:为便于 Grok/Elasticsearch 解析,统一日志格式(如 JSON 或带命名捕获的 Pattern),并在 Logstash 中维护可复用的 grok 模式。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Java日志如何与监控系统集成
本文地址: https://pptw.com/jishu/752071.html
