1 つのサーバー上で 3 つの MySQL インスタンス プロセスが開始され、それぞれ異なるポート 3306、3307、3308 を占有します。 原則の説明: MySQL インスタンスのポートは、自動検出ルールを通じて取得されます。自動検出ルールの {$MYSQLPORT} は、エージェントの自動検出スクリプトに渡されるパラメータです。この値は、ホストによって定義されたマクロ {$MYSQLPORT} から取得されます。自動検出スクリプトは、これを {#MYSQLPORT}: port の形式に解析します。次に、監視項目プロトタイプは、{#MYSQLPORT} の値に基づいて監視項目を生成します。一般的なプロセスは次のとおりです。 ホスト定義マクロ {$MYSQLPORT}->自動検出ルールキー {$MYSQLPORT}->エージェントの自動検出スクリプトを呼び出して、それを {#MYSQLPORT}: ポートに解析します->監視項目プロトタイプ {#MYSQLPORT}->ホスト監視項目の自動生成 1. MySQLマルチインスタンスサーバーでの操作 1. 各インスタンスで必要な MySQL アカウントを監視するために Zabbix を許可します。 ここでのアカウントはzabbixagentで、パスワードはZabbix131です。
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を再起動する
2. Zabbixページでの操作 1. template_multi_MySQL.xml テンプレート情報をインポートします。xml ファイルを参照して手動で追加することもできます。 2. テンプレートに自動検出ルールを作成します。自動検出ルールでは次の 2 つのことを定義する必要があります。 b. 監視項目プロトタイプは、取得したポートに応じて対応する監視項目を生成するため、自動検出マクロ {#MYSQLPORT} が必要です。 3. 新しく作成したテンプレートを監視対象のホストに追加します。 4. 監視対象のホスト上で、監視対象のポートに対応するマクロ{$MYSQLPORT}を定義します(例:3306_3307_3308)。 3. データ収集が完了するまで待ちます。データがない場合、特定の項目を手動でテストします。 たとえば、zabbixserver で mysql 3306 が稼働しているかどうかをテストするなどの操作を実行する場合、1 は稼働中、0 は停止中を意味します。 最終的な効果は 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: MySQL マスタースレーブレプリケーションの原理からインストールと設定までを包括的に解説します。
Nginx を使用して同じドメイン名で複数のプロジェクトを構成するには、次の 2 つの方法があります...
序文コードを実行してエラーが発生すると、エラーが出力されます。エラーにはスタック情報が含まれており、...
目次序文スタイル機能説明初期化コードイベントリスナーの追加リスナーツールバーモニターテーブル行ツール...
Windows と Linux 間でファイルを転送する場合は、Xftp ツールを使用できます。この...
ファイルの保存とアクセスを容易にするために、FTPサービスが特別に構築されています。 FTP サーバ...
バックエンドは thinkphp3.2.3 フレームワークを使用します。他の言語を使用している場合は...
この場合、transition という単語を間違って書いたため、午後中ずっとそれに取り組みました。本...
Tencent QQのホームページがリニューアルされ、Webフロントエンド開発がますます注目を集めて...
問題 [root@zh ~]# [root@zh ~]# [root@zh ~]# yum -y d...
1. フローティングとは何ですか?フローティングは、その名の通り、浮遊することを意味します。要素がド...
この記事では、参考までにMySQLのインストールと設定のチュートリアルを紹介します。具体的な内容は次...
指定したサイズより大きいファイルを検索するには、find コマンドを使用します。 検索 / -typ...
この記事では、コードレイン特殊効果を実現するためのjQueryプラグインの具体的なコードを参考までに...
XHTML CSS を使って Web ページをデザインし始めた頃は、タグの使用経験も少なく、あまり気...
目次1. ダウンロード2. nginxとnginx-vts-exporterをインストールする3. ...