Glide Note

glidenote's blog

NagiosのアラートをIRC BOT経由で制御する

IRC BOTを作って仕事をさせるようにしたの続き。 @mikedaさんと@hirose31さんのやりとりを見ていて、 Nagiosアラートをコマンドラインから停止出来ることを知った!!

@mikedaさんの上記記事を参考にせっかくなので、下記みたいに書いて、IRC BOTさんに作業をしてもらうことに。 ブラウザでもちゃんと確認するので、返り値とかチェックしてないけど。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

require 'cinch'

bot = Cinch::Bot.new do
  configure do |c|
    c.server = "xxxxxxxxxxxxxxx"
    c.ssl.use = true
    c.port = 6668
    c.password = 'xxxxxxxxxxxxx'
    c.channels = ["#xxxxxxxxxxx"]
    c.nick = 'nagios-cli-bot'
    c.realname = 'nagios-cli-bot'
    c.user = 'nagios-cli-bot'
  end

  # disable nagios alert
  on :message, /^disable (.+)/ do |m, query|
    system("echo \"[$(date +%s)] DISABLE_HOST_SVC_NOTIFICATIONS;#{query}.hogemoge.jp\" > /var/nagios/rw/nagios.cmd")
    system("echo \"[$(date +%s)] DISABLE_HOST_NOTIFICATIONS;#{query}.hogemoge.jp\" > /var/nagios/rw/nagios.cmd")
    system("echo \"[$(date +%s)] DISABLE_HOST_SVC_NOTIFICATIONS;#{query}.hogemoge.lan\" > /var/nagios/rw/nagios.cmd")
    system("echo \"[$(date +%s)] DISABLE_HOST_NOTIFICATIONS;#{query}.hogemoge.lan\" > /var/nagios/rw/nagios.cmd")
    m.reply "DISABLE NOTIFICATIONS #{query}.hogemoge.jp and #{query}.hogemoge.lan"
  end

  # enable nagios alert
  on :message, /^enable (.+)/ do |m, query|
    system("echo \"[$(date +%s)] ENABLE_HOST_SVC_NOTIFICATIONS;#{query}.hogemoge.jp\" > /var/nagios/rw/nagios.cmd")
    system("echo \"[$(date +%s)] ENABLE_HOST_NOTIFICATIONS;#{query}.hogemoge.jp\" > /var/nagios/rw/nagios.cmd")
    system("echo \"[$(date +%s)] ENABLE_HOST_SVC_NOTIFICATIONS;#{query}.hogemoge.lan\" > /var/nagios/rw/nagios.cmd")
    system("echo \"[$(date +%s)] ENABLE_HOST_NOTIFICATIONS;#{query}.hogemoge.lan\" > /var/nagios/rw/nagios.cmd")
    m.reply "ENABLE NOTIFICATIONS #{query}.hogemoge.jp and #{query}.hogemoge.lan"
  end

end

bot.start

disable web001でアラートを停止、enable web001でアラートを再開出来るようになった。

稼働してみた後によく考えてみると、気軽に監視を停止出来るのは結構危険なので、 常駐はさせずにメンテの時にアラートを一斉に停止させたり、再開させる作業があるので、そのときだけ働いてもらうようにした。

ここ2週間くらいメンテで使ってるけどなかなか便利。 よく使うようならwakeup nagios-cli-botとかsleep nagios-cli-botでIRC BOTの稼働を制御するようにしてみよう。

Comments