結果は、地図を表示します
次のように第2の自動発見MySQLの結果内外への流量を監視することで、変更、削除、MySQLは追加の監視自動検出ZABBIX、私たちは図の結果を見てみましょうすることです:
Zabbixの監視権限に対するMySQL
まず、より安全な、比較的小規模な権限のユーザーの監視、使用状況を作成します。SQLは、次の
grant usage on *.* to 'monitor'@'127.0.0.1' identified by 'shijiangepwd';
flush privileges;
次のようにテストユーザーが発効するかどうかを監視し、試験結果は
mysql -umonitor -h 127.0.0.1 -pshijiangepwd -A
mysql> show global status;
+-----------------------------------------------+-------------+
| Variable_name | Value |
+-----------------------------------------------+-------------+
| Aborted_clients | 0 |
| Aborted_connects | 0 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Binlog_stmt_cache_disk_use | 0 |
| Binlog_stmt_cache_use | 0 |
モニタリングで書かれたシェルスクリプト
スクリプトは、MySQLがステータス情報mysql_check.shを監視するためのグローバルな状態を示して使用します。
port=$1
key=$2
mysql -umonitor -pshijiangepwd -h 127.0.0.1 -P${port} -e "show global status" |grep "${key}\s" |awk '{print $2}'
結果は以下のように、Zabbixの監視のみに番号を返す必要があります
[root@test ~]# sh mysql_check.sh 3306 Bytes_received
439
[root@test ~]# sh mysql_check.sh 3306 Bytes_sent
11935
MySQLのモニタリングポートは、自動検出を使用します
自動検出スクリプトmysql_discovery.pyを使用してMySQLポート
# -*- coding: utf-8 -*-
try:
import json
except:
import simplejson as json
import commands
(status, output) = commands.getstatusoutput(""" sudo netstat -tlnp|grep mysql|awk '{print $4}'|awk -F':' '{print $2}'|sort -u """)
outputs = output.split('\n')
result = []
for one in outputs:
result.append( {'{#ONE}': one} )
print( json.dumps({'data':result},sort_keys=True,indent=4) )
あなたはsudoを使用する必要がありますので、デフォルトのZabbixユーザは、netstatコマンドを使用することはできません、Zabbixのユーザーはsudo権限を追加する必要がvisudoを
zabbix ALL= NOPASSWD: /bin/netstat
Defaults:zabbix !requiretty
次のようにMySQLのポート自動検出結果は、
[root@test ~]# python mysql_discovery.py
{
"data": [
{
"{#ONE}": "3306"
}
]
}
監視対象のクライアントは、カスタムキー設定を追加します
監視対象のクライアントには、次の設定を追加し、その後のZabbixエージェントを再起動する必要があります
UserParameter=mysql.discovery,python /etc/zabbix/mysql_discovery.py
UserParameter=mysql.check[*],sh /etc/zabbix/mysql_check.sh $1 $2 2>/dev/null
なぜ我々は2>を/ dev / nullを追加する必要があり、このバージョンでは、以下の安全のためのヒントがあるだろうコマンドで直接コードを記述する高のMySQLの防止であるので、あまりにもフィルタリング
mysql: [Warning] Using a password on the command line interface can be insecure.