いつもお世話になっております。
ヒストリのデータを最大3か月取得してきたいと考えております。
監視間隔は1分設定なので値の個数としては1日1440個保持しており、
単純計算で1日1440個*3か月(90日)で129600個となります。
この量となるとWebフロントからの抜き出しは厳しいため、
取得手段を探しておりますが良い方法はございますでしょうか。
過去にSQLを利用して取得しているような記事を見たと思ったのですが、
掘り当てることが出来ませんでした。。。
ZabbixVer:3.010
OS :CentOS7.1
fripper - 投稿数: 495
3.0.x 系とのことで、DB直接、もしくは、API経由のいずれかが良いかと思います
■DBから直接
ヒストリ系データは、データの型によって数種類のテーブルのいずれかに格納されています
浮動小数→history
整数 →history_uint
文字列 →history_str
ログ →history_log
テキスト→history_text
単純なSQLでのオペレーションなら、WebUI からアイテムIDを特定したうえで、
時刻情報 (unixtime) にて範囲を AAAAAA-BBBBBB へ特定して、
sql> select * from history as h where h.itemid=xxxxx and h.clock between AAAAAA and BBBBBB order by clock asc
といった具合でしょうか
mysql / mariadb 系ならば、以下のように into outfile 構文で、カンマ区切り csv 等に吐かせることもできるかと。
sql> select * from history as h where h.itemid=xxxxx and h.clock between AAAAAA and BBBBBB order by clock asc
INTO OUTFILE "/tmp/history_out.csv" FIELDS TERMINATED BY ',';
■API
APIの場合は、ログイン後に history.get APIを用いて
特定のアイテムID・特定の時刻範囲等を指定すれば、JSONデータとして
リストが得られるかと思います
https://www.zabbix.com/documentation/3.0/manual/api/reference/history/get
APIの場合は、shell上でjq等のコマンドを利用するか、php/ruby等の言語を用いるか‥で
アプローチが様々なので、詳細までは例示しきれませんが‥汗
kaeru - 投稿数: 264
>>fripper様
ご回答ありがとうございました。
頂いた内容で実施出来ました!
また本筋とは逸れてしまいますがWebUIからのアイテムID特定は可能でしょうか。
WebUI上を確認しましたが、それらしい項目が見つけらなかったため、
hostsテーブルから対象hostsidを特定し、hostsIDを使用して
itemsテーブルよりitemuidを引いております。
fripper - 投稿数: 495
数が少ないのであれば、WebUIで「監視データ」→「概要」ページにて
対象ホストの収集結果データ一覧が表示された状態から
アイテム値の部分をクリックし、ポップアップから「最新の値」を選択すれば
http://xxxx/zabbix/history.php?itemids%5B%5D=23298&action=showvalues&period=3600&sid=5fedb240e1905931
といったURLのページへ遷移するので、
「...(略)...itemids%5B%5D= 23298 &action=...(略)...」
の部分が itemid として特定できるかと思います
kaeru - 投稿数: 264
>>fripper様
URLの方でしたか…失念しておりました。
確認が出来ました。
ご回答、誠ありがとうございました。