1、模板导入
在博文基于devops利用微服务引入三方服务中我们部署了prometheus、cAdvisor以及grafana,本文使用第三方模板Docker and system monitoring来监控swarm集群中主机和容器的各项参数
下载
Docker and system monitoring
导入
2、模板配置
导入模板往往存在很多我们不需要的数据,需要筛选出业务需要的监控对象,最后将配置好的面板导出 保存,比如下图就是默认的部分图表
为了方便理解,我们每配置一个图表就给出前后对照
监控nginx容器
对nginx进行性能监控可以根据实际情况确认是否需要扩展
查询语句
sum(rate(container_cpu_usage_seconds_total{name=~"150_nginx.1.+"}[50s])) by (name) * 100
注意上面的容器名字需要根据实际情况来修改
查询语句
流入
sum(rate(container_network_receive_bytes_total{name=~"150_nginx.1.05076y2q2797gr04ufoem4jk4"}[$interval])) by (name)
流出
sum(rate(container_network_transmit_bytes_total{name=~"150_nginx.1.05076y2q2797gr04ufoem4jk4"}[$interval])) by (name)
监控wrapper-hello应用容器
查询语句
wrapper-hello.1
sum(container_memory_rss{name=~"wrapper_hello.1.+"}) by (name)
wrapper-hello.2
sum(container_memory_rss{name=~"wrapper_hello.2.+"}) by (name)
wrapper-hello.3
sum(container_memory_rss{name=~"wrapper_hello.3.+"}) by (name)
注意上图中使用的内存值由不同颜色的区域表示,比如wrapper-hello.3的内存使用值等于最上面的y值减去最下面的y值
查询语句
wrapper-hello.1
sum(rate(container_cpu_usage_seconds_total{name=~"wrapper_hello.1.+"}[50s])) by (name) * 100
wrapper-hello.2
sum(rate(container_cpu_usage_seconds_total{name=~"wrapper_hello.2.+"}[50s])) by (name) * 100
wrapper-hello.3
sum(rate(container_cpu_usage_seconds_total{name=~"wrapper_hello.2.+"}[50s])) by (name) * 100
查询语句
wrapper-hello.1
sum(rate(container_network_transmit_bytes_total{name=~"wrapper_hello.1.+"}[$interval])) by (name)
wrapper-hello.2
sum(rate(container_network_transmit_bytes_total{name=~"wrapper_hello.2.+"}[$interval])) by (name)
wrapper-hello.3
sum(rate(container_network_transmit_bytes_total{name=~"wrapper_hello.3.+"}[$interval])) by (name)
查询语句
wrapper-hello.1
sum(rate(container_network_receive_bytes_total{name=~"wrapper_hello.1.+"}[$interval])) by (name)
wrapper-hello.2
sum(rate(container_network_receive_bytes_total{name=~"wrapper_hello.2.+"}[$interval])) by (name)
wrapper-hello.3
sum(rate(container_network_receive_bytes_total{name=~"wrapper_hello.3.+"}[$interval])) by (name)
除了配置以上容器相关的图表,还可以监控宿主机的相关参数
监控各个节点
查询语句
node150
rate(node_disk_io_time_seconds_total{device=~"sda",instance=~"enode150:9100"}[5m])
node151
rate(node_disk_io_time_seconds_total{device=~"sda",instance=~"enode151:9100"}[5m])
node152
rate(node_disk_io_time_seconds_total{device=~"sda",instance=~"enode152:9100"}[5m])
查询语句
node150
node_memory_MemFree_bytes{instance=~"enode150:9100"}
node151
node_memory_MemFree_bytes{instance=~"enode151:9100"}
node152
node_memory_MemFree_bytes{instance=~"enode152:9100"}
查询语句
node150
rate(node_cpu_seconds_total{cpu=~"0",instance="enode150:9100",mode="iowait"}[5m])
node151
rate(node_cpu_seconds_total{cpu=~"0",instance="enode151:9100",mode="iowait"}[5m])
node152
rate(node_cpu_seconds_total{cpu=~"0",instance="enode152:9100",mode="iowait"}[5m])
查询语句
node150
rate(node_cpu_seconds_total{cpu=~"0",instance="enode150:9100",mode="idle"}[5m])
node151
rate(node_cpu_seconds_total{cpu=~"0",instance="enode151:9100",mode="idle"}[5m])
node152
rate(node_cpu_seconds_total{cpu=~"0",instance="enode152:9100",mode="idle"}[5m])
node150
node_filesystem_free_bytes{instance="enode150:9100",mountpoint="/",device="/dev/mapper/centos-root"}
node151
node_filesystem_free_bytes{instance="enode151:9100",mountpoint="/",device="/dev/mapper/centos-root"}
node152
node_filesystem_free_bytes{instance="enode152:9100",mountpoint="/",device="/dev/mapper/centos-root"}
node150
node_load5{instance=~"enode150:9100"}
node151
node_load5{instance=~"enode151:9100"}
node152
node_load5{instance=~"enode152:9100"}
监控nacos
查询语句
rate(http_server_requests_seconds_sum{uri="/actuator/prometheus"}[5m]) / rate(http_server_requests_seconds_count{uri="/actuator/prometheus"}[5m]) > 0
3.问题
有时候停掉了prometheus,过了一段时间(比如一天)重新启动prometheus发现grafana无法展示实时数据,但可展示过去一天前的历史数据,同时经检查所有相关服务均已同步时间,promethesu所有监控目标均处于up状态
解决方式:
首先备份历史数据
删除所有文件
重启prometheus
恢复历史数据
重启prometheus