Спочатку налаштування для електронної пошти.
Зупинимо та заборонимо запуск демона 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 повинно бути
Зупинимо та заборонимо запуск демона 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
Треба перевірити, де знаходиться програма для пошти, або /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/
Налаштування для Телеграм
Треба створити 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
Налаштування для 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
}
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, можна за допомогою командТут можна знайти інші цікаві методи повідомлення https://kb.op5.com/display/~osandstrom/2015/02/23/Monitor@Home%3A+Notification+Alternatives#sthash.wIio7wPI.dpbscurl -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/
Коментарі
Дописати коментар