docker-swarm - 在集群环境中访问 cadvisor 的正确方法
问题描述
我有一个有两个节点的 Swarm,我正在将 cadvisor 作为一项全球服务运行。我得到了指标,grafana/Promethues 可以抓取它们。但是我的数字是错误的。当我使用 docker 命令行工具检查容器数量时,我看到第一个节点上运行了 17 个容器,第二个节点上运行了 14 个容器。然而,Prometheus/grafana 会告诉我我有 34 个容器,两个节点上的容器数量都是 17。
我认为我的问题来自将 cadvisor 定义在与 prometheus 和 grafana 容器不同的堆栈中,并尝试通过服务 API 访问 cadvisor。
在堆栈中 AI 有
version: '3.6'
services:
cadvisor:
image: google/cadvisor
deploy:
mode: global
ports:
- "8888:8080"
#privileged: true
#command:
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
然后在 prometheus.yml 配置中,我有以下抓取定义,其中 host1 和 host2 是节点的主机名。
- job_name: 'cadvisor'
scrape_interval: 20s
static_configs:
- targets: ['host1:8888','host2:8888']
是否有人在具有多个节点的集群中使用 cadvisor 的工作示例,或者可以指出如何在 proemtheus 配置中为 cadvisor 定义目标?
解决方案
也许有点晚了,但就是这样。要执行“自动发现”方式,您可以使用类似的东西:
- job_name: 'cadvisor'
dns_sd_configs:
- names: ['tasks.cadvisor']
type: 'A'
port: 8080 # internal
在“tasks.cadvisor”中,点后面的名称必须与您在 docker compose 中或通过 docker service create 命令为服务指定的名称相匹配。
推荐阅读
- python - 如何使用 discord.py 机器人断开人们与语音频道的连接?
- sql - 在 Kylin 中将子查询结果转换为数组
- json - 使用 Optional 管理我的 Hibernate POJO NullPointerException
- java - 我的 Spring MVC 应用程序的较新版本未在 App 引擎上实例化
- html - 如何修复或删除底部多余的黑色空间?iOS
- amazon-web-services - AWS API Gateway 资源 ID 与 Terraform 的映射
- django-models - 编程错误在 /
- python - Pandas Dataframe Groupby 加入字符串,同时保留字符串的顺序
- node.js - Mongoose Populate 不知道如何填充
- javascript - React:将状态传递给兄弟姐妹