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 のインデックス スキップ スキャン

推薦する

ウェブサイト上のWeiboコンポーネントの再設計の詳細な紹介(写真とテキスト)

前面に書かれたWeibo コンポーネントは、サードパーティのアクセス ユーザーが開発を必要とせずに ...

jsネイティブ構文プロトタイプ、__proto__、コンストラクタの徹底的な理解

目次1 はじめに2 前提条件2.1 データ型2.2 それが自身のプロパティであるかどうかを判断する ...

MySQL でのストアド プロシージャと関数の作成の詳細な説明

目次1. ストアドプロシージャ1.1. 基本構文1.2 実行権限を指定してストアドプロシージャを作成...

Vue でシンプルな無限ループスクロールアニメーションを実装する例

この記事では主に、Vue でシンプルな無限ループスクロールアニメーションを実装し、みんなで共有する例...

Mysql ALTER TABLE はフィールドを追加するときにテーブルをロックしますか?

目次MySQL 5.6以前MySQL 5.6以降要約する知らせMySQL 5.6以前更新手順元のテー...

シンプルなカウントダウン効果を実現するJavaScript

この記事の例では、カウントダウン効果を実現するためのJavaScriptの具体的なコードを参考までに...

挿入前にレコードが既に存在するかどうかを確認するには、SQL ステートメントを使用します。

目次SQL文を挿入する前にレコードが既に存在するかどうかを確認するSQL挿入時の判断の簡単なコレクシ...

時間範囲効果を実現するためのJavaScript

この記事では、時間範囲効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します...

iframeを指すaタグのターゲットの名前とIDの違い

コードをコピーコードは次のとおりです。 <iframe id="myFrameId&...

仮想マシンを作成し、VMware に Redhat Linux オペレーティング システムをインストールする (グラフィック チュートリアル)

VMware で仮想マシンを作成し、Redhat Linux オペレーティング システムをインスト...

CSS3はNESゲームコンソールのサンプルコードを実装します

成果を達成する実装コードhtml <input type="radio" ...

XHTML 入門チュートリアル: テーブルタグの応用

<br />テーブルは XHTML では扱いにくいタグなので、このセクションで理解するだ...

docker-swarm をベースにした継続的インテグレーション クラスタ サービスの構築の詳細な説明

序文この記事は私自身の製作過程の簡単な記録です。練習中に質問があれば、一緒に話し合うことができます。...

Docker ベースのよく使われる CentOS7 イメージの概要

目次1 Dockerをインストールする2 国内ミラーソースの設定3 中国語環境基本版Centos7イ...

MYSQLの文字セット設定方法(端末の文字セット)の詳しい説明

序文ターミナルを使用してデータベースまたはテーブルを作成するたびに、文字セットが latin1 であ...