Zabbixを使用してMySQLを監視する方法

Zabbixを使用してMySQLを監視する方法

Zabbix 導入ドキュメント

zabbix導入後

zabbixエージェントの操作

1. MySQLを監視するには、まずMySQLをインストールする必要があります

[root@localhost ~]# yum -y mariadb mariadb-serverをインストールします

2. MySQL監視項目のスクリプトを書く

まずzabbix-agentでユーザーを認証してください。そうしないと、テスト中に権限が与えられなくなります。

[root@localhost ~]# mysql
MariaDB モニターへようこそ。コマンドは ; または \g で終わります。
MariaDB接続IDは33です
サーバーバージョン: 5.5.65-MariaDB MariaDB サーバー

Copyright (c) 2000、2018、Oracle、MariaDB Corporation Ab およびその他。

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。

MariaDB [(なし)]> '123' で識別される 'check'@'localhost' に *.* 上のすべての権限を許可します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

MySQLモニタリングの主な内容は

  • マスターとスレーブのステータス(最初に以下のマスターとスレーブを設定する必要があります)
  • トラフィックの検出と送信、追加、削除、変更、チェックなどの通常の操作の受け入れ
  • データベースまたはテーブルのサイズ
  • tps (1 秒あたりに処理されるクエリ数) qps (1 秒あたりに処理されるリクエスト数)
[root@localhost ~]# mkdir /etc/zabbix/scipts
[root@localhost ~]# cd /etc/zabbix/scipts/
[root@localhost スクリプト]# vim mysql.sh 
#!/bin/bash
mysql="mysql -ucheck -p123"
ケース$1 
 #mysql マスタースレーブステータス (slave_status)
  $mysql -e "スレーブステータスを表示\G" |grep "はい" |wc -l
 ;; 
 # mysql トラフィックは Bytes_received を受け入れます)
  mysqladmin 拡張ステータス |grep "Bytes_received" |awk '{print $4}'
 ;;
 # mysql トラフィック (送信バイト数)
  mysqladmin 拡張ステータス |grep "Bytes_sent" |awk '{print $4}'
 ;;
 #MySQL の通常操作に Com_insert が追加されました)
  mysqladmin 拡張ステータス |grep -w "Com_insert" |awk '{print $4}'
 ;;
 #Com_delete (mysql ルーチン操作の削除)
  mysqladmin 拡張ステータス |grep -w "Com_delete" |awk '{print $4}'
 ;;
 # mysql ルーチン操作を Com_update に変更します)
  mysqladmin 拡張ステータス |grep -w "Com_update" |awk '{print $4}'
		;;
 # mysql ルーチン操作チェック Com_select)
  mysqladmin 拡張ステータス |grep -w "Com_select" |awk '{print $4}'
 ;;
 #mysql tps
 tps)
  mysqladmin ステータス |awk '{print $6/$2}'
 ;;
 #mysql qps=(ロールバック+コミット)/アップタイム
 qps)
  ロールバック=$(mysqladmin 拡張ステータス |grep -w "Com_rollback" |awk '{print $4}')
  コミット=$(mysqladmin 拡張ステータス |grep -w "Com_commit" |awk '{print $4}')
  稼働時間=$(mysqladmin ステータス |awk '{print $2}')
  カウント=$[$ロールバック+$コミット]
  echo "$count $uptime" > /tmp/a.txt
  cat /tmp/a.txt |awk '{print $1/$2}'
 ;;
 # データベースのサイズ MySQL データベースを例にとります (db)
  $mysql -e "table_schema='mysql' の information_schema.tables から sum(data_length) を選択" |sed -n '2p'
 ;;
 # テーブルサイズ MySQL のユーザーテーブルを例に挙げます (tb)
  $mysql -e "table_schema='mysql' かつ table_name='user' である information_schema.tables から sum(data_length) を選択" |sed -n '2p'
 ;;
エサック

3. キー値をカスタマイズし、zabbix-agentを再起動する

[root@localhost スクリプト]# cd /etc/zabbix/zabbix_agentd.d/
[root@localhost zabbix_agentd.d]# vim mysql.conf
ユーザーパラメータ=mysql[*],/etc/zabbix/scipts/mysql.sh $1
[root@localhost zabbix_agentd.d]# systemctl zabbix-agentを再起動します

