dullwhaleのメモ帳

何度も同じことを調べなくてよいように...

Zabbix 5.4でMySQLからメトリクスデータをダンプする

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)型はMySQLhistory_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(正数型?)