Prometheus + Grafana + Cadvisor:构建高效企业级服务监控体系

[复制链接]
发表于 2025-7-7 16:54:32 | 显示全部楼层 |阅读模式
在今世软件开辟和运维范畴,容器化技术的应用越来越广泛,此中 Docker 作为最受欢迎的容器化解决方案之一,其容器监控监控管理变得至关紧张。本文将详细先容怎样使用 cadvisor、Prometheus 和 Grafana 来监控监控 Docker 容器的状态。
一、安装镜像

我们须要安装几个关键的镜像,这些镜像将帮助我们收集、存储和可视化容器及主机的相关数据。通常,我们会将 cadvisor 和 node - exporter 安装在被监控监控的主机上,而将 Prometheus 和 Grafana 安装在监控服务器上,不外它们也可以安装在同一台服务器上。
以下是具体的安装下令:
  1. docker pull gcr.io/cadvisor/cadvisor:v0.49.1   # 收集并展示容器的资源使用和性能数据
  2. docker pull prom/prometheus                    # 基于拉取模型收集指标数据,可以设置报警规则
  3. docker pull grafana/grafana                    # 监控数据可视化
  4. docker pull quay.io/prometheus/node-exporter   # 收集主机级别的系统指标
复制代码
二、添加设置文件

在主机的根目录下,我们须要添加一个 prometheus.yml 文件,并举行如下设置:
  1. global:
  2.   scrape_interval: 15s
  3.   evaluation_interval: 15s
  4.   scrape_timeout: 10s
  5. alerting:
  6.   alertmanagers:
  7.     - static_configs:
  8.         - targets: ["alertmanager:9093"]
  9. rule_files:
  10.   - "rules/*.rules"
  11. scrape_configs:
  12.   - job_name: "prometheus"
  13.     static_configs:
  14.       - targets: ["localhost:9090"]
  15.         labels:
  16.           app: "prometheus"
  17.           environment: "production"
  18.   - job_name: "docker"  # 监控的docker容器
  19.     static_configs:
  20.       - targets: ["监控服务器IP地址或域名:8080"]
  21.         labels:
  22.           instance: "docker-host"
  23.           environment: "production"
  24.   - job_name: "linux"   # 监控的服务器主机
  25.     static_configs:
  26.       - targets: ["监控服务器IP地址或域名:9100"]
  27.         labels:
  28.           instance: "server-01"
  29.           environment: "production"
复制代码
这些设置项定义了 Prometheus 的全局设置、报警管理、规则文件以及要监控的目标。
三、Compose.yaml 文件编写

通过 docker-compose 来管理多个容器是一种非常便捷的方式。以下是 compose.yaml 文件的内容:
  1. services:
  2.   prometheus:
  3.     container_name: prometheus
  4.     image: prom/prometheus
  5.     restart: unless-stopped
  6.     networks:
  7.       - 网络名称
  8.     volumes:
  9.       - /etc/prometheus.yml:/etc/prometheus/prometheus.yml
  10.       - prometheus_data:/prometheus
  11.     ports:
  12.       - "9090:9090"
  13.   cadvisor:
  14.     container_name: cadvisor
  15.     image: gcr.io/cadvisor/cadvisor:v0.49.1
  16.     restart: unless-stopped
  17.     privileged: true
  18.     volumes:
  19.       - "/:/rootfs:ro"
  20.       - "/var/run:/var/run:ro"
  21.       - "/sys:/sys:ro"
  22.       - "/var/lib/docker:/var/lib/docker:ro"
  23.       - "/dev/disk:/dev/disk:ro"
  24.     ports:
  25.       - "8080:8080"
  26.   grafana:
  27.     container_name: grafana
  28.     image: grafana/grafana
  29.     restart: unless-stopped
  30.     networks:
  31.       - 网络名称
  32.     volumes:
  33.       - grafana_data:/var/lib/grafana
  34.     ports:
  35.       - "3000:3000"
  36.   node_exporter:
  37.     container_name: node_exporter
  38.     image: quay.io/prometheus/node-exporter:latest
  39.     ports:
  40.       - "9100:9100"
  41.     command:
  42.       - '--path.rootfs=/host'
  43.     network_mode: host
  44.     pid: host
  45.     restart: unless-stopped
  46.     volumes:
  47.       - '/:/host:ro,rslave'
  48. networks:
  49.   网络名称:
  50. volumes:
  51.   prometheus_data:
  52.   grafana_data:
复制代码
这个文件定义了各个服务的容器设置,包罗镜像、重启计谋、挂载卷、端口映射等。
四、Grafana 设置

(1)数据源设置

启动 Grafana 后,我们须要添加 Prometheus 作为数据源。在 Grafana 的界面中,按照提示添加 Prometheus 数据源,这将让 Grafana 能够从 Prometheus 中获取监控数据。

(2)仪表板设置

为了更直观地展示监控数据,我们可以在 Grafana 中导入预设的仪表板。在仪表板导入界面,输入仪表板 ID 193 和 9276。此中,193 是 Docker 容器监控模板,9276 是 Linux 主机监控模板。导入后,我们就可以清晰地看到 Docker 容器和 Linux 主机的各项监控指标。

通过以上步骤,我们就完成了 Docker 容器状态的监控系统搭建。利用 cadvisor 收集容器数据,Prometheus 存储和管理数据,Grafana 举行数据可视化,我们可以实时发现容器运行中的问题,保障系统的稳定运行。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

快速回复 返回顶部 返回列表