在Linux上配置容器监控通常涉及多个组件,涵盖指标收集、可视化、告警等功能。以下是分步指南和常见方案:
安装组件
# 安装Prometheus
docker run -d --name=prometheus -p 9090:9090 \
-v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
# 安装cAdvisor(容器监控)
docker run -d --name=cadvisor -p 8080:8080 \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
google/cadvisor
# 安装Node Exporter(主机监控)
docker run -d --name=node_exporter -p 9100:9100 \
-v "/proc:/host/proc" \
-v "/sys:/host/sys" \
-v "/:/rootfs" \
prom/node-exporter
# 安装Grafana
docker run -d --name=grafana -p 3000:3000 grafana/grafana
配置Prometheus(prometheus.yml
)
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['node_exporter:9100']
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
Grafana配置
http://<IP>:3000
,默认账号 admin/admin
。http://prometheus:9090
)。8919
用于Node Exporter,193
用于Docker)。bash
docker stats [容器名]
/containers/<id>/stats
获取JSON格式数据。bash
docker run -d --name=datadog \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /proc/:/host/proc/:ro \
-v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
-e DD_API_KEY=<YOUR_KEY> \
datadog/agent
bash
docker run -d --name=metricbeat \
--user=root \
--volume="/var/run/docker.sock:/var/run/docker.sock:ro" \
--volume="/sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro" \
docker.elastic.co/beats/metricbeat:8.12.0
类别 | 指标示例 |
---|---|
资源 | CPU、内存、磁盘I/O、网络带宽 |
容器 | 运行状态、重启次数、OOM事件 |
应用 | 服务响应时间、HTTP错误率 |
Prometheus Alertmanager:配置规则文件触发邮件/Slack告警。
# alert.rules
groups:
- name: container-alerts
rules:
- alert: HighCPUUsage
expr: sum(rate(container_cpu_usage_seconds_total[1m])) by (container_name) > 0.8
for: 5m
labels:
severity: warning
Grafana Alerting:直接在仪表盘中设置阈值告警。
bash
docker run -d --name=loki -p 3100:3100 grafana/loki
docker run -d --name=promtail \
-v /var/log:/var/log \
-v /path/to/promtail.yml:/etc/promtail/config.yml \
grafana/promtail
label
方便过滤(如environment=prod
)。docker run --memory=1g
)。根据需求选择方案: - 快速入门:Prometheus + Grafana + cAdvisor。 - 企业级:Datadog/Elastic Stack。 - 轻量级:Docker Stats + 自定义脚本。