Skip to content

グラフ機能仕様メモ

ashie edited this page Oct 31, 2014 · 8 revisions

グラフ機能仕様メモ

データ取得

Itemの取得(既存実装の修正)

  • グラフを作成する際には、Itemの情報が必要。 現在はDBに格納していない情報もあるので、カラムを追加する。
    • 型情報
    • 単位
  • 最新の情報を素早く取得したいため、個々のItemのみを個別に取得できる ようにしたい。 現状は監視サーバ毎の一括取得。 ただし、グラフ表示への導線を考えると必ずItem情報は事前に取得してい ると思われるため、優先度は低い。

Historyの取得(新規実装)

  • Historyデータはアイテムと同様にオンデマンドで取得する。
  • 基本的にはHatoholのDBに保存しない。
    • 理由: 全てを蓄積するには数が多すぎる。
    • クライアントへは取ってきた値を直接渡す。 DBに保存しないため、アイテム取得とは少し異なる実装が必要。
    • 過去数時間分程度は、Hatohol側にキャッシュするか?
      • -> 実装の優先度は下げる。少なくとも14.12では実装しない。
  • 一回辺りの最大History取得数は1000に制限する
    • Eventの場合と同様の理由(Zabbix側が正しく動作しない)
    • 漏れなく取得するのはクライアント側の役割とする
      • -> データが足りないと推測される場合は時間範囲をシフトして再取得
  • 当面は数値型以外のHistoryはサポートしない。
  • 14.12ではZabbixのみサポート。
    • HAPIを優先すべきか、ArmZabbixを優先すべきかは要検討。
  • 15.03でCeilometerをサポート。
  • Nagiosは検討中。少なくとも14.12ではサポートしない。

Trendの集計(新規実装)

  • 長期間のグラフ作成する場合には、Zabbixと同様に、Historyを直接扱う のではなく、Trend(集計データ)を使用する。
  • Zabbix APIにはTrendの取得機能が無いため、Hatohol側で集計する。 集計は高速化のためHatoholサーバ(C++)で行う。
    • -> 他監視システムにもそのまま使用可能
    • 問題点は、一般的にZabbixのHistoryはTrendよりも保存期間が短いこと。 ただし、現状のZabbix APIを使用する限り解決方法は無い。
  • 詳細はZabbixの実装を参考にしつつ決定する。
    • trendは一時間毎に一レコード?
    • 最大値・最小値・平均値・分散等?
  • TrendはDBに保存する。
    • 運用開始時点ではHistory保存期間より前に翻ることはできないが、これは仕様とする
    • TODO: 保存期間は?
  • アイドル時間を利用して投機的実行しておくとよいか?
    • Itemにスコアをつけて、頻繁に参照されるItemについて優先実行
    • -> 実装の優先度は下げる。少なくとも14.12では実装しない。
  • 実装の優先度は下げる。14.12に入れるかどうかは時間次第。

Graphの取得

  • Zabbixのグラフ定義。
  • 利用するかどうか詳細未定。少なくとも14.12ではサポートしない。

クライアント側でのデータ取得

  • 分割取得する。
    • 受け取ったデータから逐次グラフ描画する。
  • 時間範囲に応じて、Historyを取得するかTrendを取得するかを決定する。

グラフ描画

14.12

  • Zabbixと同じように「アイテム」ページの各行にグラフページへのリンクを追加し、 グラフ描画専用のページを用意する
  • Flotを使用してJavaScriptで描画する: http://www.flotcharts.org/
  • 単位接頭辞の変換はHatoholのWebUIで行う
    • 15.03ではHatoholサーバ側のTrend機能に移すか?
  • 定期的に新規値を取得して更新する
    • リクエスト間隔を自動で調整できるように、アイテムの更新間隔もDBに入れておくべきか? (NVPSの計算のために取得はしているが、DBには保存していない)
  • その他UIの仕様は実装しながら検討