Prometheus

55839
下载
Prometheus 是一个开源的监控和告警系统,专注于时间序列数据的采集与存储。由 SoundCloud 开发,配备高级查询语言PromQL,便于数据挖掘与分析,并无缝对接多种可视化平台。

使用 cAdvisor 监控 Docker 容器指标


cAdvisor(简称 container Advisor)计算并暴露运行中容器的资源使用和性能数据。cAdvisor 开箱即支持 Prometheus 指标。本指南将指导你完成以下操作:

  • 创建本地多容器 Docker Compose 部署,包括 Prometheus、cAdvisor 和 Redis 服务器容器。
  • 查看由 Redis 容器生成的容器指标。这些指标由 cAdvisor 收集,并被 Prometheus 抓取。

Prometheus 配置

首先,你需要配置 Prometheus 来抓取 cAdvisor 的指标。你可以创建一个 prometheus.yml 文件,并写入以下配置:

scrape_configs:
- job_name: cadvisor
scrape_interval: 5s
static_configs:
- targets:
- cadvisor:8080

Docker Compose 配置

接下来,我们需要在相同的文件夹中创建一个docker-compose.yml文件,并填充以下 Docker Compose 配置:

version: '3.2'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- 9090:9090
command:
- --config.file=/etc/prometheus/prometheus.yml
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
depends_on:
- cadvisor
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: cadvisor
ports:
- 8080:8080
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
depends_on:
- redis
redis:
image: redis:latest
container_name: redis
ports:
- 6379:6379

此配置指示 Docker Compose 运行三个服务,每个服务对应一个 Docker 容器:

  1. prometheus服务使用本地的prometheus.yml配置文件(通过volumes参数导入到容器内)。
  2. cadvisor服务暴露端口 8080(cAdvisor 默认端口),并依赖一系列本地卷(//var/run等)。
  3. redis服务是一个标准的 Redis 服务器。cAdvisor 将自动从此容器收集容器指标,无需进一步配置。

输入以下命令开始部署:

Terminal window
docker-compose up

如果 Docker Compose 成功启动所有的三个容器,你应该看到类似以下的输出:

prometheus | level=info ts=2018-07-12T22:02:40.5195272Z caller=main.go:500 msg="Server is ready to receive web requests."

你可以使用ps命令验证所有三个容器是否正在运行:

Terminal window
docker-compose ps

你的输出可能会看起来像这样:

Name Command State Ports
----------------------------------------------------------------------------
cadvisor /usr/bin/cadvisor -logtostderr Up 8080/tcp
prometheus /bin/prometheus --config.f ... Up 0.0.0.0:9090->9090/tcp
redis docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp

探索 cAdvisor Web UI

你可以通过http://localhost:8080访问 cAdvisor 的 Web UI。你还可以探索特定 Docker 容器的统计信息和图表,详细链接为http://localhost:8080/docker/<container>。例如,Redis 容器的指标可以通过http://localhost:8080/docker/redis访问,Prometheus 的指标可以通过 http://localhost:8080/docker/prometheus访问。

在表达式浏览器中探索指标

cAdvisor 的 Web UI 是一个探索 cAdvisor 监控内容的十分有用的界面,然而,它本身并不提供探索容器指标的接口。为此,我们需要使用 Prometheus 的表达式浏览器,默认访问路径为http://localhost:9090/graph。你可以在表达式栏中输入 Prometheus 表达式,该栏看起来如下所示:

让我们从探索container_start_time_seconds指标开始,该指标记录了容器的启动时间(以秒为单位)。我们可以通过name="<container_name>"表达式选择特定容器。容器名称对应于 Docker Compose 配置中的container_name参数。例如,[container_start_time_seconds{name="redis"}]表达式显示了redis容器的启动时间。

注意:如果你需要完整的 cAdvisor 收集并暴露给 Prometheus 的容器指标列表,请参阅 cAdvisor 文档

其他表达式

下表列出了其他一些示例表达式:

表达式描述适用于
rate(container_cpu_usage_seconds_total{name="redis"}[1m])过去一分钟内 cgroup 的 CPU 使用情况redis 容器
container_memory_usage_bytes{name="redis"}cgroup 的总内存使用情况(以字节为单位)redis 容器
rate(container_network_transmit_bytes_total[1m])容器每秒发送的网络字节数(过去一分钟内)所有容器
rate(container_network_receive_bytes_total[1m])容器每秒接收的网络字节数(过去一分钟内)所有容器

总结

在这篇指南中,我们使用 Docker Compose 在单个部署中运行了三个独立容器:一个 Prometheus 容器从 cAdvisor 容器抓取指标,后者又通过 Redis 容器生成指标。最后,我们使用 Prometheus 表达式浏览器探索了一些 cAdvisor 容器指标。

该文档基于 Prometheus 官方文档翻译而成。


observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32