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

推薦する

Vue での keepAlive の使用例の詳細な説明

開発においては、一覧から詳細ページにジャンプし、また詳細ページに戻る際に一覧ページの状態(スクロール...

シンプルなログインページを実装するための HTML+jQuery

目次導入公開コード(バックエンドインターフェース)例 1: 最もシンプル (純粋な HTML)コード...

Docker で Rancher をデプロイする方法 (落とし穴なし)

操作前に必ずお読みください:注意:管理に rancher を使用する場合は、k8s クラスターが構築...

Linux システムでの CPU 使用率が高い場合のトラブルシューティングのアイデアと解決策

序文Linux 運用保守エンジニアとして、日々の業務の中で Linux サーバーの CPU 負荷が ...

Vue ページ印刷で自動ページングを実装する 2 つの方法

この記事では、ページ印刷の自動ページングを実現するためのVueの具体的なコードを例として紹介します。...

Navicat は CSV データを MySQL にインポートします

この記事では、Navicatを使用してcsvデータをmysqlにインポートする方法を参考までに紹介し...

Xmeter APIインターフェーステストツールの使用状況の分析

XMeter API は、以下のサービスを含む、JMeter に基づくワンストップのオンライン イン...

TypeScriptのインデックスシグネチャの理解に関する簡単な説明

目次1. インデックス署名とは何ですか? 2. インデックス署名構文3. インデックス署名に関する注...

Linux でディスクをマウントし、起動時に自動的にマウントするように設定する方法

皆さんの時間は貴重だと承知しているので、プロセス コマンドを直接書き留めておきます。設定できます。原...

Vueにログイン認証傍受機能を設置するアイデアを詳しく解説

目次1. 解決策2. サーバーから返されたトークンをブラウザに保存する3. リクエストにアクセス権限...

JavaScript 非同期プログラミングにおける Promise の初期の使用法の詳細な説明

1. 概要Promise オブジェクトは、ES6 で提案された非同期プログラミングの仕様です。非同期...

HTML のインラインブロックの空白を素早く削除する 5 つの方法

inline-block プロパティ値は、「インライン」要素のマージンとパディングを制御する必要があ...

Linux で MySQL のルート パスワードを変更する方法

序文このサービスは数か月前からMySQLに導入されています。私の仕事は基本的にターミナルで行われるた...

Dockerfile ビルド中に発生する「/bin/sh: pip: コマンドが見つかりません」という問題の解決方法

記述した Dockerfile の内容は次のとおりです。 Python:3.6.8 から pip i...

Docker 可視化グラフィックツール portainer の詳細な説明

目次1. ポーテナーの紹介2. Portainer アーキテクチャの概要3. Portainerのイ...