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

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

推薦する

JavaScript オブジェクト指向の実践の詳細説明: カプセル化とオブジェクトのドラッグ

目次概要1. DOM要素をアニメーション化する方法2. 現在のブラウザでサポートされている変換互換の...

JavaプログラミングでJavaScriptの超実用的なテーブルプラグインを書く

目次効果ドキュメント最初のステップステップ2ステップ3ソースコード効果ドキュメント最初のステップta...

Linuxは、単一のIPをバインドするためにデュアルネットワークカードを実装するためにボンドを使用します。サンプルコード

ネットワークの高可用性を実現するには、複数のネットワーク カードを仮想ネットワーク カードにバインド...

ベースタグとは何ですか? また、それは何をするのですか?

<base> タグは、ページ上のすべてのリンクのデフォルトのアドレスまたはデフォルトの...

JavaScript における call、apply、bind の実装原則の詳細な説明

目次序文電話使用法成し遂げるシンプルな実装バージョン:アップグレード版:適用する使用法成し遂げるバイ...

CSS コンテナ背景 10 色グラデーション デモ (linear-gradient())

文法 背景: linear-gradient(direction,color-stop1,color...

VMware Workstation Pro は Win10 ピュア バージョンのオペレーティング システムをインストールします

この記事では、VMware Workstation Pro で Win10 オペレーティング システ...

フロントエンド JavaScript におけるリフレクションとプロキシ

目次1. 反射とは何ですか? 2. JavaScriptで反映する2.1 Reflect.get(タ...

react-beautiful-dnd を使用してリスト間のドラッグ アンド ドロップを実装する

目次react-beautiful-dndを選ぶ理由基本的な使い方基本概念使い方使用中に発生した問題...

ネイティブ JS 音楽プレーヤー

この記事の例では、音楽プレーヤーを実装するためのJSの具体的なコードを参考までに共有しています。具体...

VPS はオフライン ダウンロード サーバーを構築します (ネットワーク ディスクの時代以降)

モチベーション学習の必要性から、海外のサーバーメーカー(どこのメーカーかは言いません)のVPSサービ...

XHTML: フレーム構造タグ

フレーム構造タグ <frameset></frameset>フレームを使用す...

Docker に influxdb をインストールするための詳細なチュートリアル (パフォーマンス テスト)

1. 前提条件1. プロジェクトが展開されました2. Dockerはすでにインストールされている2...

Linux で FastDFS ファイル サーバーを構築するための実装手順

目次1. ソフトウェアパッケージ2. gccをインストールする3. libfastcommonをイン...

Axios を使用して Vue2 がリクエストを開始する詳細なプロセス記録

目次序文Axiosのインストールと設定シンプルなGETリクエストを開始するPOSTリクエストを行うシ...