Zabbixから継続的にメトリクスデータを取得する場合はちゃんと仕組みを作った方が良いが、1回限りならば手動でMySQLの中のデータを探ってダンプした方が早いことがある。 その方法についてメモする。
まずはZabbixのデータが溜められているMySQLサーバにログインする。
# データを取りたいホストのhostidを確認する。 SELECT `hostid`, `host` FROM `hosts`; # 確認したhostidを元に、データを取りたいitemのitemidを確認する。 SELECT `itemid`, `name`, `key_` FROM `items` WHERE `hostid` = 上で確認したデータを取りたいhostid;
ここで特定したitemidをメモしておく。
次にヒストリデータがどの表に保存されているか確認する。 Zabbixでは値の型によって、保存される表が異なるようだ。 これらの表のうちどれかに実データが保存されている。
Zabbix上のNumeric (unsigned)
型はMySQLのhistory_uint
表に保存されていた。
これ以降の作業では型によってSELECT元の表を変える必要がある。
# ヒストリデータをいくつか見る。大量のデータが返るはずだから、必ずLIMITを最後に付加する。 SELECT `clock`, `value` FROM `history_uint` WHERE `itemid` = 上でメモしたitemid LIMIT 10;
取得したいデータがあっていたら、次のようにpipeでSQLを流し、gzipで圧縮しながらファイルに保存する。
echo 'SELECT `clock`, `value` FROM `history_uint` WHERE `itemid` = メモしたitemid ORDER BY `clock`' | mysql -uroot -p DATABASE | gzip > time-series.gz
トレンドデータを取得する場合
zabbixは生データとは別にトレンドデータというデータ集約の仕組みがある。 ヒストリの保存期間を過ぎて、トレンドの保存期間内なら、ヒストリは1時間毎の集約データとしてトレンドに保存される。 トレンドには1時間毎の最小、最大、平均が保持される。 itemと同様にデータ型によって保存される表が違うようだ
- trends(不動小数点型?)
- trends_uint(正数型?)