Перейти до основного вмісту

Повідомлення Nagios через пошту, Telegram, Pushbullet

Спочатку налаштування для електронної пошти.

Зупинимо та заборонимо запуск демона sendmail, тому у файлі /etc/sysconfig/sendmail потрібно вказати
DAEMON=no

Тепер sendmail тільки обробляє чергу і ніколи не приймає SMTP пошту на порту 25.
Вкажемо сервер MTA, котрий приймає поштові повідомлення на порту 25 від нас та для нашого домену. Для цього у файлі /etc/mail/submit.cf потрібно знайти строку з D{MTAHost} та вказати адресу нашого поштового серверу, наприклад для серверу mail.example.com буде
D{MTAHost}mail.example.com

Це адреса поштового сервера, на котрий наш комп’ютер буде надсилати усі вихідні повідомлення. Також потрібно впевнитись, що сервер mail.example.com налаштований для прийому поштових повідомлень від комп'ютерів та серверів нашого домену.
Після цього потрібно перезавантажити sendmail.

Тепер треба налаштувати повідомлення (notify) в Nagios. Для цього в теці /usr/local/nagios/etc/objects налаштуємо файли

У commands.cfg повинно бути

# 'notify-host-by-email' command definition 
define command{ 
command_name notify-host-by-email 
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mailx -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$ 
 } 

# 'notify-service-by-email' command definition 
define command{ 
 command_name notify-service-by-email 
 command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/mailx -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$ 
 }

Треба перевірити, де знаходиться програма для пошти, або /bin/mail або /usr/bin/mailx.

У contacts.cfg
define contact{
contact_name nagiosadmin
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r,f
host_notification_options d,u,r,f
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email admin@example.com
}

Де параметр service_notification_options може приймати значення
w: Notify on WARNING service states
u: Notify on UNKNOWN service states
c: Notify on CRITICAL service states
r: Notify on service RECOVERY (OK states)
f: Notify when the service starts and stops FLAPPING
n (none): Do not notify the contact on any type of service notifications

А параметр host_notification_options
d: Notify on DOWN host states
u: Notify on UNREACHABLE host states
r: Notify on host RECOVERY (UP states)
f: Notify when the host starts and stops FLAPPING
s: Send notifications when host or service scheduled downtime starts and ends
n (none): Do not notify the contact on any type of host notifications.

templates.cfg

Поради по налаштуванню повідомлень через пошту знайшов у
https://www.linux.com/learn/setting-email-alerts-network-monitoring-nagios
https://access.redhat.com/documentation/en-us/red_hat_gluster_storage/3/html/console_administration_guide/configuring_nagios_to_send_mail_notifications

Налаштування для Телеграм

Треба створити Telegram Bot за допомогою BotFather і отримати 
$BOT-TOKEN$
Перш за все потрібно у Telegram знайти користувача @BotFather та вказати йому команду /newbot, після цього потрібно вказати name та username для бота (username повинно закінчуватись на _bot). Після вказаного імені, BotFather  поверне вам токен та посилання на бот.

Можна використовувати вже існуючи скрипти для надсилання повідомлень на Телеграм, а найпростіше просто curl.

У файл налаштувань Nagios commands.cfg треба додати
# 'notify-host-by-telegram' command definition
define command{
command_name notify-host-by-telegram
command_line /usr/bin/curl -X POST --data chat_id=$CONTACTPAGER$ --data text="***** Nagios *****%0A%0ANotification Type: $NOTIFICATIONTYPE$%0AHost: $HOSTNAME$%0AState: $HOSTSTATE$%0AAddress: $HOSTADDRESS$%0AInfo: $HOSTOUTPUT$%0A%0ADate/Time: $LONGDATETIME$%0A" https://api.telegram.org/bot$BOT-TOKEN$/sendMessage
}

# 'notify-service-by-telegram' command definition
define command{
command_name notify-service-by-telegram
command_line /usr/bin/curl -X POST --data chat_id=$CONTACTPAGER$ --data text="***** Nagios *****%0A%0ANotification Type: $NOTIFICATIONTYPE$%0A%0AService: $SERVICEDESC$%0AHost: $HOSTALIAS$%0AAddress: $HOSTADDRESS$%0AState: $SERVICESTATE$%0A%0ADate/Time: $LONGDATETIME$%0A%0AAdditional Info:%0A%0A$SERVICEOUTPUT$%0A" https://api.telegram.org/bot$BOT-TOKEN$/sendMessage
}


У файл contacts.cfg додати

define contact {
contact_name your-telegram-bot
alias Your Bot
service_notification_options w,u,c,r
service_notification_period 24x7
host_notification_period 24x7
service_notification_commands notify-service-by-telegram
host_notification_commands notify-host-by-telegram
host_notification_options d,r
pager $CHAT-ID$
}

Поради по налаштуванню повідомлень через Telegram знайшов у
https://blog.stadtplan-ilmenau.de/2015/11/nagios-notifications-via-telegram/
https://smeretech.com/en/to-use-telegram-with-nagios/

https://pommi.nethuis.nl/nagios-notifications-via-telegram/

Налаштування для Pushbullet

Спочатку треба налаштувати підключення до Pushbullet. Access token (Pushbullet API Key) можна знайти на сторінці налаштувань у “Account Settings”.

У налаштуваннях Nagios додати у файл commands.cfg
# 'notify-host-by-push' command definition
define command{
command_name notify-host-by-push
command_line /usr/bin/curl --header 'Authorization: Bearer <your_access_token_here>' -X POST https://api.pushbullet.com/v2/pushes --header 'Content-Type: application/json' --data-binary '{"type": "note", "title": "* $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **", "body": "***** Nagios ***** Notification Type: $NOTIFICATIONTYPE$ Host: $HOSTNAME$ State: $HOSTSTATE$ Address: $HOSTADDRESS$ Info: $HOSTOUTPUT$ Date/Time: $LONGDATETIME$", "email": "<email_associated_with@pushbullet-account.here>"}'
}


