如何实现基于prometheus监控docker主机

发布时间:2021-11-18 15:45:52 作者:小新
来源:亿速云 阅读:258
# 如何实现基于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

三、部署监控组件

3.1 部署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 \
  --network=monitor-net \
  gcr.io/cadvisor/cadvisor:latest

3.2 部署Node Exporter

docker run -d \
  --name=node-exporter \
  --net=monitor-net \
  --pid="host" \
  --volume="/:/host:ro,rslave" \
  quay.io/prometheus/node-exporter:latest \
  --path.rootfs=/host

3.3 配置Prometheus

创建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

四、关键指标解析

4.1 容器核心指标

指标名称 说明
container_cpu_usage_seconds_total 容器CPU累计使用时间(秒)
container_memory_usage_bytes 容器内存使用量(字节)
container_network_receive_bytes 网络接收流量

4.2 主机级指标

# 计算CPU使用率
100 - (avg by(instance)(irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)

五、Grafana可视化配置

5.1 部署Grafana

docker run -d \
  -p 3000:3000 \
  --name=grafana \
  --network=monitor-net \
  grafana/grafana-enterprise

5.2 导入Dashboard模板

  1. 登录Grafana(默认admin/admin)
  2. 导入官方模板:
    • Docker监控:193(官方模板ID)
    • 主机监控:1860

六、告警规则配置

6.1 示例告警规则

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 }}"

6.2 Alertmanager集成

docker run -d \
  --name alertmanager \
  --network=monitor-net \
  -p 9093:9093 \
  prom/alertmanager

七、高级配置技巧

7.1 多主机监控

修改Prometheus配置:

- job_name: 'docker-hosts'
  file_sd_configs:
  - files:
    - /etc/prometheus/docker-hosts.yml

7.2 数据持久化

# 为Prometheus添加数据卷
-v prometheus_data:/prometheus

八、常见问题排查

8.1 指标缺失检查

# 检查cAdvisor指标
curl http://localhost:8080/metrics | grep container_cpu

8.2 性能优化建议

结语

通过本文介绍的方案,您已经可以构建完整的Docker主机监控体系。实际生产中建议结合业务特点调整监控指标,并建立完善的告警升级机制。Prometheus强大的查询能力配合Grafana的可视化,能够为容器化环境提供深度的可观测性支持。

注:本文所有配置已在Docker 20.10.12和Prometheus 2.34.0环境下验证通过 “`

推荐阅读:
  1. prometheus 监控liunx主机
  2. Prometheus监控docker服务实现方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

prometheus docker

上一篇:mysql autocommit=0引起的业务hang住问题分析

下一篇:优化 | 重要的MySQL开发规范都在这了

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》