4. まずzabbix-serverテストにzabbix-getをインストールします

[root@localhost ~]# yum -y zabbix-getをインストールします

[root@localhost ~]# zabbix_get -s 192.168.27.137 -k mysql[slave_status]
2
[root@localhost ~]# zabbix_get -s 192.168.27.137 -k mysql[受信バイト数]
850970
[root@localhost ~]# zabbix_get -s 192.168.27.137 -k mysql[送信バイト数]
224906
[root@localhost ~]# zabbix_get -s 192.168.27.137 -k mysql[Com_insert]
3001
[root@localhost ~]# zabbix_get -s 192.168.27.137 -k mysql[Com_delete]
135
[root@localhost ~]# zabbix_get -s 192.168.27.137 -k mysql[Com_update]
128
[root@localhost ~]# zabbix_get -s 192.168.27.137 -k mysql[Com_select]
19
[root@localhost ~]# zabbix_get -s 192.168.27.137 -k mysql[qps]
0.864842
[root@localhost ~]# zabbix_get -s 192.168.27.137 -k mysql[tps]
1.92936
[root@localhost ~]# zabbix_get -s 192.168.27.137 -k mysql[db]
555118
[root@localhost ~]# zabbix_get -s 192.168.27.137 -k mysql[tb]
420

エラー処理

[root@localhost ~]# zabbix_get -s 192.168.27.137 -k mysql[slave_status]
sh: /etc/zabbix/scipts/mysql.sh: 権限が不十分です。スクリプト実行権限が不十分です。zabbix-agent に移動して権限を追加してください [root@localhost zabbix_agentd.d]# chmod +x /etc/zabbix/scipts/mysql.sh 

[root@localhost ~]# zabbix_get -s 192.168.27.137 -k mysql[slave_status]
1 行目のエラー 1227 (42000): アクセスが拒否されました。この操作には、SUPER、REPLICATION CLIENT 権限 (少なくとも 1 つ) が必要です。

ユーザーにzabbix-agentを表示する権限がないため、スクリプトに[root@localhost ~]# mysqlを追加する権限をユーザーに付与します。
MariaDB モニターへようこそ。コマンドは ; または \g で終わります。
MariaDB接続IDは33です
サーバーバージョン: 5.5.65-MariaDB MariaDB サーバー

Copyright (c) 2000、2018、Oracle、MariaDB Corporation Ab およびその他。

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。

MariaDB [(なし)]> '123' で識別される 'check'@'localhost' に *.* 上のすべての権限を許可します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

[root@localhost スクリプト]# vim mysql.sh 
#!/bin/bash
mysql="mysql -ucheck -p123"
ケース$1 
 #mysql マスタースレーブステータス (slave_status)
  $mysql -e "スレーブステータスを表示\G" |grep "はい" |wc -l
 ;;

Zabbixページに監視項目とグラフを追加する

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

MySQLトラフィックデータを表示する

ここに画像の説明を挿入
ここに画像の説明を挿入

MySQL QPS TPS を表示

ここに画像の説明を挿入

MySQL マスタースレーブステータスの表示

ここに画像の説明を挿入

MySQLの一般的な操作を表示

ここに画像の説明を挿入

MySQLデータベーステーブルのサイズを表示する

ここに画像の説明を挿入

mysql マスタースレーブ構成

1. Zabbix サーバー

[root@localhost ~]# vim /etc/my.cnf 

ここに画像の説明を挿入

[root@localhost ~]# systemctl mariadbを再起動します
[root@localhost ~]# mysql
MariaDB モニターへようこそ。コマンドは ; または \g で終わります。
MariaDB接続IDは7です
サーバーバージョン: 5.5.65-MariaDB MariaDB サーバー

Copyright (c) 2000、2018、Oracle、MariaDB Corporation Ab およびその他。

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。

MariaDB [(なし)]> マスターステータスを表示します。
+------------------+----------+--------------+------------------+
| ファイル | 位置 | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 175170 | | |
+------------------+----------+--------------+------------------+
セット内の 1 行 (0.00 秒)
MariaDB [(なし)]> '123' で識別される 'tom'@'%' に *.* のすべての権限を許可します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

