Prometheus监控docker

来自Linux78|wiki

监控Docker容器Prometheus提供了几种方法来监控Docker,包括一些自定义exporter。

然而,这些exporter一般都不会用到,推荐的方法是使用Google的cAdvisor工具。在Docker守护进程上,cAdvisor作为Docker容器运行,单个cAdvisor容器返回针对Docker守护进程和所有正在运行的容器的指标。Prometheus支持通过它导出指标,并将数据传输到其他各种存储系统,如InfluxDB、Elasticsearch和Kafka。

运行cAdvisor

由于cAdvisor只是Docker主机上的另一个容器,因此我们可以使用docker run命令启动它。让我们在Docker1主机上运行一个cAdvisor容器。

docker run                                    \
--volume=/:/rootfs:ro                         \
--volume=/var/run:/var/run:rw                 \
--volume=/sys:/sys:ro                         \
--volume=/var/lib/docker/:/var/lib/docker:ro  \
--publish=8080:8080                           \
--detach=true                                 \
--name=cadvisor                               \
google/cadvisor:latest

在容器内挂载了几个目录。目录分为两种类型,第一种是只读的,cAdvisor将从中收集数据,例如/sys目录:提示 ro表示只读。

第二种类型是可读写的,是Docker套接字的挂载,通常位于/var/run目录中。我们还将容器内部的8080端口映射到主机上的8080端口,你可以用任何适合的端口来覆盖它。我们使用参数--detach以守护进程方式运行容器,并将容器命名为cadvisor。最后,使用带有latest标签的google/cadvisor图像。

cAdvisor会立刻开始监控。可以浏览主机上的8080端口以查看cAdvisor的Web界面并确认

抓取cAdvisor

需要告诉Prometheus cAdvisor是在Docker守护进程上运行的。为此,我们将在配置中添加第三个作业。让在Prometheus服务器上编辑prometheus.yml。将再次使用static_configs添加单个目标,而不是使用任何类型的服务发现。