温馨提示×

centos系统中java日志如何监控

小樊
41
2025-12-01 20:49:36
栏目: 编程语言

CentOS 下 Java 日志监控实践

一 快速定位与命令行监控

  • 确认进程与日志路径:使用命令查看 Java 进程与日志位置,例如:
    • 查看进程:ps -ef | grep java
    • 常见日志:application.logcatalina.out(Tomcat)等;Spring Boot 可在 application.properties 中设置 logging.file.name=logs/application.log
  • 实时查看与过滤:
    • 实时跟踪:tail -f /path/to/your.log
    • 关键字过滤:grep “ERROR” /path/to/your.log
  • 系统服务日志:
    • 查看服务日志:journalctl -u 服务名
    • 时间范围:journalctl --since “1 hour ago”

二 日志轮转与保留策略

  • 使用 logrotate 管理日志轮转,避免单文件过大,配置文件通常位于 /etc/logrotate.d/
  • 示例配置(/etc/logrotate.d/java-app):
    /var/log/java-app.log {
        daily
        rotate 7
        maxsize 10M
        missingok
        notifempty
        compress
        create 0644 root root
    }
    
    上述策略表示:按天轮转、保留 7 份、单文件超过 10MB 触发轮转、压缩归档、自动创建新文件并设置权限。

三 集中化监控与告警方案

  • 开源方案:
    • ELK Stack(Elasticsearch + Logstash + Kibana):收集、检索、可视化与告警
    • Graylog:集中聚合、搜索、可视化与告警
  • 第三方与错误追踪:
    • Splunk:企业级日志分析平台
    • Sentry:实时错误聚合与通知(邮件/钉钉/企业微信等)
  • 审计与报告:
    • Logwatch:日志分析与日报
    • Auditd:系统审计与关键事件记录
  • 典型架构:Filebeat/Logstash → Elasticsearch → Kibana(告警规则、可视化仪表盘、阈值与频率设置)。

四 Java 应用日志配置要点

  • 合理设置日志级别:在 Log4j/Logback 中控制输出级别(如 INFO/WARN/ERROR),避免产生过多日志影响性能与成本。
  • 结构化与滚动策略:使用 RollingFileAppender 按时间与大小滚动,便于检索与归档。
  • 示例(Logback 片段):
    <configuration>
      <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
          <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
      </appender>
      <appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
          <fileNamePattern>logs/app-%d{yyyy-MM-dd}.log.gz</fileNamePattern>
          <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder>
          <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
      </appender>
      <root level="info">
        <appender-ref ref="Console"/>
        <appender-ref ref="RollingFile"/>
      </root>
    </configuration>
    
    要点:输出时间、线程、级别、类名等关键信息;按天滚动并保留 10 天历史。

五 快速上手方案

  • 单机快速定位:
    • 实时查看:tail -f /var/log/java-app.log
    • 错误告警:使用 grep/awk 过滤 ERROR 并接入 cronsystemd 定时任务发送通知(邮件/企业微信/钉钉 Webhook)
  • 轻量集中化:
    • 安装 Filebeat 采集日志 → Logstash(简单过滤)→ ElasticsearchKibana 建立索引模式、可视化与阈值告警
  • 关键指标与告警建议:
    • 高频 ERROR/Exception、GC 长时间停顿、线程池满、HTTP 5xx 突增、磁盘空间不足、日志写入延迟等

0