MariaDB [(なし)]> 権限をフラッシュします。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

2. Zabbixエージェント

[root@localhost ~]# vim /etc/my.cnf 

ここに画像の説明を挿入

[root@localhost ~]# systemctl mariadbを再起動します
[root@localhost ~]# mysql
MariaDB モニターへようこそ。コマンドは ; または \g で終わります。
MariaDB接続IDは2です
サーバーバージョン: 5.5.65-MariaDB MariaDB サーバー

Copyright (c) 2000、2018、Oracle、MariaDB Corporation Ab およびその他。

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。

MariaDB [(なし)]> マスターを
 -> マスターホスト='192.168.27.136',
 -> マスターユーザー='tom'、
 -> マスターパスワード='123',
 -> マスターログファイル='mysql-bin.000001',
 -> マスターログ位置 = 175170;
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

MariaDB [(なし)]> スレーブを起動します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

MariaDB [(なし)]> スレーブステータスを表示します \G;
************************** 1. 行 ****************************
  Slave_IO_State: マスターがイベントを送信するのを待機中
   マスターホスト: 192.168.27.136
   マスターユーザー: tom
   マスターポート: 3306
  接続再試行: 60
  マスターログファイル:mysql-bin.000001
  読み取りマスターログ位置: 175170
  リレーログファイル:mysql-relay.000004
  リレーログ位置: 529
 リレーマスターログファイル: mysql-bin.000001
  スレーブIO実行中: はい
  スレーブSQL実行中: いいえ
  レプリケート_Do_DB: 
  レプリケート_無視_DB: 
  テーブルの複製: 
 無視テーブルを複製: 
 Replicate_Wild_Do_Table: 
 Replicate_Wild_Ignore_Table: 
   最終エラー番号: 1146
   Last_Error: クエリでエラー「テーブル 'zabbix.history_uint' が存在しません」が発生しました。デフォルト データベース: 'zabbix'。クエリ: 'insert into history_uint (itemid,clock,ns,value) values ​​(23287,1602301747,810415730,1)'
   スキップカウンタ: 0
  実行マスターログ位置: 173424
  リレーログスペース: 2565
  Until_Condition: なし
  ログファイルまで: 
  ログ位置まで: 0
  マスターSSL許可: いいえ
  マスターSSLCAファイル: 
  マスターSSLCAパス: 
  マスターSSL証明書: 
  マスターSSL暗号: 
  マスターSSLキー: 
 マスターより遅れている秒数: NULL
Master_SSL_Verify_Server_Cert: いいえ
  最終IOエラー番号: 0
  最後のIOエラー: 
  最終SQLエラー番号: 1146
  Last_SQL_Error: クエリでエラー「テーブル 'zabbix.history_uint' が存在しません」が発生しました。デフォルト データベース: 'zabbix'。クエリ: 'insert into history_uint (itemid,clock,ns,value) values ​​(23287,1602301747,810415730,1)'
 Replicate_Ignore_Server_Ids: 
  マスターサーバーID: 1
セット内の 1 行 (0.00 秒)

エラー: クエリが指定されていません

エラー処理

[root@localhost ~]# vim /etc/my.cnf 

ここに画像の説明を挿入

[root@localhost ~]# systemctl mariadbを再起動します
[root@localhost ~]# mysql
MariaDB モニターへようこそ。コマンドは ; または \g で終わります。
MariaDB接続IDは4です
サーバーバージョン: 5.5.65-MariaDB MariaDB サーバー

Copyright (c) 2000、2018、Oracle、MariaDB Corporation Ab およびその他。

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。

