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 パッケージ マネージャーの説明

推薦する

MySQLはJSON内部フィールドを抽出し、数値としてダンプします

目次背景問題分析1. 属性値はJson形式であり、Json操作関数を使用して処理する必要があります。...

Docker クロスホストネットワークの実装 (手動)

1. Macvlan の紹介Macvlan が登場する前は、イーサネット カードに複数の IP ア...

JavaScript 関数構文の説明

目次1. 通常の機能2. 矢印関数3. データパケットJSON 4. オブジェクト5. 約束6. 非...

仮想マシンを作成し、VMware に Redhat Linux オペレーティング システムをインストールする (グラフィック チュートリアル)

VMware で仮想マシンを作成し、Redhat Linux オペレーティング システムをインスト...

CSSプリコンパイル言語とその違いの詳細な説明

1. 何ですか マークアップ言語として、CSSは比較的シンプルな構文とユーザーに対する要件が低いが、...

Gogs+Jenkins+Docker による .NetCore ステップの自動デプロイ

目次環境説明DockerのインストールゴグのインストールDocker で .NetCore サービス...

Vue3 でタイマーコンポーネントをカプセル化する方法

背景一部のショッピング モールの Web ページで商品の詳細を開くと、購入数量を選択するためのカウン...

HTML ハイパーリンクの詳細な説明

ハイパーリンクハイパーリンクは、Web サイト上のすべてのページがハイパーリンクで接続され、ページ間...

Web デザインのヒント: ページ レイアウトの簡単なルール

繰り返し: サイト全体で特定のページ デザイン スタイルを繰り返します。繰り返し要素としては、特定の...

正の整数かどうかを判断するMYSQLカスタム関数の例コード

関数を記述できます。主に正規表現を使用して判断を行います。入力文字が空の場合は、「-」を使用して置き...

Dockerボリュームコンテナ間のデータ共有の実装

ボリュームとは何ですか?ボリュームは英語で容量を意味し、Docker ではデータ ボリューム、つまり...

MySQL 8.0.12 のインストールと設定方法のグラフィックチュートリアル (Windows 版)

1. はじめにプロジェクトではMySQLを使用しています。インターネット上の例を参考にインストール...

Javascript DOM、ノード、要素取得の紹介

目次DOMノード要素ノード:テキストノード:プロパティ ノード:要素を取得getElementByI...

64 ビット CentOs7 ソース コードのインストール mysql-5.6.35 プロセス共有

インストールプロセス中に問題が発生しないように、まず依存パッケージをインストールします。 [root...

小さなアイコンのフロントエンド処理ソリューションのグラフィカルな説明

序文この記事を始める前に、複数選択の質問をしてみましょう。フロントエンド開発でビルド ツールを使用す...