# 查看容器实时资源使用情况
docker stats [容器名/ID]
# 查看所有容器统计信息
docker stats --all
# 监听Docker事件
docker events --filter 'type=container' --filter 'event=die'
安装步骤:
# 配置Docker daemon以暴露metrics
# 在/etc/docker/daemon.json中添加:
{
"metrics-addr": "0.0.0.0:9323",
"experimental": true
}
# 重启Docker服务
sudo systemctl restart docker
# 使用docker-compose部署Prometheus和Grafana
version: '3'
services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
grafana:
image: grafana/grafana
ports:
- "3000:3000"
prometheus.yml配置示例:
scrape_configs:
- job_name: 'docker'
static_configs:
- targets: ['host.docker.internal:9323']
# 运行cAdvisor容器
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
# 使用docker-compose部署ELK
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
environment:
- discovery.type=single-node
ports:
- "9200:9200"
logstash:
image: docker.elastic.co/logstash/logstash:7.9.2
volumes:
- ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
depends_on:
- elasticsearch
kibana:
image: docker.elastic.co/kibana/kibana:7.9.2
ports:
- "5601:5601"
depends_on:
- elasticsearch
Prometheus Alertmanager:
# alertmanager.yml配置示例
route:
group_by: ['alertname']
receiver: 'email-notifications'
receivers:
- name: 'email-notifications'
email_configs:
- to: 'admin@example.com'
from: 'alertmanager@example.com'
smarthost: 'smtp.example.com:587'
auth_username: 'alertmanager'
auth_password: 'password'
Grafana告警配置: 1. 在Grafana面板中创建告警规则 2. 配置通知渠道(Email, Slack, Webhook等) 3. 设置阈值和告警条件
监控关键指标:
告警策略:
日志收集:
安全考虑:
通过以上方法和工具的组合使用,您可以构建一个完整的Docker容器监控和告警系统,确保容器化应用的稳定运行。