各位用户为了找寻关于使用prometheus统计MySQL自增主键的剩余可用百分比的资料费劲了很多周折。这里教程网为您整理了关于使用prometheus统计MySQL自增主键的剩余可用百分比的相关资料,仅供查阅,以下为您介绍关于使用prometheus统计MySQL自增主键的剩余可用百分比的详细内容
最近生产环境一套数据库因为疯狂写日志数据,造成主键值溢出的情况出现,因此有必要将这个指标监控起来。
mysqld_exporter自带的这个功能,下面是我使用的启动参数:
nohup ./mysqld_exporter --config.my-cnf="./my.cnf" --web.listen-address=":9104" --collect.heartbeat --collect.auto_increment.columns --collect.binlog_size --collect.engine_innodb_status --collect.engine_tokudb_status --collect.slave_hosts --collect.slave_status --collect.info_schema.processlist --collect.info_schema.innodb_metrics > /dev/null 2>&1 &
红色高亮的参数,就是用来采集到自增id的使用情况的。
实际上执行的类似这个SQL:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20SELECT
table_schema,
table_name,
column_name,
AUTO_INCREMENT,
POW(2,
CASE
data_type
WHEN
'tinyint'
THEN
7
WHEN
'smallint'
THEN
15
WHEN
'mediumint'
THEN
23
WHEN
'int'
THEN
31
WHEN
'bigint'
THEN
63
END
+(column_type
LIKE
'% unsigned'
))-1
AS
max_int
FROM
information_schema.tables t
JOIN
information_schema.columns c USING (table_schema,table_name)
WHERE
c.extra =
'auto_increment'
AND
t.TABLE_SCHEMA
NOT
IN
(
'information_schema'
,
'mysql'
,
'sys'
,
'test'
,
'performance_schema'
)
AND
t.auto_increment
IS
NOT
NULL
;
在prometheus的web界面,我们可以测试编写如下的promql, 找出剩余自增id可以率少于40%的实例的库+表名
(mysql_info_schema_auto_increment_column_max{schema!~'test|mysql'} - mysql_info_schema_auto_increment_column{schema!~'test|mysql'})/mysql_info_schema_auto_increment_column_max{schema!~'test|mysql'}*100 < 40
取到数据后,我们可以在alertmanager里面配置相关的告警,或者再grafana上面绘制图,如下:
到此这篇关于使用prometheus统计MySQL自增主键的剩余可用百分比的文章就介绍到这了,更多相关prometheus统计MySQL自增主键内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
原文链接:https://blog.51cto.com/lee90/2427912