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 固定タイトル列、タイトル ヘッダー テーブル固有の実装コード

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

推薦する

html+cssレイアウトの3つの方法(ナチュラルレイアウト/フローレイアウト/ポジショニングレイアウト)

1. 自然なレイアウト<br />レイアウトは変更せずに自動的に左揃えになります。 2....

Windows 10 で MySQL の解凍バージョンをインストールする方法の詳細なグラフィック チュートリアル

MySQL のインストールは、インストール バージョンと解凍バージョンに分かれています。インストール...

Docker プライベートリポジトリの管理とローカルリポジトリ内のイメージの削除

1: Dockerプライベートウェアハウスのインストール1. イメージリポジトリからイメージをダウン...

Dockerイメージの作成、保存、読み込み方法

イメージを作成する方法は 3 つあります。既存のイメージに基づいてコンテナを作成する、ローカル テン...

VMwareワークステーションとデバイス/資格情報の非互換性によって発生する起動エラーについて

VMware Workstationsが仮想マシンエラーを起動する エラー レポートのリンク htt...

MySQL ロックブロッキングの詳細な分析

日常のメンテナンスでは、スレッドがブロックされることが多く、データベースの応答が非常に遅くなります。...

VMware で Nginx+KeepAlived クラスタ デュアルアクティブ アーキテクチャを展開する際の問題と解決策

序文負荷分散には nginx を使用します。アーキテクチャのフロントエンドまたは中間層として、トラフ...

ミニプログラムカスタムコンポーネントの非効率的なグローバルスタイルの解決策

目次長すぎて読めないコンポーネントスタイルの分離デモテスト優先度ページの分離構成参考文献ネイティブ ...

MySQL でテーブルデータをクリアする 2 つの方法とその違い

MySQL でデータを削除するには 2 つの方法があります。切り詰めは大まかな伐採の一種である削除は...

JavaScript で最も高速なループはどれですか?

どの for ループまたは反復子がニーズに適しているかを知ることで、アプリケーションのパフォーマンス...

Linuxプロセスネットワークトラフィック統計の実装プロセス

序文Linux には、ネットワーク接続、プロセス、およびその他の情報をリアルタイムで収集するための対...

JavaScript を使用した数独の完全な実装プロセス

目次序文数独の解き方最初のボックスに記入してください2番目のボックスに記入してください3番目のボック...

CentOS 7 に Percona Server+MySQL をインストールする

1. 環境の説明(1) CentOS-7-x86_64、カーネルバージョン uname -r は、 ...

VMwareがLinuxシステムをインストールして起動した後に黒い画面が表示される問題を解決する

1. 設置環境1. HUAWEI mate x CPU i5 82500u、8g メモリ、独立グラフ...

seata docker 高可用性デプロイメントの詳細な紹介

バージョン1.4.2公式ドキュメントドッカーハブ起動する環境変数SEATA_CONFIG_NAMEを...