# 'notify-service-by-push' command definition - ident
define command{
command_name notify-service-by-push
command_line /usr/bin/curl --header 'Authorization: Bearer <your_access_token_here>' -X POST https://api.pushbullet.com/v2/pushes --header 'Content-Type: application/json' --data-binary '{"type": "note", "title": "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **", "body": "***** Nagios ***** Notification Type: $NOTIFICATIONTYPE$ Service: $SERVICEDESC$ Host: $HOSTALIAS$ Address: $HOSTADDRESS$ State: $SERVICESTATE$ Date/Time: $LONGDATETIME$ Additional Info: $SERVICEOUTPUT$", "<email_associated_with@pushbullet-account.here>"}'
}


Додати у файл contacts.cfg

# Make sure your 'generic-service' template or any services or hosts your set up are assigned to the root contact, or whatever other contact you decide to use notify-service/host-by-push as the notification method for
define contact{
contact_name root
alias Root
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-push
host_notification_commands notify-host-by-push
# email root@localhost
}

define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members root
}


Пораду з налаштування повідомлень знайшов у 
https://gist.github.com/ischoonover/b5cf92776e46e556dadf

Перевірити передачу повідомлень до Pushbullet, можна за допомогою команд
curl -u <your_access_token_here>: https://api.pushbullet.com/v2/users/me

Відповідь може виглядати так
{
 "iden": "ubdpjxakjjk1G",
 "email": "ryan@pushbullet.com",
 "email_normalized": "ryan@pushbullet.com",
 "created": 1357941753.8287899,
 "modified": 1399325992.1842301,
 ...
}

Як працювати з API Pushbullet описано 
https://docs.pushbullet.com/v1/
Тут можна знайти інші цікаві методи повідомлення https://kb.op5.com/display/~osandstrom/2015/02/23/Monitor@Home%3A+Notification+Alternatives#sthash.wIio7wPI.dpbs

Коментарі

Популярні дописи з цього блогу

Подключение Cisco 7911/7912 по SIP к Asterisk

Аппарат Cisco IP Phone 7911 по-умолчанию настроен на использование протокола SCCP. Можно в Asterisk указать использование модулей SCCP, но для единообразия удобнее использовать SIP. Для использования протокола SIP в аппарате Cisco 7911 нужно обновить программное обеспечение.  Код обновления для загрузки в аппарат нужно скачать с сервера Cisco: http://tools.cisco.com/support/downloads/pub/Redirect.x?mdfid=278875240 Самое последнее обновление (на данный момент версия 9.3) может не работать c Asterisk, с  версии 9.X Cisco переходит на использование только TCP для SIP соединений. Поэтому для использования UDP удобнее скачать обновление версии 8.5.2 или 8.5.4. Может понадобится  вначале   установить обновление 8.5.2, а затем 8.5.4. Например, для обновления с SCCP11.8-2-2SR-4S надо вначале установить 8.5.2 Обновление будет производится с сервера  TFTP, поэтому д ля начала нужно настроить сервер DHCP, TFTP. Причем в DHCP нужно настроить опцию 150, которая используется для указания аппа

Панель инструментов Remmina в полноэкранном режиме Ubuntu 12.04

Пакет Remmina 0.9.99 (протокол RDP) в системе Ubuntu 12.04 используется как клиент для доступа к терминальному серверу. Обнаружено странное поведение панели инструментов в полноэкранном режиме на терминальном сервере- панель инструментов исчезает и невозможно перейти в другое окно или закрыть сеанс. Для сворачивания окна можно использовать комбинацию клавиш CTRL+F9. Комбинации клавиш задаются в настройках Remmina, а CTRL нужно, чтобы комбинацию не перехватил терминальный сервер. В настройках Remmina есть параметр "Спрятать панель инструментов в полноэкранном режиме". Но иногда, даже если не указан этот параметр, меню не отображается. Можно, не закрывая терминальную сессию, изменить этот параметр на противоположный и после возврата в сессию, меню начнет появляться. В следующий раз перед открытием новых сессий в Remmina нужно правильно указать значение этого параметра. Размер иконок в панели инструментов можно изменить через основное меню Remmina

Изменение размера бумаги LibreOffice(OpenOffice)

Если при установке Ubuntu указать локаль «USA», то размер бумаги по-умолчанию установится «Letter». Если потом через «Система- Администрирование- Локализации» изменить локаль на «Украинский» («Русский»), изменится язык системы, формат даты, но размер бумаги по-умолчанию и единица измерения останутся прежними.  Совет нашел в http://www.nixp.ru/recipes/%D0%9A%D0%B0%D0%BA-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C-%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80-%D0%B1%D1%83%D0%BC%D0%B0%D0%B3%D0%B8-%D0%B2-OpenOffice-org-%D0%BF%D0%BE-%D1%83%D0%BC%D0%BE%D0%BB%D1%87%D0%B0%D0%BD%D0%B8%D1%8E-%28libpaper%29.html Нужно в терминале запустить sudo dpkg-reconfigure libpaper1 В открывшемся списке выбрать формат А4. Можно напрямую в файле конфигурации (/etc/papersize) указать размер А4. Проверить можно в LibreOffice(OpenOffice) через меню «Формат-Страница». Еще в LibreOffice(OpenOffice) нужно изменить единицу измерения через «Сервис- Параметры- LibreOffice Writer- Общие»