今日は、Zabbixのタイムシフトの機能を活用する方法をご紹介。
Zabbixは監視した結果をRDBMSに保存する仕組みになっています。保存期間は各監視アイテムごとに自由に設定可能です。
DBに過去の監視結果が保存されるため、過去の監視結果を活用した監視を実施することが可能です。
タイムシフト
Zabbixは、監視結果に対してトリガーを設定することで障害の検知ができるようになります。このトリガーの条件式に利用できるトリガー関数はこちらのURLに記載の通り様々あります。
この各トリガーの中には引数にタイムシフト設定ができるものが多数あります。
例えば、last関数です。
last関数は、監視結果に対して指定したポイントの最後の値を評価対象とする関数です。
last関数の引数としては以下のような設定が可能です。
last (sec|#num,time_shift)
第1引数には評価したい値を指定するための秒数または個数を指定します。last(60)と指定すると60秒前の直近の監視結果が評価対象となります。last(#10)直近から数えて10番目の監視結果が評価対象となります。
第2引数を指定すると、その指定した時間分過去にずらした上で第1引数で指定したタイミングの値が評価対象となります。
例えば、**last(0, 1d)**と指定すると、1日前の監視結果の値が評価対象となります。
このように過去のデータを評価対象として管理することができるため過去とくらべてどうかを評価して障害の判定ができるようになっています。
よく利用されるパターンとしては、このようにトリガーの関数にタイムシフト設定して評価させるケースが多いですが、今回はタイムシフト機能を使って、1つのグラフ上に描画して視覚的に変化を見やすくする方法を紹介します。
計算アイテム
グラフ化の設定の前、計算アイテムについて紹介します。計算アイテムは先程紹介したような各トリガー関数や四則演算等を使って監視結果の値に対して計算した結果を更に監視結果として登録するためのアイテムです。先程のトリガーを使っての評価だけだと、評価のために一時的に値を算出しますがデータベースにはそのトリガー関数の評価結果等は保持されません。そのためグラフ化するにはここで紹介する計算アイテムの利用が必要となります。
ある監視結果に対して1日前の結果を計算して保存するアイテムは以下のように設定します。
※計算アイテムの構文はこちらの公式ドキュメントを参照してください。
式の設定欄を見ると、last関数を使って監視アイテムの1日前(1d)の直近のデータを監視結果として登録する定義になっています。更新間隔はもとの監視アイテムの更新間隔とあわせています。
このように計算アイテムを登録することで1日前のデータが監視結果として蓄積されていきます。
グラフへの重ね合わせ
元の監視結果のグラフと計算アイテムで取得した値のグラフを重ね合わせると以下のように見ることができます。
このように重ね合わせてグラフで見ることで視覚的にも明らかな変化を見て取れます。
まとめ
このように同一時刻の情報を画面で表示させると視覚的に状況を捉えることができるので場合によっては効果があるかもしれないです。
注意点としては、タイムシフトの機能を使うことで過去のデータを内部で処理することになるため、あまりに多くのデータを扱うようなタイムシフトの設定だと多少処理の負荷が高まる恐れがあります。
使いすぎ・無理しすぎには注意です。