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 は次のようになります。

選択 
 テーブルスキーマ、
 テーブル名、
 列名、
 AUTO_INCREMENT、
 POW(2, CASE データ型
   'tinyint' の場合 7
   'smallint' の場合 15
   'mediumint' の場合 23
   'int' の場合 31
   'bigint' の場合 63
   END+(column_type LIKE '% unsigned'))-1 AS max_int 
  information_schema.tables t から
   information_schema.columns c USING (table_schema,table_name) を結合します。
  どこ
   c.extra = 'auto_increment' 
  そして
   t.TABLE_SCHEMA が ('information_schema'、'mysql'、'sys'、'test'、'performance_schema') にありません 
  そして
   t.auto_increment は 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 自動増分主キーの残りの使用可能パーセンテージをカウントする方法についての説明は終わりです。MySQL 自動増分主キーに関するより関連性の高い Prometheus 統計については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Grafana+Prometheus を使用して MySQL サービスのパフォーマンスを監視する
  • PrometheusとGrafanaを使用したMySQLサーバーのパフォーマンス監視の詳細な説明
  • Prometheus モニタリングを使用した SpringBoot サンプル コード
  • Prometheus モニタリングを springboot2.X と統合する例
  • SpringBoot+Prometheus+Grafanaでアプリケーション監視とアラームを実装するための詳細な手順
  • Prometheusの詳細なインストールと設定のチュートリアル
  • Prometheus 入門チュートリアル: SpringBoot によるカスタム メトリック監視の実装
  • Prometheus におけるミドルウェア エクスポーターの開発プロセスの詳細な説明
  • Prometheus を Springboot と統合する方法
  • Prometheus Python ライブラリを使用してカスタム インジケーターを作成する方法 (完全なコード)
  • Prometheus+Grafana を使用した Springboot アプリケーションの監視に関するチュートリアルの詳細な説明
  • PrometheusはGrafanaディスプレイを使用してMySQLを監視します

<<:  JavaScript フレームワーク デザイン パターンの詳細な説明

>>:  Node.js のモジュール性、npm パッケージ マネージャーの説明

推薦する

Vueトップタグ閲覧履歴の実装

目次ナンセンス実装された機能文章要点ナンセンスデモプレビュー実装された機能デフォルトでホームページが...

VMware kali仮想マシン環境の設定方法

1|0 カーネルをコンパイルする(1)uname -rコマンドを実行してカーネルバージョンを表示しま...

Ember.js と Vue.js の詳細な比較

目次概要フレームワークを選択する理由は何ですか? js のエンバーEmber.js と Vue.js...

MySQLのFreeListメカニズムの詳細な説明

1. はじめにMySQL が起動すると、BufferPool が初期化されます。クエリ操作を実行する...

MySQL データベース テーブルとデータベース パーティショニング戦略

まず、テーブルを分割する必要がある理由について説明します。データシートが数百万に達すると、1 回のク...

1 時間で MySQL データベースを学ぶ (Zhang Guo)

目次1. データベースの概要1.1 開発の歴史2. MySQL の紹介2.1. MySQLの概要2....

MySQL UPDATE ステートメントの「典型的な」落とし穴

目次1. 問題のあるSQL文たとえば、次の図のような質問をした人がいました。 問題は次のように要約で...

Linux での screen コマンドの使用方法の詳細な説明

GUNスクリーン:公式サイト: http://www.gnu.org/software/screen...

HTML テーブルタグチュートリアル (12): 境界線スタイル属性 FRAME

FRAME プロパティを使用して、表の境界線のスタイル タイプを制御します。基本的な構文<T...

CSSでスペースを処理する方法

1. 宇宙のルールHTML コード内の空白は通常、ブラウザによって無視されます。 <p>...

Docker の MySQL 時間とシステム時間の不一致の問題を解決する

最近、Docker に MySQL をインストールしたところ、データベースの時刻がシステム時刻と 8...

CSS フレックスベースのテキストオーバーフロー問題の解決方法

重要でないflex-basisテキストオーバーフローに省略記号を追加するという小さな機能に多くの問題...

Dockerイメージをパッケージ化し、リモートサーバーにプッシュしてk8sにデプロイする方法

目次1. Dockerファイル2. pom 構成3. イメージプッシュ4. k8s デプロイメント前...

あなたのウェブサイトはIE8に適していますか?

オリンピック期間中にIE8ベータ2がリリースされ、英語版のリリースに合わせて中国語版も第一波でリリー...