MariaDB [(なし)]> スレーブステータスを表示します \G;
************************** 1. 行 ****************************
  Slave_IO_State: マスターがイベントを送信するのを待機中
   マスターホスト: 192.168.27.136
   マスターユーザー: tom
   マスターポート: 3306
  接続再試行: 60
  マスターログファイル:mysql-bin.000001
  読み取りマスターログ位置: 199126
  リレーログファイル:mysql-relay.000006
  リレーログ位置: 3950
 リレーマスターログファイル: mysql-bin.000001
  スレーブIO実行中: はい
  スレーブSQL実行中: はい
  レプリケート_Do_DB: 
  レプリケート_無視_DB: 
  テーブルの複製: 
 無視テーブルを複製: 
 Replicate_Wild_Do_Table: 
 Replicate_Wild_Ignore_Table: 
   最終エラー番号: 0
   最終エラー: 
   スキップカウンタ: 0
  実行マスターログポジション: 199126
  リレーログスペース: 4240
  Until_Condition: なし
  ログファイルまで: 
  ログ位置まで: 0
  マスターSSL許可: いいえ
  マスターSSLCAファイル: 
  マスターSSLCAパス: 
  マスターSSL証明書: 
  マスターSSL暗号: 
  マスターSSLキー: 
 マスターより遅れている秒数: 0
Master_SSL_Verify_Server_Cert: いいえ
  最終IOエラー番号: 0
  最後のIOエラー: 
  最終SQLエラー番号: 0
  最後のSQLエラー: 
 Replicate_Ignore_Server_Ids: 
  マスターサーバーID: 1
セット内の 1 行 (0.00 秒)

Zabbix で MySQL を監視する方法についての記事はこれで終わりです。Zabbix で MySQL を監視する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

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

<<:  Vueドロップダウンメニューのコンポーネント開発の詳細説明

>>:  MySQL 8.0 のインデックス スキップ スキャン

ブログ    

推薦する

ウェブサイトのコンテンツの100~1%はナビゲーションである

ウェブサイトでは、コンテンツの(100-1)%がナビゲーションです1. ジェシー・ジェームズ・ギャレ...

JDBC が MySQL に接続して中国語を処理するときに文字化けする問題の解決方法の詳細説明

JDBC が MySQL に接続して中国語を処理するときに文字化けする問題の解決方法の詳細説明最近、...

ESXI の仮想マシンにワークステーションをインストールするときに発生するネットワーク障害の解決策

問題の説明ESXI で Windows にワークステーションをインストールした後、内部の仮想マシンは...

MySQL コピーテーブルと許可分析の 3 つの実装方法

テーブルを素早くコピーする方法まず、テーブル db1.t を作成し、1000 行のデータを挿入します...

Javascript 仮想 DOM の詳細な説明

目次仮想DOMとは何ですか?なぜ仮想DOMが必要なのでしょうか?仮想 DOM はどのようにして実際の...

CentOS8 jdk8 / java8 のインストールチュートリアル(推奨)

序文最初はCentOS8でwgetを使ってダウンロードし、解凍して環境変数を設定するつもりだったので...

Nodeイベントループの包括的な理解

目次ノードイベントループイベントループ図メインスレッドイベントループタイマーキューの仕組み投票キュー...

CD コマンドを使わずに Linux でディレクトリ/フォルダに入る方法

ご存知のとおり、cd コマンドがないと、Linux でディレクトリを切り替えることはできません。それ...

Linux にソフトウェアをインストールするときにソフトウェア パッケージが存在しない問題を解決する方法

ソフトウェア パッケージが存在しない場合は、インストールされているソフトウェアのソフトウェア ソース...

href をクリックした後にページがジャンプしないようにするための空のリンクの正しい書き方 # 問題

リンクを使用する必要がある場合もありますが、リンクする必要はありません。onclick イベントを処...

Vue3スタイルのCSS変数注入の実装

目次まとめ基本的な例モチベーションデザインの詳細コンパイルの詳細採用戦略練習するヒント適切なプロパテ...

Vue ページをリフレッシュするために provide と injection を適用する

目次方法1: 関数を直接呼び出す方法2: provide / inject (静的更新) を使用する...

メニューノードのすべての子ノードを再帰的に検索する MySQL メソッド

背景プロジェクトにはメニューノードのすべてのノードをチェックする要件があります。オンラインでチェック...

携帯電話向けウェブページ作成のヒント

現在では多くの人がスマートフォンを使用していることを考慮すると、モバイル Web ページの書き方は、...

jQuery はラブエフェクトをクリックする

この記事では、jQueryのクリック時のラブエフェクトの具体的なコードを参考までに共有します。具体的...