Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

この記事は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さんです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away