您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何实现基于Prometheus监控Docker主机
## 前言
在云原生和微服务架构盛行的今天,容器化技术已成为基础设施的重要组成部分。Docker作为最流行的容器运行时,其运行状态监控直接影响业务稳定性。本文将详细介绍如何利用Prometheus构建完整的Docker主机监控体系。
## 一、监控架构概述
### 1.1 核心组件关系
[ Docker Host ] → [ cAdvisor ] → [ Prometheus Server ] → [ Grafana ]
### 1.2 组件功能说明
- **cAdvisor**:Google开源的容器监控工具,自动收集容器资源使用数据
- **Node Exporter**:采集主机级指标(非容器专用)
- **Prometheus**:时序数据库和告警中心
- **Grafana**:数据可视化平台
## 二、环境准备
### 2.1 软件版本要求
| 组件 | 推荐版本 |
|--------------|-----------|
| Docker | 20.10+ |
| Prometheus | 2.30+ |
| cAdvisor | latest |
| Node Exporter| 1.3+ |
### 2.2 网络配置建议
确保监控组件间网络可达:
```bash
# 创建监控专用网络
docker network create monitor-net
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 \
--network=monitor-net \
gcr.io/cadvisor/cadvisor:latest
docker run -d \
--name=node-exporter \
--net=monitor-net \
--pid="host" \
--volume="/:/host:ro,rslave" \
quay.io/prometheus/node-exporter:latest \
--path.rootfs=/host
创建prometheus.yml
配置文件:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
启动Prometheus服务:
docker run -d \
-p 9090:9090 \
-v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \
--name prometheus \
--network=monitor-net \
prom/prometheus
指标名称 | 说明 |
---|---|
container_cpu_usage_seconds_total | 容器CPU累计使用时间(秒) |
container_memory_usage_bytes | 容器内存使用量(字节) |
container_network_receive_bytes | 网络接收流量 |
# 计算CPU使用率
100 - (avg by(instance)(irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)
docker run -d \
-p 3000:3000 \
--name=grafana \
--network=monitor-net \
grafana/grafana-enterprise
groups:
- name: docker-alerts
rules:
- alert: HighContainerCPU
expr: sum(rate(container_cpu_usage_seconds_total[1m])) by (name) > 0.8
for: 5m
labels:
severity: warning
annotations:
summary: "High CPU usage on {{ $labels.name }}"
docker run -d \
--name alertmanager \
--network=monitor-net \
-p 9093:9093 \
prom/alertmanager
修改Prometheus配置:
- job_name: 'docker-hosts'
file_sd_configs:
- files:
- /etc/prometheus/docker-hosts.yml
# 为Prometheus添加数据卷
-v prometheus_data:/prometheus
# 检查cAdvisor指标
curl http://localhost:8080/metrics | grep container_cpu
通过本文介绍的方案,您已经可以构建完整的Docker主机监控体系。实际生产中建议结合业务特点调整监控指标,并建立完善的告警升级机制。Prometheus强大的查询能力配合Grafana的可视化,能够为容器化环境提供深度的可观测性支持。
注:本文所有配置已在Docker 20.10.12和Prometheus 2.34.0环境下验证通过 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。