Zabbix 이벤트를 타임라인에 정렬

4942 단어 zabbix
이 문서는 Zabbix Advent Calendar 2015의 15 일째입니다.

Zabbix 이벤트를 타임 라인에 정렬하고 싶습니다.



내가 관여하고 있는, 어떤 팀에서는 매주, 일주일에 일어난 장애를 되돌아 보고 있어, 큰 장애의 정보를 공유하거나, 많이 발생하고 있는 경고등에 대해서 그 대책을 생각하고 있습니다 .

그 되돌아 봐 미팅 때에는 Zabbix의 「리포트 > 장해 발생수 상위 100항목」을 멤버로 바라보고 있습니다.

그러나 「장애 발생수 상위 100항목」에 표시되는 정보는 그다지 많지 않기 때문에, 「이벤트 이력」의 화면으로 날아가거나, 해당 시간의 아이템의 그래프의 화면으로 날아가거나, 해당 시각의 상황을 부감적 파악하기에는 매운 것이 있습니다.

예를 들면 「5xx 카운트 > 임계치」의 이벤트가 발생했을 때, 같은 시각에 발생한 경고·장애를 살짝 파악할 수 있으면 좋겠다…등이라고 생각하고 있었습니다.

Zabbix-Plugin-Timeline



그래서 그런 일을 할 수 있는 툴을 여러가지 찾아 보았는데, Zabbix-Plugin-Timeline 라고 하는 플러그인? 를 찾았습니다.

이것은 아래와 같이 Zabbix 웹 화면에 탭을 추가하여 타임 라인을 표시합니다.

SinaMSRE/Zabbix-Plugin-Timeline


"구하고 있던 것은 바로 이것이다!"라고 생각했습니다만, 불행히도 Zabbix 2.2에서 밖에 움직이지 않는다…
노력하면 2.4에 대응할 수 있을지도 모른다고 생각하면서, 마 개조계 플러그인을 노력해 수정하는 것도 왠지… 라고 주저하고 있었습니다.

자작하기로 결정



Zabbix-Plugin-Timeline을 바라보고 있으면, 타임 라인의 묘화에는.

또, 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



그렇게 해서 할 수 있었던 것이 아래의 웹 앱입니다.

Timeline.js
winebarrel/zabbix_timeline

방금 만들었고 아직 실천에서는 활용할 수 없었지만, 장애 되돌아 볼 때의 효율 개선으로 이어지면 좋겠다고 생각하고 있습니다.

흥미가 있는 분은 부디 이용해 주세요.

내일은 atanaka7입니다.

좋은 웹페이지 즐겨찾기