prom/container-exporterprom/container-exporter
Container Exporter 是一款 Prometheus 指标导出器(Exporter),用于采集容器指标并暴露给 Prometheus。其核心功能是通过与容器管理器(当前支持 Docker)通信获取运行中容器列表,结合 libcontainer 和 DockerClient 工具集收集容器的各类运行指标(如 CPU、内存等),最终以 Prometheus 可识别的格式通过 HTTP 端口提供指标数据。
libcontainer 和 DockerClient 采集容器的关键运行指标(如 CPU 使用率、内存占用、受限周期等)。运行容器需挂载以下宿主机路径:
/sys/fs/cgroup:/cgroup:提供 cgroup 层级文件系统访问,用于采集容器资源使用指标(如 CPU、内存)。/var/run/docker.sock:/var/run/docker.sock:提供 Docker 套接字访问,用于与 Docker 引擎通信获取容器列表及元数据。通过 docker run 命令启动容器,默认暴露 9104 端口:
bashdocker run -p 9104:9104 \ -v /sys/fs/cgroup:/cgroup \ -v /var/run/docker.sock:/var/run/docker.sock \ prom/container-exporter
通过 -labels 参数可指定 Docker 容器标签,使 Prometheus 指标中包含这些标签的键值对,便于按标签维度聚合分析指标。未定义指定标签的容器,其对应标签值将以空字符串("")显示。
--label 参数添加自定义标签(如 LabelA=ValueA)。-labels 参数传入需集成的标签列表(逗号分隔)。步骤 1:创建带标签的容器
bash# 创建 ContainerA,包含 LabelA 和 LabelB 标签 docker run --name ContainerA --label LabelA=ValueA --label LabelB=ValueB [镜像名称] # 创建 ContainerB,包含 LabelB 和 LabelC 标签 docker run --name ContainerB --label LabelB=ValueB --label LabelC=ValueC [镜像名称]
步骤 2:启动 Exporter 并指定标签
bashdocker run -p 9104:9104 \ -v /sys/fs/cgroup:/cgroup \ -v /var/run/docker.sock:/var/run/docker.sock \ prom/container-exporter -labels=LabelA,LabelB,LabelC
步骤 3:查看指标效果
Exporter 暴露的指标将包含指定标签,未定义标签的容器对应值为空字符串:
container_cpu_throttled_periods_total{LabelA="ValueA",LabelB="ValueB",LabelC="",name="ContainerA"... container_cpu_throttled_periods_total{LabelA="",LabelB="ValueB",LabelC="ValueC",name="ContainerB"...
| 参数名 | 格式 | 说明 |
|---|---|---|
-labels | 逗号分隔的标签名称列表 | 指定需集成到 Prometheus 指标中的 Docker 容器标签,如 -labels=LabelA,LabelB |
/sys/fs/cgroup 和 Docker 套接字的权限,建议以 root 用户运行(默认配置通常满足)。-p <主机端口>:9104 调整主机映射端口。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务