ELK Stack (Elasticsearch + Logstash + Kibana) - Elasticsearch: 分布式搜索和分析引擎 - Logstash: 日志收集、处理和转发管道 - Kibana: 数据可视化平台
替代方案 - Fluentd: 轻量级日志收集器,适合容器环境 - Filebeat: 轻量级日志转发工具,专为ELK设计 - Loki + Grafana: 云原生日志解决方案
系统日志收集
# 配置rsyslog收集特定应用日志
$ cat /etc/rsyslog.d/myapp.conf
local0.* /var/log/myapp.log
容器日志收集
# Docker日志驱动配置
$ docker run --log-driver=json-file --log-opt max-size=10m --log-opt max-file=3 myapp
常用日志分析命令
# 查看最近日志
$ journalctl -u nginx --since "1 hour ago"
# 统计错误日志
$ grep "ERROR" /var/log/myapp.log | wc -l
# 实时监控日志
$ tail -f /var/log/nginx/access.log | grep "500"
Prometheus + Grafana - Prometheus: 开源监控系统,支持多维度数据收集 - Grafana: 数据可视化和仪表板工具
cAdvisor - 容器资源使用和性能监控工具 - 自动收集CPU、内存、网络和磁盘统计信息
Node Exporter - 主机级指标收集器
Docker Compose示例
version: '3'
services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
grafana:
image: grafana/grafana
ports:
- "3000:3000"
cadvisor:
image: google/cadvisor
ports:
- "8080:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
Prometheus配置示例
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
- job_name: 'node'
static_configs:
- targets: ['node-exporter:9100']
关键监控指标 - 容器CPU使用率 - 内存使用量和限制 - 磁盘I/O - 网络流量 - 容器重启次数
Prometheus告警规则示例
groups:
- name: container.rules
rules:
- alert: HighMemoryUsage
expr: (container_memory_usage_bytes{name!=""} / container_spec_memory_limit_bytes{name!=""}) > 0.8
for: 5m
labels:
severity: warning
annotations:
summary: "High memory usage on {{ $labels.name }}"
description: "Container {{ $labels.name }} is using {{ $value }} of its memory limit."
日志收集优化:
监控系统优化:
容器配置优化:
通过以上方法和策略,可以构建一个全面的Linux日志分析和容器监控系统,帮助您更好地理解系统行为、快速发现问题并优化性能。