prometheus 統計MySQL 自增主鍵的剩餘可用百分比

最近生產環境一套數據庫由於瘋狂寫日誌數據,形成主鍵值溢出的狀況出現,所以有必要將這個指標監控起來。mysql



mysqld_exporter自帶的這個功能,下面是我使用的啓動參數:web

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 & sql

紅色高亮的參數,就是用來採集到自增id的使用狀況的。
數據庫


實際上執行的相似這個SQL:
ide

SELECT 
  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 ;

image.png



在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 < 40spa


image.png



取到數據後,咱們能夠在alertmanager裏面配置相關的告警,或者再grafana上面繪製圖,以下:日誌

image.png

相關文章
相關標籤/搜索