欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

cadvisor+influxdb+grafana docker监控

程序员文章站 2022-06-07 08:48:43
...

cadvisor+influxdb+grafana进行docker监控,看了一些blog,自己尝试进行了多台服务器的监控

首先有两台服务器A1,A2,A1安装infludb,存放所有的监控数据

docker run -d -p 8083:8083 -p 8086:8086 -v /opt/influxdb:/var/lib/influxdb --hostname=influxdb tutum/influxdb

然后访问A1:8086可看到


cadvisor+influxdb+grafana docker监控

然后选择创建数据库,在这创建A1db 和 A2db两个 (监控几台服务器创建几个数据库)

cadvisor+influxdb+grafana docker监控

创建完成后可选择 show databases 查看

然后在A1,A2上 安装cadvisor,下面是在A1上执行的,A2同理

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 google/cadvisor -storage_driver=influxdb -storage_driver_db=A1db -storage_driver_host=A1:8086

在这需要指定 --name 容器的名字 ,在查询的时候会用到

执行完成后,在A1上安装grafana

docker run -d -p 3000:3000 --hostname grafana --name grafana grafana/grafana:3.1.1

然后打开浏览器 输入 A1:3000 可看到

cadvisor+influxdb+grafana docker监控


登陆成功后 先创建两个数据源

cadvisor+influxdb+grafana docker监控

cadvisor+influxdb+grafana docker监控

添加后

cadvisor+influxdb+grafana docker监控

然后创建监控图表显示

cadvisor+influxdb+grafana docker监控

cadvisor+influxdb+grafana docker监控

cadvisor+influxdb+grafana docker监控

cadvisor+influxdb+grafana docker监控

cadvisor+influxdb+grafana docker监控

剩下的Axes是对x轴和y轴的单位 min max等配置 ,其他的可以自己尝试

其中一个显示结果:

cadvisor+influxdb+grafana docker监控


以下container_name 为 cadvisor创建的时候指定的容器名称

Memory查询:

 SELECT mean("value") FROM "memory_usage" WHERE container_name='cadvisor' AND container_name='cadvisor' AND $timeFilter GROUP BY time($interval), "container_name" fill(previous)

cpu查询:

SELECT derivative(mean("value"), 10s) FROM "cpu_usage_total" WHERE container_name='cadvisor' AND $timeFilter GROUP BY time($interval), container_name fill(previous)

网络io:

tx:

SELECT derivative(mean("value"), 10s)/8 FROM "tx_bytes" WHERE container_name='cadvisor' AND $timeFilter GROUP BY time($interval), container_name fill(previous)


rx:

SELECT derivative(mean("value"), 10s)/8 FROM "rx_bytes" WHERE container_name='cadvisor' AND $timeFilter GROUP BY time($interval), container_name fill(previous)