2012-02-28 1 views
0

У меня есть предупреждения nagios, настроенные для прохождения через jabber с ссылкой http на ack.Можно ли оповещать оповещения nagios от терминала?

Возможно ли, что есть сценарий, который я могу запускать с терминала на удаленной рабочей станции, которая принимает имя хоста в качестве параметра и вызывает предупреждение?

./ack имя хоста

Преимущество, в то время как казалось бы, прозаический, состоит из трех частей. Сначала возьмите HTTP-загрузку с nagios. Во-вторых, страницы nagios http могут занимать до 10-20 секунд для загрузки, поэтому я хочу сэкономить время там. В-третьих, избегайте более медленного использования мыши + веб-интерфейса + firefox/другого досадно медленного браузера.

В идеале, мне нужен сценарий, связанный с ярлыком на клавиатуре, который просто вызывает последнее предупреждение. Наконец, я хочу взять входные данные с джойстика, кнопок и еще много чего, и подключить его к большой красной кнопке, привязанной к скрипту, чтобы я мог просто получить последнее предупреждение nagios, нажав кнопку LOL. (Это было бы радом, если бы на кнопке был экран на корпусе, в котором был показан текст оповещения, получающий acked lol)

Избавь меня от всего, что хочешь, но это на самом деле то, что было бы полезно для меня. Если я смогу сэкономить пять секунд на каждое оповещение, и я получаю 200 предупреждений в день, мне нужно помочь, это экономит мне 15 минут в день. И не все ли смысл системного администратора автоматизировать то, что может быть автоматизировано?

Спасибо!

ответ

1

Да, это возможно для nagios путем анализа /var/lib/nagios3/retention.dat файла.

См:

#!/usr/bin/env python 
# -*- coding: utf8 -*- 
# vim:ts=4:sw=4 

import sys 

file = "/var/lib/nagios3/retention.dat" 

try: 
    sys.argv[1] 
except: 
    print("Usage:\n"+sys.argv[0]+" <HOST>\n") 
    sys.exit(1) 

f = open(file, "r") 
line = f.readline() 

c=0 
name = {} 
state = {} 
host = {} 

while line: 
    if "service_description=" in line: 
     name[c] = line.split("=", 2)[1] 
    elif "current_state=" in line: 
     state[c] = line.split("=", 2)[1] 
    elif "host_name=" in line: 
     host[c] = line.split("=", 2)[1] 
    elif "}" in line: 
     c+=1 

    line = f.readline() 

for i in name: 
    num = int(state[i]) 

    if num > 0 and sys.argv[1] == host[i].strip(): 
     print(name[i].strip("\n")) 

Вы просто должны поставить хост в качестве параметра, и скрипт отображает нарушенные услуги.

+0

Сообщение отредактировано с полным скриптом –

+0

Совсем нет! Я просто медленно ха-ха. Я также понял, что должен был опубликовать это на ошибке сервера. Я предполагаю, что вы запускаете скрипт с сервера nagios? Я надеялся на что-то, что можно запустить с удаленной рабочей станции, но я должен был прояснить это. –

+0

Да, с сервера nagios. Вы можете сделать то же самое на удаленном хосте с помощью ssh: 'ssh nagios-server/path/to/executable/script.py' –

 Смежные вопросы

  • Нет связанных вопросов^_^