Zabbix は MySQL インスタンス メソッドを監視します

Zabbix は MySQL インスタンス メソッドを監視します

1. 監視計画

監視項目を作成する前に、何を監視するのか、どのように監視するのか、監視データをどのように保存するのか、監視データをどのように表示するのか、アラームをどのように処理するのかなどを明確に検討するようにしてください。監視システムを計画するには、Zabbix を十分に理解している必要があります。ここでは監視要件のみを提示します。

要件 1: MySQL の状態を監視し、状態が異常な場合にアラームを発行する。

要件 2: MySQL 操作を監視し、グラフに表示する。

2. カスタムスクリプト監視拡張エージェント

Zabbix サーバーとエージェント間の監視データの収集は、主に Zabbix サーバーがエージェントにキーの値を積極的に要求することによって行われます。エージェントはキーに応じて対応する関数を呼び出して値を取得し、それをサーバーに返します。 Zabbix 2.4.7 エージェントには MySQL 監視機能が組み込まれていません (ただし、サーバーは対応するテンプレート構成を提供します)。そのため、Zabbix のユーザー パラメーター機能を使用して MySQL の監視スクリプトを追加する必要があります。

3. MySQLログインユーザーを承認する(エージェント側)

mysql> '123456' で識別される [email protected] に *.* の使用権限を付与します。

mysql> 権限をフラッシュします。

4. エージェントの設定

生存検出

UserParameter パラメータを使用してエージェント キーをカスタマイズします。
要件 1 については、mysqladmin ツールを使用して実装します。コマンドは次のとおりです。

# mysqladmin -h 127.0.0.1 -u zabbix -p123456 ping 
mysqldは生きている

MySQL のステータスが正常であれば、mysqld が動作中であることが表示され、そうでない場合は接続できないというメッセージが表示されます。サーバー側では、mysqld is alive のような文は理解しにくいです。サーバーが 1 と 0 のみを受信するのが最適です。1 はサービスが利用可能であることを意味し、0 はサービスが利用できないことを意味します。次に、このコマンドを次のように改善します。

# mysqladmin -h 127.0.0.1 -u zabbix -p123456 ping |grep -c alive
1

コマンドにユーザー名とパスワードを入力すると、将来のメンテナンスに悪影響が出るため、次のように、/var/lib/zabbix/ の下に MySQL ユーザー名とパスワードを含む構成ファイル「.my.cnf」を作成します。

ユーザー=zabbix
ホスト=127.0.0.1
パスワード='123456'

このファイルでは、コマンドは次のように変わります。

HOME=/var/lib/zabbix/mysqladmin ping |grep -c alive
1

この手順を完了したら、この監視コマンドを Zabbix エージェントに追加し、キーに対応させるだけで、Zabbox サーバーはこのキーを通じて MySQL のステータスを取得できるようになります。 MySQL ステータスのキーとして mysql.ping を使用します。

まず、/etc/zabbix/zabbix_agentd.confを削除します。

「Include=/etc/zabbix_agentd.d/」の行をコメントアウトします。

次に、/etc/zabbix/zabbix_agentd.d/ ディレクトリに userparameter_mysql.conf ファイルを作成します。ファイルに次のコマンドを追加します。

ユーザーパラメータ=mysql.ping、HOME=/var/lib/zabbix mysqladmin ping | grep -c alive

次のコマンドを使用して、正常に動作するかどうかをテストします。

# /usr/sbin/zabbix_agentd -t mysql.ping
mysql.ping [t|1]

その他のパフォーマンス指標

1. userparameter_mysqlを追加する

vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

####mysql パフォーマンスを監視するためのスクリプト UserParameter=mysql.status[*],/etc/zabbix/zabbix_agentd.d/check_mysql.sh $1

#####mysql バージョン UserParameter=mysql.version,mysql -V

2.check_mysql.sh

#!/bin/bash
# ---------------------------------------------------------------------------------
# ファイル名: check_mysql.sh
# リビジョン: 1.0
# ---------------------------------------------------------------------------------
# 著作権:
# ライセンス: GPL

# ユーザー名 MYSQL_USER = 'zabbix'

# パスワード MYSQL_PWD = 'zabbix@123'

# ホストアドレス/IP
MYSQL_HOST='ip'

# ポート MYSQL_PORT = '3306'

#データ接続 MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}"

# パラメータは正しいですか? if [ $# -ne "1" ]; then
echo "arg error!"
フィ

