blackbird mysql plugin
この plugin では mysql から様々な情報を取得し、backend にデータを送信します
現在のところ、下記の情報をモニタリングすることができます。
(mysql 5.5 系を対象にしていますが 5.6 でも特に問題はないと思います)
- mysql に接続できるかできないかの死活監視
SELECT VERSION()
SHOW GLOBAL VARIABLES
SHOW GLOBAL STATUS
SHOW ENGINE INNODB STATUS
SHOW SLAVE STATUS
- DATABASE 内の TABLE の数 (Low Level Discovery)
各取得項目は component
という単位になっています。
component
毎に Zabbix の Template を用意していますので、監視したい component と Zabbix Template をセットで使ってください
component
と Zabbix Template の対応表は下記になります
blackbird mysql plugin の各 component
component | content | zabbix template |
---|---|---|
(defaultt) | get mysql version and check mysql health | MySQL_5.5_general.xml |
global_variables | get information by SHOW GLOBAL VARIABLES | MySQL_5.5_variables.xml |
global_status | get information by SHOW GLOBAL STATUS | MySQL_5.5_status.xml |
innodb_status | get information by SHOW ENGINE INNODB STATUS | MySQL_5.5_innodb.xml |
slave_status | get information by SHOW SLAVE STATUS | MySQL_5.5_slave.xml |
table_count | discovery number of tables in database (lld) | MySQL_5.5_general.xml |
各 Zabbix Template ですが、Zabbix 2.4 で作成されたものです
Trigger の定義が変わってますので 2.2 系では使えません
Install
blackbird 本体
こちらを参考に install してください
Install mysql plugin
setup.py で入れる方法と rpm で入れる方法があります
手動で入れる方法もありますが、その場合は別途 python の MySQLdb
の module を使えるようにしてください
setup.py で install
git clone https://github.com/Vagrants/blackbird-mysql.git
cd blackbird-mysql
python setup.py install
rpm で install
yum install blackbird-mysql --enablerepo=blackbird
依存関係で MySQL-python
が必要となります
MySQL 側に monitoring user を作成する
blackbird が接続する user を作成します
mysql> GRANT SELECT, REPLICATION CLIENT, SHOW DATABASES, PROCESS ON *.* TO 'bbd'@'127.0.0.1' IDENTIFIED BY 'bbd';
ip address や username、password は適宜変えてください
接続ユーザー情報は config で自由に設定することができます
すでにモニタリング用のユーザーがいる場合はわざわざ作る必要はありません
plugin の設定をする
config は /etc/blackbird/conf.d/mysql.cfg
にあります
component
や監視間隔を設定することができます
[mysql]
module = 'mysql'
# mysql setting
#
# - Please create monitor user like this.
#
# mysql> GRANT SELECT, REPLICATION CLIENT, SHOW DATABASES, PROCESS ON *.* TO 'bbd'@'127.0.0.1' IDENTIFIED BY 'bbd';
#
# mysqlhost = '127.0.0.1'
# mysqluser = 'bbd'
# mysqlpass = 'bbd'
# components
# - global_variables : SHOW GLOBAL VARIABLES;
# - global_status : SHOW GLOBAL STATUS;
# - innodb_status : SHOW ENGINE INNODB STATUS;
# - slave_status : SHOW SLAVE STATUS;
# - table_count (LLD): SELECT table_schema, COUNT(table_name) FROM information_schema.TABLES GROUP BY table_schema;
#
components = 'global_variables,global_status,innodb_status,slave_status,table_count'
# interval for this module
#
# interval = 60
# lld_interval = 600
#
# You can set the different interval time for each component.
#
# [mysql]
# module = 'mysql'
# components = 'version,global_variables,global_status,innodb_status'
# interval = 60
#
# [mysql_slave_monitor_frequent_intervals]
# module = 'mysql'
# components = 'slave_status'
# interval = 10
config の後ろの方には TIPS として特定の component
だけ監視間隔を変えたい場合の設定方法が書いてあったりします
設定が終わったら blackbird
を再起動させます
sudo /etc/init.d/blackbird restart
Zabbix 上でデータが入ってきているか確認する
Zabbix の Template は github の repositoryにあります
Zabbix に import して対象のサーバーに適用させて下さい
Zabbix 上の host 名と blackbird が起動しているサーバーの host 名が違う場合は /etc/blackbird/conf.d/mysql.cfg
上で hostname を設定してあげる必要があります
Zabbix 上と合わせてください
hostname = your_static_hostname
注意点等
Zabbix の Template の Trigger 等は各自の環境毎にいろいろカスタマイズしてください
とりあえず取れるものは取る というポリシーで Zabbix Template は作られています
- 当然 こんなの取ってどうするの? みたいな item もあります
- item が多いということは、それなりに Zabbix DB に負荷がかかります。適宜無効にしてください
絶賛募集中です
- あらかじめこういう Trigger を入れておいて欲しい
- あらかじめこういう Graph を入れておいて欲しい
- あらかじめこういう Screen を入れておいて欲しい
- このアイテムも取れるようにしてほしい (
SHOW PROCESSLIST
は検討中です)
Zabbix 2.2 系で使いたいんだが
- 要望が多ければ 2.2 系の Template も準備します
MySQL だけじゃなくて PostgreSQL は?
- がんばります・・・