在 CentOS 上采集 Java 应用日志,常见做法有直接采集日志文件、通过日志框架输出到采集端、或使用 APM/日志系统。下面按“实用场景”给你一套清晰方案。
/app/logs/app.log/var/log/tomcat//data/logs/xxx/适合:ELK / Elasticsearch
sudo yum install filebeat -y
/etc/filebeat/filebeat.ymlfilebeat.inputs:
- type: log
enabled: true
paths:
- /app/logs/*.log
output.elasticsearch:
hosts: ["http://elasticsearch:9200"]
或输出到 Logstash:
output.logstash:
hosts: ["logstash:5044"]
systemctl start filebeat
systemctl enable filebeat
logback.xml 示例:
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>localhost</syslogHost>
<facility>LOCAL0</facility>
</appender>
sudo vi /etc/rsyslog.d/java.conf
local0.* /var/log/java/app.log
systemctl restart rsyslog
docker logs -f 容器名
Filebeat 配置:
paths:
- /var/lib/docker/containers/*/*.log
-v /data/logs:/app/logs
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/app/logs/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/app/logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
</appender>
| 场景 | 推荐 |
|---|---|
| 单机 | rsyslog / tail |
| 服务器多 | Filebeat |
| 容器 | stdout + Filebeat |
| 大数据量 | Kafka + Logstash |
如果你能告诉我:
我可以直接给你可复制的完整配置。