Docker引擎监控指南:使用Prometheus收集容器指标
docs Source repo for Docker's Documentation 项目地址: https://gitcode.com/gh_mirrors/docs3/docs
什么是Prometheus监控
Prometheus是一款开源的系统监控和告警工具包,它采用拉取(pull)模式采集指标数据,特别适合监控动态的云原生环境。在Docker生态中,我们可以将Docker引擎配置为Prometheus的数据源,实时获取容器运行时的各项性能指标。
配置前的注意事项
需要特别注意的是,当前Docker提供的Prometheus指标接口仍处于活跃开发阶段,这意味着:
- 可用指标可能会随版本更新而变化
- 指标名称可能在后续版本中调整
- 目前仅支持监控Docker引擎本身,不支持直接监控容器内应用
详细配置步骤
第一步:配置Docker守护进程
要让Docker暴露Prometheus格式的指标,需要修改daemon.json配置文件:
-
配置文件位置:
- Linux系统:
/etc/docker/daemon.json
- Windows Server:
C:\ProgramData\docker\config\daemon.json
- Docker Desktop:通过Docker Desktop设置界面中的"Docker Engine"选项编辑
- Linux系统:
-
添加监控配置:
{
"metrics-addr": "127.0.0.1:9323"
}
- 安全建议:
- 默认使用127.0.0.1仅允许本地访问
- 如需远程访问可改为0.0.0.0,但需评估安全风险
- 修改后需重启Docker服务生效
第二步:准备Prometheus配置文件
创建prometheus.yml配置文件,重点配置docker job部分:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'docker'
static_configs:
- targets: ['host.docker.internal:9323']
关键参数说明:
- scrape_interval:指标采集间隔,生产环境可适当调大
- targets中的host.docker.internal是Docker的特殊DNS名称,指向宿主机
第三步:启动Prometheus容器
使用以下命令启动Prometheus服务:
docker run --name my-prometheus \
-v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
-p 9090:9090 \
--add-host host.docker.internal=host-gateway \
prom/prometheus
参数说明:
-v
:挂载配置文件--add-host
:确保容器能解析宿主机地址(Docker Desktop可省略)prom/prometheus
:使用官方Prometheus镜像
第四步:验证与使用
-
访问仪表盘:
- 浏览器打开http://localhost:9090
- 在"Targets"页面确认Docker指标端点状态为UP
-
查看指标:
- 常见Docker指标前缀:
engine_daemon_
:Docker引擎相关container_
:容器相关swarm_
:Swarm集群相关
- 示例指标:
engine_daemon_network_actions_seconds_count
:网络操作计数container_memory_usage_bytes
:容器内存使用量
- 常见Docker指标前缀:
-
生成负载测试: 执行容器操作后观察指标变化:
docker run --rm alpine apk add git make musl-dev go
生产环境建议
-
安全加固:
- 考虑在metrics端点启用TLS加密
- 使用网络策略限制访问来源
- 定期更新Prometheus和Docker版本
-
性能优化:
- 根据集群规模调整scrape_interval
- 对重要指标设置告警规则
- 考虑使用Prometheus的远程存储方案
-
高级配置:
- job_name: 'docker-prod' scrape_interval: 30s metrics_path: '/metrics' static_configs: - targets: ['docker-host1:9323', 'docker-host2:9323'] basic_auth: username: 'monitor_user' password: 'secure_password'
常见问题排查
-
指标不可见:
- 检查Docker日志确认metrics端点已启用
- 验证防火墙/安全组规则
- 确认Prometheus配置中的target地址正确
-
连接问题:
- 测试telnet到目标端口
- 检查
host.docker.internal
解析是否正确
-
性能问题:
- 减少不必要指标的采集频率
- 考虑使用Prometheus的过滤功能
通过以上配置,您已经建立了完整的Docker监控体系,可以实时掌握容器环境的运行状态,为性能优化和故障排查提供数据支持。
docs Source repo for Docker's Documentation 项目地址: https://gitcode.com/gh_mirrors/docs3/docs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考