Prometheus收集Docker信息并使用Grafana展示

Prometheus 收集 Docker 信息时,通常使用 cAdvisor(Container Advisor)作为收集器。cAdvisor 是一个开源的工具,专门用于收集容器运行时的资源使用情况和性能数据,支持 Docker 容器。它能够监控 CPU、内存、网络、磁盘 I/O 等多种指标,并将这些数据暴露为 Prometheus 可以抓取的指标。

官方地址:
https://github.com/google/cadvisor

在CentOS上运行参考地址:
https://github.com/google/cadvisor/blob/master/docs/running.md

运行 cAdvisor 容器

你可以通过 Docker 启动一个 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=/cgroup:/cgroup:ro \
  --publish=8080:8080 \
  --detach=true \
  --restart unless-stopped \
  --name=cadvisor \
  google/cadvisor:latest

在 Docker 中,--volume(或者简写为 -v)选项用于将宿主机的文件或目录挂载到容器中。这里的命令示例中使用了多个 --volume 选项,每个选项都将宿主机上的目录或文件挂载到容器内的某个位置。以下是这些挂载的含义:

如:--volume=/:/rootfs:ro:

  • 宿主机路径:/ (根目录)
  • 容器内路径:/rootfs
  • 挂载模式:ro (只读)
  • 含义:将宿主机的根文件系统以只读模式挂载到容器的 /rootfs 目录中。这样容器能够访问宿主机的所有文件系统结构,但不能进行任何修改。

其他目录:

  • /var/run: 通常包含一些运行时的进程和服务相关的文件,如 Docker 守护进程的 Unix socket,这样容器可以读取这些文件,但无法修改。
  • /sys: 文件系统是 Linux 中用于存储和访问系统设备的信息和状态的虚拟文件系统,通过只读方式挂载,可以让容器获取系统的状态信息。
  • /var/lib/docker:宿主机的 Docker 数据目录(存放容器、镜像、网络等信息),cAdvisor 通过访问这个目录,可以获取有关 Docker 容器的信息。
  • cgroup 是 Linux 内核提供的一种机制,用于对系统资源(CPU、内存、I/O 等)进行分组管理和限制,通过访问 cgroup 文件系统,cAdvisor 可以获取和监控容器的资源使用情况。

查看指标

启动 cAdvisor 后,它会在 http://<cAdvisor_host>:8080/metrics 路径下暴露所有收集的指标数据。Prometheus 将按照配置的抓取间隔自动抓取这些指标。

如:

66c4bc675d8ac.png

在 Prometheus 中配置抓取

在 Prometheus 的配置文件 prometheus.yml 中,添加一个 scrape job 来抓取 cAdvisor 暴露的指标。比如:

scrape_configs:
  - job_name: 'cadvisor'
    static_configs:
      - targets: ['<cAdvisor_host>:8080']

重启容器:

docker restart prometheus

prometheus 也是docker安装的

查看:


66c7583c44c01.png
66c4bbf738057.png

Grafana可视化配置

要在 Grafana 中展示 cAdvisor 收集的 Docker 容器信息,可以使用以仪表盘模板。这些模板已经预先配置好,可以直接导入并使用,从而快速开始监控 Docker 容器的资源使用情况。

使用模板

在仪表盘中选择新建 -> 导入,填如复制的模板ID,选择数据源,保存

搜索模板:

https://grafana.com/grafana/dashboards/?search=Docker

通过关键词如 "Docker" 或 "cAdvisor" 进行搜索

可用模板如:

  • cAdvisor Dashboard
    • ID: 19792
  • Docker Dashboard for Prometheus 中文版
    • ID:11558
  • Docker overview with Cadvisor + docker state exporter + node exporter
    • ID:21154
  • Docker and system monitoring
    • ID: 893
  • Docker Swarm and Containers
    • ID:609
  • docker container & OS node(node_exporter, cadvisor)
    • ID: 16314
    • 中文 docker 容器 cadvisor 和主机指标面板
    • 主机指标 ( 可绑定到主机,需要 node-exporter 的 instance 标签值与 cadvisor 的 instance 标签值相同 )

将 cadvisor 与 node_exporter 指标关联

有的面板可以同时监控 cadvisor 和 node_exporter 指标,如需将 cadvisor 与 node_exporter 指标关联,需要将 cadvisor 和 node_exporter 的 instance 标签设置为相同的值 ( 例如主机名、ip地址等 )

cAdvisor 和 node_exporter 是常用的两个数据源。cAdvisor 用于监控 Docker 容器的资源使用情况,而 node_exporter 用于监控主机级别的系统资源(如 CPU、内存、磁盘等)。

为了在同一个 Grafana 面板中同时展示这两者的数据,并确保它们的监控数据能够正确关联起来,你需要确保这两个数据源的 instance 标签具有相同的值。通常这个值是主机名或 IP 地址。

如何设置 instance 标签为相同值

你需要在 prometheus.yml 配置文件中使用 relabel_configs 来覆盖 instance 标签的默认值。
找到配置 cAdvisor 和 docker宿主机Node Exporter 的抓取任务的部分,并添加 relabel_configs 来替换 instance 标签的。
如:

   # 监控Docker宿主机主机的 Node Exporter
  - job_name: 'docker_node_exporter' 
    static_configs:
      - targets: ['192.168.31.77:9100']  
    relabel_configs:
      - target_label: instance
        replacement: 'DockerHost'

  # 监控Docker相关信息
  - job_name: 'cadvisor' 
    static_configs:
      - targets: ['192.168.31.77:8080']
    relabel_configs:
      - target_label: instance
        replacement: 'DockerHost'
  • target_label 指定要替换或设置的目标标签。在这个例子中,instance 标签就是我们要替换的目标标签。
  • replacement 定义了 target_label 标签的新值。在这个例子中,我们将 instance 标签的值设置为 'DockerHost'。

重启

docker restart prometheus

在 Prometheus 的 Status -> Targets 中查看


66c7583c44c01.png

这样 cAdvisor 的 instance 标签将与 宿主机的 node_exporter 的 instance 标签一致。

展示效果如:


66c75a3b3b3a4.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容