Zabbixは複数のmysqlプロセスの監視を実装します

Zabbixは複数のmysqlプロセスの監視を実装します

1 つのサーバー上で 3 つの MySQL インスタンス プロセスが開始され、それぞれ異なるポート 3306、3307、3308 を占有します。

原則の説明:

MySQL インスタンスのポートは、自動検出ルールを通じて取得されます。自動検出ルールの {$MYSQLPORT} は、エージェントの自動検出スクリプトに渡されるパラメータです。この値は、ホストによって定義されたマクロ {$MYSQLPORT} から取得されます。自動検出スクリプトは、これを {#MYSQLPORT}: port の形式に解析します。次に、監視項目プロトタイプは、{#MYSQLPORT} の値に基づいて監視項目を生成します。一般的なプロセスは次のとおりです。

ホスト定義マクロ {$MYSQLPORT}->自動検出ルールキー {$MYSQLPORT}->エージェントの自動検出スクリプトを呼び出して、それを {#MYSQLPORT}: ポートに解析します->監視項目プロトタイプ {#MYSQLPORT}->ホスト監視項目の自動生成

1. MySQLマルチインスタンスサーバーでの操作

1. 各インスタンスで必要な MySQL アカウントを監視するために Zabbix を許可します。

ここでのアカウントはzabbixagentで、パスワードはZabbix131です。

'Zabbix131' によって識別される 'zabbixagent'@'localhost' に *.* の使用、プロセス、レプリケーション クライアント、レプリケーション スレーブを許可します。
権限をフラッシュします。

2. zabbix_agentd.conf設定ファイルを変更する

最終順位増加

     安全でないユーザーパラメータ=1
     リモートコマンドを有効にする=1
     インクルード=/etc/zabbix/etc/zabbix_agentd.conf.d/*.conf
[root@mysql zabbix]# vi /etc/zabbix/etc/zabbix_agentd.conf
     安全でないユーザーパラメータ=1
     リモートコマンドを有効にする=1
     インクルード=/etc/zabbix/etc/zabbix_agentd.conf.d/*.conf

3. 設定ファイルを追加する

[root@mysql など]# vim /etc/zabbix/etc/zabbix_agentd.conf.d/check_mysql.conf
     UserParameter=mysql_discovery[*],/etc/zabbix/bin/discovery_mysql.sh $1 ###異なるポートを自動的に検出 UserParameter=mysql.status[*],/etc/zabbix/bin/mysql_status.sh $1 $2 ###パフォーマンス監視情報 UserParameter=mysql.ping[*],/etc/zabbix/bin/mysql_alive.sh $1 ### 動作していますか? UserParameter=mysql.ms.check[*],/etc/zabbix/bin/mysql_slave_status.sh $1 ### スレーブの状態は正常ですか? UserParameter=mysql.ms.time[*],/etc/zabbix/bin/mysql_slave_time.sh $1 ### スレーブに遅延がありますか?

4. 実行スクリプトファイルを追加する

[root@mysql など]# ll /etc/zabbix/bin/
合計 716
     -rwxr-xr-x 1 ルート ルート 441 7月22日 11:36 discovery_mysql.sh
     -rwxr-xr-x 1 ルート ルート 401 7月22日 11:36 mysql_alive.sh
     -rwxr-xr-x 1 ルート ルート 303 7月 22 15:10 mysql_slave_status.sh
     -rwxr-xr-x 1 ルート ルート 286 7月 22 15:10 mysql_slave_time.sh
     -rwxr-xr-x 1 ルート ルート 299 7月 22 11:36 mysql_status.sh
     -rwxr-xr-x 1 ルート ルート 370 7月22日 11:36 mysql_version.sh
[root@mysql etc]# /etc/zabbix/bin/discovery_mysql.sh の詳細
     res=`echo $1| sed "s/_/\n/g"`;
     ポート=($res)
     printf '{\n'
     printf '\t"データ":[\n'
     ${!port[@]}のキー
     する
       [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];の場合
     それから
         printf '\t {\n'
         printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n"
     そうでない場合は [[ "${key}" -eq "((${#port[@]}-1))" ]]
         printf '\t {\n'
         printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n"
     フィ
     終わり
     printf '\t ]\n'
     printf '}\n'
[root@mysql etc]# /etc/zabbix/bin/mysql_status.sh の詳細
     #!/bin/bash
     変数=$1
     mysql = /usr/local/mysql/bin/mysql
     MYSQL_USER = "zabbixagent"
     MYSQL_パスワード=Zabbix131
     MYSQL_SOCK_DIR="/tmp/mysql$2.sock"
     ${mysql} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -S ${MYSQL_SOCK_DIR} -e "show global status;" 2> /dev/null |grep -v Variable_name|grep "\b${var}\b"|awk '{print $2}'
[root@mysql etc]# /etc/zabbix/bin/mysql_alive.sh をさらに追加
     #!/bin/bash
     mysqladmin = /usr/local/mysql/bin/mysqladmin
     MYSQL_USERdd="zabbixagent"
     MYSQL_パスワード=Zabbix131
     MYSQL_SOCK_DIR="/tmp/mysql$1.sock"
     ${mysqladmin} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -S ${MYSQL_SOCK_DIR} ping|grep -c alive
[root@mysql etc]# /etc/zabbix/bin/mysql_slave_status.sh の詳細
     #!/bin/bash
     #変数=$1
     mysql = /usr/local/mysql/bin/mysql
     MYSQL_USERdd="zabbixagent"
     MYSQL_パスワード=Zabbix131
     MYSQL_SOCK_DIR="/tmp/mysql$1.sock"
     ${mysql} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -S ${MYSQL_SOCK_DIR} -e "show slave status\G;" 2> /dev/null|grep -E 'Slave_IO_Running: Yes|Slave_SQL_Running: Yes'|grep -c Yes
[root@mysql etc]# /etc/zabbix/bin/mysql_slave_time.sh をさらに追加
     #!/bin/bash
     #変数=$1
     mysql = /usr/local/mysql/bin/mysql
     MYSQL_USERdd="zabbixagent"
     MYSQL_パスワード=Zabbix131
     MYSQL_SOCK_DIR="/tmp/mysql$1.sock"
     ${mysql} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -S ${MYSQL_SOCK_DIR} -e "show slave status\G;" 2> /dev/null|grep -E 'Seconds_Behind_Master'|awk '{print $2}'

5. zabbix_agentdを再起動する

[root@mysql zabbix_agentd.d]# systemctl restart zabbix-agent

2. Zabbixページでの操作

1. template_multi_MySQL.xml テンプレート情報をインポートします。xml ファイルを参照して手動で追加することもできます。

2. テンプレートに自動検出ルールを作成します。自動検出ルールでは次の 2 つのことを定義する必要があります。
a. キー値は、MySQLインスタンスのポートを自動的に取得するために使用されます。ホストマクロ{$MYSQLPORT}を使用する必要があります。

b. 監視項目プロトタイプは、取得したポートに応じて対応する監視項目を生成するため、自動検出マクロ {#MYSQLPORT} が必要です。

3. 新しく作成したテンプレートを監視対象のホストに追加します。

4. 監視対象のホスト上で、監視対象のポートに対応するマクロ{$MYSQLPORT}を定義します(例:3306_3307_3308)。

3. データ収集が完了するまで待ちます。データがない場合、特定の項目を手動でテストします。

たとえば、zabbixserver で mysql 3306 が稼働しているかどうかをテストするなどの操作を実行する場合、1 は稼働中、0 は停止中を意味します。

最終的な効果は

Zabbix131

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

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

<<:  2 つの Linux サーバー間の自動ファイル同期

>>:  MySQL マスタースレーブレプリケーションの原理からインストールと設定までを包括的に解説します。

推薦する

MySQL フラッシュリストとダーティページフラッシュメカニズム

1. レビューMySQL の起動後にバッファ プールが初期化されます。バッファ プールは N 個の空...

JavaScript のドキュメント オブジェクト モデル (DOM)

目次1. DOMとは何か2. 要素を選択する3. getElementById() 4. クエリセレ...

プロジェクトを素早く構築するためのvite+vue3.0+ts+element-plusの実装

目次バイト機能使用環境プロジェクトを構築する構成vite.config.ts tsconfig.js...

HTMLページ内の検索機能を完了する

最近、たくさんの人に改変してもらったフレームワークに取り組んでいます。毎日コードを見ていると目が回り...

DockerでJavaプログラムを起動する方法

シンプルなSpring Boot Webプロジェクトを作成するアイデア ツールを使用して、Sprin...

Centos 用の rpm パッケージのカスタマイズと yum リポジトリの構築に関するチュートリアル

1 yumでソフトウェアをインストールしたときにダウンロードしたrpmパッケージを保存しますyum ...

JavaScript によるデータ視覚化: ECharts マップの作成

目次概要予防1. 使用方法2. 実装手順予備実装コード効果: Geo共通設定上記の構成を追加した後の...

JavaScriptで配列を作成する方法の詳細な説明

目次JavaScript で配列を作成する配列の使用配列を分割文字列に変換する配列に要素を追加する配...

JS を使用して航空機戦争の小さなゲームを実装する

この記事の例では、参考のために航空機戦争ゲームを実装するためのJSの具体的なコードを共有しています。...

MysqlクエリJSON結果に関連する関数の概要

JSON 形式のフィールドは、MySQL 5.7 で追加された新しい属性ですが、基本的には文字列とし...

Dockerはターミナルで中国語を入力できない問題を解決します

序文:ある日、DockerでMySQLサービスを構築したところ、MySQLのコマンドラインで中国語の...

MySQLでカーソルトリガーを使用する方法

カーソル選択クエリによって返される行のセットは、結果セットと呼ばれます。結果セット内の行は、入力した...

nofollowタグの使用と分析に関する簡単な説明

nofollowをめぐる論争Zac と Guoping の間では、nofollow が PR を無駄...

HTML 文法百科事典_HTML 言語文法百科事典 (必読)

ボリュームラベル、プロパティ名、説明002 <! - - ... - -> コメント00...