基于devops利用微服务引入三方服务---使用grafana三方模板展示监控数据

1、模板导入

在博文基于devops利用微服务引入三方服务中我们部署了prometheus、cAdvisor以及grafana,本文使用第三方模板Docker and system monitoring来监控swarm集群中主机和容器的各项参数
下载
Docker and system monitoring
导入
08api12

2、模板配置

导入模板往往存在很多我们不需要的数据,需要筛选出业务需要的监控对象,最后将配置好的面板导出 保存,比如下图就是默认的部分图表
08api13

为了方便理解,我们每配置一个图表就给出前后对照
监控nginx容器
对nginx进行性能监控可以根据实际情况确认是否需要扩展
08api14
查询语句

sum(rate(container_cpu_usage_seconds_total{name=~"150_nginx.1.+"}[50s])) by (name) * 100

注意上面的容器名字需要根据实际情况来修改
08api15
查询语句
流入

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应用容器
08api20
查询语句
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值

08api16
查询语句
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

08api17
查询语句
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)

08api18
查询语句
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)

除了配置以上容器相关的图表,还可以监控宿主机的相关参数
监控各个节点
08api21
查询语句
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]) 

08api22
查询语句
node150

node_memory_MemFree_bytes{instance=~"enode150:9100"}

node151

node_memory_MemFree_bytes{instance=~"enode151:9100"}

node152

node_memory_MemFree_bytes{instance=~"enode152:9100"}

08api24
查询语句
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])

08api25
查询语句
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])

08api26
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"}

08api27
node150

node_load5{instance=~"enode150:9100"}

node151

node_load5{instance=~"enode151:9100"}

node152

node_load5{instance=~"enode152:9100"}

监控nacos
08api29
查询语句

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状态
解决方式:
首先备份历史数据
08api31
删除所有文件
重启prometheus
恢复历史数据
重启prometheus