1.问题描述
1)问题现象
通过prometheus监控mysql实例和服务器,使用grafana做可视化展示,grafana 中添加 7362 号dashboard 作为mysql看板,添加 11074 号dashboard 作为主机看板。但是添加后查看 MySQL Overview 看板发现 Buffer Pool Size of Total RAM 这个panel 显示 No data,截图如下:
2) prometheus 中关于mysql实例和主机监控配置方式如下:
prometheus 配置文件中指定了mysql监控任务及mysql服务器监控任务
下面我们来看一下具体的mysql实例及对应的mysql服务器监控怎么配置的
先看服务器监控配置文件
vi prd_host.yml
- targets: ['172.25.xx.xxx:9100']
labels:
instance: '172.25.xx.xxx:9100'
env: 'xxx mysql 服务器'
group: 'xxx'
再看mysql实例监控配置文件
vi prd_mysql.json
[{
"targets": [ "172.25.xx.xxx:9104" ],
"labels": {
"instance": "172.25.xx.xxx:9104",
"env": "xxx mysql",
"job": "mysqld"
}
}
]
像上面这样一通配置下来,最终导致MySQL Overview 看板的 Buffer Pool Size of Total RAM 这个panel 显示 No data。
2.问题分析
我们先看一下Buffer Pool Size of Total RAM 这个panel的计算公式:
(label_replace(mysql_global_variables_innodb_buffer_pool_size{instance="$host"}, "nodename", "$1", "instance", "(.*):.*") * 100) / on(nodename) (label_replace(node_memory_MemTotal_bytes, "nodename", "$1", "instance", "(.*):.*"))
#这个公式中用到了 mysql_global_variables_innodb_buffer_pool_size 和 node_memory_MemTotal_bytes 两个收集值
分别获取mysql监控和node监控所有的收集值
curl http://127.0.0.1:9104/metrics >mysql_metrics.txt
curl 127.0.0.1:9100/metrics >node_metrics.txt
检查发现mysql_global_variables_innodb_buffer_pool_size 这个值是mysql监控收集的,但是node_memory_MemTotal_bytes 这个值是node监控收集的