InnoDB 缓冲池大小占总 RAM 的百分比 - (总 RAM 的缓冲池大小)返回无数据
Posted
技术标签:
【中文标题】InnoDB 缓冲池大小占总 RAM 的百分比 - (总 RAM 的缓冲池大小)返回无数据【英文标题】:InnoDB Buffer Pool Size % of Total RAM - (Buffer Pool Size of Total RAM) returning No Data 【发布时间】:2021-07-17 12:44:32 【问题描述】:我已经安装了 prometheus node_exporter 运行在端口 9100
和 mysqld_exporterrunning 在端口 9104
并配置 grafana 使用 prometheus 作为默认源。
在 grafana 浏览器中,我可以使用以下方式查询 node_memory_MemTotal_bytes
:
node_memory_MemTotal_bytesinstance="10.0.0.4:9100"
注意端口 9100 (node_exporter)
我还可以使用以下方法查询innodb_buffer_pool_size
:
mysql_global_variables_innodb_buffer_pool_sizeinstance="10.0.0.4:9104"
注意端口 9104 (mysqld_exporter)
我想计算Buffer pool size of total RAM
使用:
(mysql_global_variables_innodb_buffer_pool_sizeinstance=~"$host" * 100) / on (instance) node_memory_MemTotal_bytesinstance=~"$host"
我遇到的问题是$host
是IP 和端口:10.0.0.4:9104
,并且只能从mysqld_exporter
获得mysql_global_variables_innodb_buffer_pool_size
而不是node_memory_MemTotal_bytes
,因为它在端口9100
中,因为这是我得到No Data
关于如何混合来自node_exporter
和mysqld_exporter
的指标的数据有什么想法吗?
这是prometheus的配置:
- job_name: test_mysql
scheme: http
static_configs:
- targets:
- 10.0.0.4:9104
- job_name: test_node
scheme: http
static_configs:
- targets:
- 10.0.0.4:9100
【问题讨论】:
【参考方案1】:按照步骤更新缓冲池大小-
-
编辑 innodb_buffer_pool_size
MySQL 概述/编辑面板,替换 Metrics
(mysql_global_variables_innodb_buffer_pool_sizeinstance="$host" * 100) / on (instance) node_memory_MemTotal_bytesinstance="$host"
进入avg by (node_name) ((mysql_global_variables_innodb_buffer_pool_sizeservice_name=~"" * 100)) /on (node_name) (avg by (node_name) (node_memory_MemTotal_bytesnode_name=~""))
替换旧指标,如下所示 -
-
保存设置
【讨论】:
评论图片 嗨@shelwinsu,您能否详细说明这是如何工作的node_name=~""
自动获取$host:port
?【参考方案2】:
我花了一个下午的时间来解决它,所以我想我会分享它以防万一这可以帮助其他人。
我终于能够使用label_replace
函数使其工作。
我用以下查询替换了原始查询:
(label_replace(mysql_global_variables_innodb_buffer_pool_sizeinstance="$host", "nodename", "$1", "instance", "(.*):.*") * 100) / on(nodename) (label_replace(node_memory_MemTotal_bytes, "nodename", "$1", "instance", "(.*):.*"))
label_replace 允许(除其他外)添加新标签,该标签可以基于现有标签的值。在这种情况下,我们使用它来添加一个新的 nodename 标签,该标签获取实例标签 (hostname:port
) 的值,我们从中删除了 :port
部分。
因此,这允许来自不同导出器实例的指标共享具有相同值的标签,从而在需要时一起使用它们(这里,我们想使用来自mysqld_exporter
的mysql_global_variables_innodb_buffer_pool_size
指标和来自node_memory_MemTotal_bytes
的指标node_exporter
在同一查询中,对于给定的主机)。
HTH。
巴蒂斯特
【讨论】:
以上是关于InnoDB 缓冲池大小占总 RAM 的百分比 - (总 RAM 的缓冲池大小)返回无数据的主要内容,如果未能解决你的问题,请参考以下文章