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

在现代软件开发和运维领域,容器化技术的应用越来越广泛,其中 Docker 作为最受欢迎的容器化解决方案之一,其容器的监控管理变得至关重要。本文将详细介绍如何使用 cadvisor、Prometheus 和 Grafana 来监控 Docker 容器的状态。

一、安装镜像

我们需要安装几个关键的镜像,这些镜像将帮助我们收集、存储和可视化容器及主机的相关数据。通常,我们会将 cadvisor 和 node - exporter 安装在被监控的主机上,而将 Prometheus 和 Grafana 安装在监控服务器上,不过它们也可以安装在同一台服务器上。

以下是具体的安装命令:

复制代码
docker pull gcr.io/cadvisor/cadvisor:v0.49.1   # 收集并展示容器的资源使用和性能数据
docker pull prom/prometheus                    # 基于拉取模型收集指标数据,可以设置报警规则
docker pull grafana/grafana                    # 监控数据可视化
docker pull quay.io/prometheus/node-exporter   # 收集主机级别的系统指标

二、添加配置文件

在主机的根目录下,我们需要添加一个 prometheus.yml 文件,并进行如下配置:

复制代码
global:
  scrape_interval: 15s
  evaluation_interval: 15s
  scrape_timeout: 10s

alerting:
  alertmanagers:
    - static_configs:
        - targets: ["alertmanager:9093"]

rule_files:
  - "rules/*.rules"

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
        labels:
          app: "prometheus"
          environment: "production"

  - job_name: "docker"  # 监控的docker容器
    static_configs:
      - targets: ["监控服务器IP地址或域名:8080"]
        labels:
          instance: "docker-host"
          environment: "production"

  - job_name: "linux"   # 监控的服务器主机
    static_configs:
      - targets: ["监控服务器IP地址或域名:9100"]
        labels:
          instance: "server-01"
          environment: "production"

这些配置项定义了 Prometheus 的全局设置、报警管理、规则文件以及要监控的目标。

三、Compose.yaml 文件编写

通过 docker-compose 来管理多个容器是一种非常便捷的方式。以下是 compose.yaml 文件的内容:

复制代码
services:
  prometheus:
    container_name: prometheus
    image: prom/prometheus
    restart: unless-stopped
    networks:
      - 网络名称
    volumes:
      - /etc/prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    ports:
      - "9090:9090"

  cadvisor:
    container_name: cadvisor
    image: gcr.io/cadvisor/cadvisor:v0.49.1
    restart: unless-stopped
    privileged: true
    volumes:
      - "/:/rootfs:ro"
      - "/var/run:/var/run:ro"
      - "/sys:/sys:ro"
      - "/var/lib/docker:/var/lib/docker:ro"
      - "/dev/disk:/dev/disk:ro"
    ports:
      - "8080:8080"

  grafana:
    container_name: grafana
    image: grafana/grafana
    restart: unless-stopped
    networks:
      - 网络名称
    volumes:
      - grafana_data:/var/lib/grafana
    ports:
      - "3000:3000"

  node_exporter:
    container_name: node_exporter
    image: quay.io/prometheus/node-exporter:latest
    ports:
      - "9100:9100"
    command:
      - '--path.rootfs=/host'
    network_mode: host
    pid: host
    restart: unless-stopped
    volumes:
      - '/:/host:ro,rslave'

networks:
  网络名称:

volumes:
  prometheus_data:
  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 进行数据可视化,我们可以及时发现容器运行中的问题,保障系统的稳定运行。

相关推荐
tianfs3 小时前
docker安装和镜像源替换
ubuntu·docker
专注代码七年3 小时前
如何在腾讯云 OpenCloudOS 上安装 Docker 和 Docker Compose
docker
江湖有缘5 小时前
【Docker管理工具】部署Docker管理面板DweebUI
运维·docker·容器
masx2006 小时前
在 Docker 中部署 etcd 并解决权限问题实战指南,成功解决permission denied问题!
docker·etcd
小钱c78 小时前
MacOS安装Docker Desktop并汉化
macos·docker·容器
笨小蛙9 小时前
服务器Docker容器创建与VScode远程连接SSH使用
服务器·vscode·docker·容器·ssh
蓝色的猴子10 小时前
Linux.docker.k8s基础概念
linux·docker·kubernetes
檀越剑指大厂13 小时前
【Docker系列】Docker 容器内安装`ps`命令
运维·docker·容器
锦瑟居士19 小时前
Docker 笔记 -- 借助AI工具强势辅助
笔记·docker·eureka
LetsonH19 小时前
Ubuntu 22.04 系统下 Docker 安装与配置全指南
linux·ubuntu·docker