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 パラメータを使用してエージェント キーをカスタマイズします。 # 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_packet: パケットの最大サイズ###########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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: HTML 固定タイトル列、タイトル ヘッダー テーブル固有の実装コード
>>: ウェブサイトのテキストはまだデザインする必要がありますか?
目次情事の概念取引の状態取引の役割取引の特徴トランザクション構文トランザクション対応ストレージエンジ...
この記事の例では、WeChatアプレットのシームレスなスクロールを実現するための具体的なコードを参考...
概要Nginx では変数を使用して設定を簡素化し、設定の柔軟性を向上させることができます。すべての変...
CSSスタイルの分類1. 内部スタイル ---- インラインスタイルスタイルタグの使用 <ス...
簡単に言うと、srcは「このリソースをロードしたい」という意味で、hrefは「このリソースに関連付け...
IDEA は Java で最も一般的に使用されている開発ツールであり、Docker は最も人気のある...
目次序文記述子getとsetの詳細な説明オブジェクトの属性の乗っ取りオブジェクトのすべてのプロパティ...
目次1. Commonjsのエクスポートとrequireの使用1.1 CommonJS エクスポート...
1. Webプロジェクトを作成したら、Tomcatを例にサーバーを構成する必要があります。 2. 実...
マウスが画像の上を通過したときに画像のハイパーリンクを変更する方法:コードをコピーコードは次のとおり...
背景すべては、WeChat 技術グループのクラスメートが「写真の主な色を取得する方法はあるか」と尋ね...
最近、nginx-ingress-controller のアプリケーションについて説明した公開アカウ...
序文通常のビジネスニーズ: 写真、Excel などをアップロードします。結局のところ、数 MB のサ...
MySQLは1つのテーブルからデータをクエリし、それを別のテーブルに挿入する実装方法ウェブサイト開発...
序文MySQL の rowid の概念については聞いたことがあるかもしれませんが、テストや実践が難し...