LoginSignup
11
10

More than 5 years have passed since last update.

Zabbixイベントをタイムラインに並べる

Posted at

この記事はZabbix Advent Calendar 2015の15日目です。

Zabbixイベントをタイムラインに並べたい

私が関わっている、とあるチームでは毎週、一週間に起きた障害の振り返りを行っていて、大きな障害の情報を共有したり、多く発生している警告などについてその対策を考えたりしています。

その振り返りミーティングのときにはZabbixの「レポート > 障害発生数上位100項目」をメンバーで眺めています。

しかし「障害発生数上位100項目」に表示される情報はあまり多くないので、「イベント履歴」の画面に飛んだり、当該時間のアイテムのグラフの画面に飛んだりで、当該時刻の状況を俯瞰的に把握するには辛いものがあります。

たとえば「5xxカウント > 閾値」のイベントが発生したとき、同時刻に発生した警告・障害をさっと把握できるといいなぁ…などと考えていました。

Zabbix-Plugin-Timeline

それでそんなことができるツールをいろいろと探してみたところ、Zabbix-Plugin-Timelineというプラグイン?が見つかりました。

これは、以下のようにZabbixのWeb画面にタブを追加して、タイムラインを表示するものです。

SinaMSRE/Zabbix-Plugin-Timeline

「求めていたものはまさにこれだ!」と思ったんですが、残念ながらZabbix 2.2でしか動かない…
がんばれば2.4に対応できるかも知れないと思いつつ、魔改造系プラグインをがんばって修正するのもなんだかな…と躊躇していました。

自作することにした

Zabbix-Plugin-Timelineを眺めていたら、タイムラインの描画にはTimeline.jsというJSライブラリを使っているようで、使うのはそんなに難しくはなさそうでした。

また、Zabbixイベントも以下のようにAPIをたたけば取ってこれます。

#!/usr/bin/env ruby
require 'zabbix/client'
require 'pp'

client = Zabbix::Client.new('http://zabbix.example.com/zabbix/api_jsonrpc.php')
client.user.login(user: 'Admin', password: 'zabbix')

# https://www.zabbix.com/documentation/2.4/manual/api/reference/event/get
events = client.event.get(
  filter: {object: 0, value: 1},
  sortfield: :clock,
  sortorder: :DESC,
  select_alerts: [:subject],
  selectRelatedObject: [:description],
  selectHosts: [:host],
  limit: 10000)

pp events
#=> [{"eventid"=>"718",
#     "source"=>"0",
#     "object"=>"0",
#     "objectid"=>"13676",
#     "clock"=>"1449916803",
#     "value"=>"1",
#     "acknowledged"=>"0",
#     "ns"=>"350684510",
#     "hosts"=>[{"hostid"=>"10119", "host"=>"zabbix-client-002"}],
#     "relatedObject"=>{"triggerid"=>"13676", "description"=>"CPU"},

コア部分の実装についてはそれほど手間がかからないことが分かったので、自作してみることにしました。

Zabbix Timeline

ということで、できたのが以下のWebアプリです。

winebarrel/zabbix_timeline

作ったばかりで、まだ実践では活用できていないのですが、障害振り返り時の効率改善につながればいいなーと考えております。

興味のある方はどうぞご利用ください。

明日は、atanaka7さんです。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10