# データケース$1を取得
稼働時間
結果=`${MYSQL_CONN} ステータス 2>/dev/null |cut -f2 -d":"|cut -f1 -d"T"`
$結果をエコーする
;;
Com_アップデート)
結果=`${MYSQL_CONN} 拡張ステータス 2>/dev/null |grep -w "Com_update"|cut -d"|" -f3`
$resultをエコーする
;;
遅いクエリ
結果=`${MYSQL_CONN} ステータス 2>/dev/null |cut -f5 -d":"|cut -f1 -d"O"`
$resultをエコーする
;;
Com_select)
結果=`${MYSQL_CONN} 拡張ステータス 2>/dev/null |grep -w "Com_select"|cut -d"|" -f3`
$結果をエコーする
;;
Com_ロールバック)
結果=`${MYSQL_CONN} 拡張ステータス 2>/dev/null |grep -w "Com_rollback"|cut -d"|" -f3`
$結果をエコーする
;;
質問
結果=`${MYSQL_CONN} ステータス 2>/dev/null |cut -f4 -d":"|cut -f1 -d"S"`
$resultをエコーする
;;
Com_挿入)
結果=`${MYSQL_CONN} 拡張ステータス 2>/dev/null |grep -w "Com_insert"|cut -d"|" -f3`
$resultをエコーする
;;
Com_削除)
結果=`${MYSQL_CONN} 拡張ステータス 2>/dev/null |grep -w "Com_delete"|cut -d"|" -f3`
$結果をエコーする
;;
コミット
結果=`${MYSQL_CONN} 拡張ステータス 2>/dev/null |grep -w "Com_commit"|cut -d"|" -f3`
$resultをエコーする
;;
送信バイト数
結果=`${MYSQL_CONN} 拡張ステータス 2>/dev/null |grep -w "Bytes_sent" |cut -d"|" -f3`
$resultをエコーする
;;
受信バイト数
結果=`${MYSQL_CONN} 拡張ステータス 2>/dev/null |grep -w "Bytes_received" |cut -d"|" -f3`
$resultをエコーする
;;
Com_begin)
結果=`${MYSQL_CONN} 拡張ステータス 2>/dev/null |grep -w "Com_begin"|cut -d"|" -f3`
$結果をエコーする
;;

*)
echo "使用状況:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)"
;;
エサック

3. 認可:

chmod +x /etc/zabbix/zabbix_agentd.d/check_mysql.sh

zabbix.zabbix を /etc/zabbix/zabbix_agentd.d/check_mysql.sh で更新します。

4. zabbix_agent でテストします。

zabbix_agentd -t mysql.ping

ここに画像の説明を挿入

5. Zabbix_server テスト

zabbix_get -s ip -P ポート -k mysql.ping

ここに画像の説明を挿入

5. Web上で設定する

**ホストの作成**

ここに画像の説明を挿入

ここに画像の説明を挿入

関連テンプレート

ここに画像の説明を挿入

監視項目を作成する

グラフを作成する


監視画像を見る

他の監視項目はこの構成で完了します

6. ZabbixにはMySQL監視項目が付属

version: データベースのバージョン key_buffer_size: MyISAM のインデックス バッファ サイズ sort_buffer_size: セッションのソート スペース (スレッドごとに 1 つ要求されます)
join_buffer_size: これは、接続操作に割り当てられる最小バッファ サイズです。これらの接続では、通常のインデックス スキャン、範囲スキャン、またはインデックスを適用しない接続が使用されます。max_connections: 許可される同時接続の最大数。max_connect_errors: ホストに許可されるエラー接続の最大数。これを超えると、後続の接続は拒否されます (デフォルトは 100)。 flush hostsコマンドを使用すると、open_files_limits(オペレーティングシステムがMySQLに開くことを許可するファイル数)の拒否を解除できます。opened_tablesステータスによって、table_open_cacheを増やす必要があるかどうかを判断できます。opened_tablesが比較的大きく、まだ増加している場合は、table_open_cacheを増やす必要があることを意味します。
max-heap_tables_size: 作成されるメモリ テーブルの最大サイズ (デフォルトは 16M)。このパラメータと tmp_table_size の組み合わせで、内部一時テーブルの最大値が制限されます (2 つのパラメータのうち小さい方の値を採用)。制限を超えると、テーブルは innodb または myisam エンジンに変更されます (5.7.5 より前はデフォルトは myisam で、5.7.6 以降は innodb で、internal_tmp_disk_storage_engine パラメータで調整できます)。
max_allowed_pa​​cket: パケットの最大サイズ###########GET INNODB INFO
#INNODB 変数
innodb_バージョン:
innodb_buffer_pool_instances: Innodb バッファ プールを指定された複数のインスタンスに分割します (デフォルトは 1)
innodb_buffer_pool_size: innodb バッファプールのサイズ、5.7.5 で導入された innodb_buffer_pool_chunk_size、
innodb_doublewrite: 二重書き込みを有効にするかどうか (デフォルトで有効)
innodb_read_io_threads: IO 読み取りスレッドの数 innodb_write_io_threads: IO 書き込みスレッドの数########innodb ステータス
innodb_buffer_pool_pages_total: innodb バッファプールのページ数。サイズは innodb_buffer_pool_size/(16*1024) に等しい。
innodb_buffer_pool_pages_data: innodb バッファプール内のデータを含むページ数########## GET MYSQL HITRATE
1. クエリキャッシュヒット率: Qcache_hits+Com_select<>0 の場合は Qcache_hits/(Qcache_hits+Com_select)、それ以外の場合は 0

