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添加单个目标,而不是使用任何类型的服务发现。