2. スレッド キャッシュ ヒット率: Connections<>0 の場合は 1 - Threads_created/Connections、それ以外の場合は 0

3. MyISAM キー キャッシュ ヒット率は、Key_read_requests<>0 の場合は 1-Key_reads/Key_read_requests となり、それ以外の場合は 0 となります。

4. MyISAM キー キャッシュ書き込みヒット率は、Key_write_requests<>0 の場合は 1-Key_writes/Key_write_requests となり、それ以外の場合は 0 となります。

5. キーブロック使用率: Key_blocks_used+Key_blocks_unused<>0 の場合は Key_blocks_used/(Key_blocks_used+Key_blocks_unused)、それ以外の場合は 0

6. ディスク ストレージ一時テーブル比率の作成 Created_tmp_disk_tables+Created_tmp_tables<>0 の場合は Created_tmp_disk_tables/(Created_tmp_disk_tables+Created_tmp_tables)、それ以外の場合は 0

7. 接続使用率: max_connections<>0 の場合は threads_connected/max_connections、それ以外の場合は 0

8. オープンファイル比率: open_files_limit<>0 の場合は open_files/open_files_limit、それ以外の場合は 0

9. テーブルキャッシュの使用法 table_open_cache<>0 の場合は open_tables/table_open_cache、それ以外の場合は 0

Zabbix による MySQL 監視の例の方法についての記事はこれで終わりです。 Zabbix による MySQL 監視に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。 今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Zabbixを使用してMySQLを監視する方法
  • Zabbixは複数のmysqlプロセスの監視を実装します
  • Zabbix を使用して Nginx/Tomcat/MySQL を監視する方法の詳細なチュートリアル
  • Zabbix が MySQL のマスター/スレーブ状態を監視する方法の詳細な説明
  • Zabbix の Percona プラグインを使用して MySQL を監視する方法
  • Zabbix 2.4.5 には MySQL 監視設定チュートリアルが付属しています
  • MySQLを監視するためのZabbixのインストールと設定に関する基本的なチュートリアル

<<:  HTML 固定タイトル列、タイトル ヘッダー テーブル固有の実装コード

>>:  ウェブサイトのテキストはまだデザインする必要がありますか?

推薦する

MySQL トランザクションの概念と使用法の詳細な説明

目次情事の概念取引の状態取引の役割取引の特徴トランザクション構文トランザクション対応ストレージエンジ...

WeChatミニプログラムがシームレスなスクロールを実現

この記事の例では、WeChatアプレットのシームレスなスクロールを実現するための具体的なコードを参考...

nginxカスタム変数と組み込み定義済み変数の使用

概要Nginx では変数を使用して設定を簡素化し、設定の柔軟性を向上させることができます。すべての変...

CSS スタイル分類入門(基礎知識)

CSSスタイルの分類1. 内部スタイル ---- インラインスタイルスタイルタグの使用 <ス...

HTML における src と href の違いについての簡単な説明

簡単に言うと、srcは「このリソースをロードしたい」という意味で、hrefは「このリソースに関連付け...

DockerのIDEA構成プロセス

IDEA は Java で最も一般的に使用されている開発ツールであり、Docker は最も人気のある...

JavaScript でプロパティハイジャックを実装する方法 defineProperty

目次序文記述子getとsetの詳細な説明オブジェクトの属性の乗っ取りオブジェクトのすべてのプロパティ...

Jsモジュールパッケージのエクスポートの使用法と違いにはインポートが必要

目次1. Commonjsのエクスポートとrequireの使用1.1 CommonJS エクスポート...

Tomcat サーバーの設定と Web プロジェクトの公開に関する IDEA グラフィック チュートリアル

1. Webプロジェクトを作成したら、Tomcatを例にサーバーを構成する必要があります。 2. 実...

マウスが画像のハイパーリンク上を通過するときに画像のサイズ(幅、高さ)を変更する CSS

マウスが画像の上を通過したときに画像のハイパーリンクを変更する方法:コードをコピーコードは次のとおり...

CSS を解析して画像のテーマカラー機能を抽出する (ヒント)

背景すべては、WeChat 技術グループのクラスメートが「写真の主な色を取得する方法はあるか」と尋ね...

nginx-ingress-controller ログ永続化ソリューションのソリューション

最近、nginx-ingress-controller のアプリケーションについて説明した公開アカウ...

Node.js でのブレークポイント再開の実装

序文通常のビジネスニーズ: 写真、Excel などをアップロードします。結局のところ、数 MB のサ...

MySQLは1つのテーブルからデータをクエリし、それを別のテーブルに挿入する実装方法

MySQLは1つのテーブルからデータをクエリし、それを別のテーブルに挿入する実装方法ウェブサイト開発...

MySQL で主キーと ROWID を使用する際の落とし穴の概要

序文MySQL の rowid の概念については聞いたことがあるかもしれませんが、テストや実践が難し...