bolt Valebyte VPS from $4/mo — NVMe, 60s deploy.

Get a VPS arrow_forward

Як налаштувати сповіщення Nagios на виділеному сервері?

calendar_month November 17, 2025 schedule 11 хв. читання visibility 1045 переглядів
person
Valebyte Team
Як налаштувати сповіщення Nagios на виділеному сервері?
summarize

TL;DR

  • Настройте параметры уведомлений (w,u,c,r) в nagios.cfg для фильтрации типов критических событий.
  • Определите команды notify-service-by-email в файле commands.cfg для автоматической отправки почты.
  • Подключите Telegram или Slack, чтобы оперативно получать уведомления о сбоях в мессенджеры.
  • Настройте эскалацию, чтобы передавать оповещения на новый уровень при отсутствии реакции на инцидент.

Як налаштувати сповіщення Nagios на виділеному сервері?

Nagios – це потужна система моніторингу, яка дозволяє відстежувати стан серверів, сервісів та мережевого обладнання. Однак, щоб Nagios був дійсно корисним, необхідно правильно налаштувати систему сповіщень. Ця стаття надасть докладний посібник з налаштування сповіщень Nagios на виділеному сервері, щоб ви могли оперативно реагувати на будь-які проблеми та мінімізувати час простою. Ми розглянемо різні способи налаштування сповіщень, включаючи використання електронної пошти та SMS, а також інтеграцію з іншими системами.

Зміст:

Налаштування сповіщень електронною поштою

Email notification icon with network elements, representing email alerts from Nagios.

Налаштування сповіщень електронною поштою – один із найпоширеніших і найпростіших способів отримання повідомлень від Nagios. Цей метод дозволяє отримувати докладні звіти про стан ваших серверів та сервісів прямо на електронну пошту. У цьому розділі ми детально розглянемо, як налаштувати відправку email-сповіщень з Nagios, які параметри необхідно враховувати та які поширені проблеми можуть виникнути.

Налаштування параметрів електронної пошти в Nagios

Першим кроком є налаштування параметрів електронної пошти в конфігураційних файлах Nagios. Основні параметри, які необхідно вказати, включають SMTP-сервер, порт, облікові дані (якщо потрібно) та адресу відправника. Ці параметри зазвичай вказуються у файлі /etc/nagios/nagios.cfg. Відкрийте цей файл за допомогою текстового редактора та знайдіть розділ, присвячений налаштуванню електронної пошти.

# grep email /etc/nagios/nagios.cfg
service_notification_options  w,u,c,r,f,s
host_notification_options   d,u,r,f,s
email_notification_options  w,u,c,r,f,s

Переконайтеся, що зазначені вище параметри увімкнено. Вони визначають, за яких подій надсилати повідомлення (наприклад, при попередженні (w), критичній помилці (c), відновленні (r)).

Далі необхідно налаштувати команду для відправки email. Зазвичай використовується команда notify-service-by-email та notify-host-by-email, визначені у файлі /etc/nagios/commands.cfg.

# grep notify-service-by-email /etc/nagios/commands.cfg
define command {
        command_name    notify-service-by-email
        command_line    /usr/bin/printf "%b" "*** Nagios *\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTNAME$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/mail -s " $NOTIFICATIONTYPE$ Service Alert: $HOSTNAME$/$SERVICEDESC$ is $SERVICESTATE$ " $CONTACTEMAIL$
        }

# grep notify-host-by-email /etc/nagios/commands.cfg
define command {
        command_name    notify-host-by-email
        command_line    /usr/bin/printf "%b" "* Nagios *\n\nNotification Type: $NOTIFICATIONTYPE$\n\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$HOSTOUTPUT$\n" | /usr/bin/mail -s " $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
        }

Важливо: Переконайтеся, що у вас встановлено пакет mail або аналогічний, необхідний для надсилання пошти з командного рядка. Наприклад, у Debian/Ubuntu: sudo apt-get install mailutils. У CentOS/RHEL: sudo yum install mailx.

Налаштування контактів для отримання сповіщень

Після налаштування параметрів електронної пошти необхідно визначити контакти, які отримуватимуть сповіщення. Це робиться у файлі /etc/nagios/conf.d/contacts.cfg (або в окремому файлі, зазначеному в nagios.cfg). Необхідно створити визначення контакту, вказавши його ім'я, адресу електронної пошти та інші параметри.

define contact {
        contact_name                    nagiosadmin
        alias                           Nagios Admin
        email                           [email protected]
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r,f,s
        host_notification_options     d,u,r,f,s
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        }

У цьому прикладі ми створили контакт з ім'ям nagiosadmin, вказали адресу електронної пошти [email protected], визначили період отримання повідомлень (24x7) і вказали команди, які будуть використовуватися для надсилання повідомлень електронною поштою.

Порада експерта: Для запобігання переповненню поштової скриньки, розгляньте можливість використання фільтрів у вашій поштовій програмі для автоматичного сортування сповіщень Nagios.

Прив'язка контактів до хостів та сервісів

Останнім кроком є прив'язка створених контактів до хостів та сервісів, для яких ви хочете отримувати сповіщення. Це робиться у визначеннях хостів та сервісів у файлах /etc/nagios/conf.d/hosts.cfg та /etc/nagios/conf.d/services.cfg (або у відповідних файлах, зазначених у nagios.cfg).

define host {
        use                     linux-server
        host_name               webserver1
        alias                   Web Server 1
        address                 192.168.1.100
        contacts                nagiosadmin
        }

define service {
        use                     generic-service
        host_name               webserver1
        service_description     HTTP
        check_command           check_http
        contacts                nagiosadmin
        }

У цих прикладах ми прив'язали контакт nagiosadmin до хосту webserver1 та сервісу HTTP. Тепер, коли стан webserver1 або HTTP зміниться, nagiosadmin отримає повідомлення електронною поштою.

Після внесення змін до конфігураційних файлів Nagios необхідно перезапустити службу Nagios, щоб зміни набули чинності:

sudo systemctl restart nagios

Приклад: Припустимо, ви хочете налаштувати сповіщення для дискового простору на сервері fileserver. Вам необхідно додати сервіс до файлу /etc/nagios/conf.d/services.cfg:

define service {
        use                     generic-service
        host_name               fileserver
        service_description     Disk Space
        check_command           check_disk!20%!10%
        contacts                nagiosadmin
        }

У цьому прикладі ми використовуємо команду check_disk для моніторингу дискового простору. Параметри 20%!10% вказують на рівні попередження та критичної помилки (20% і 10% вільного місця відповідно). Після додавання цього сервісу та перезапуску Nagios, ви будете отримувати повідомлення електронною поштою, коли дисковий простір на fileserver буде наближатися до цих рівнів.

Важливо: Завжди перевіряйте синтаксис конфігураційних файлів Nagios перед перезапуском служби. Це можна зробити за допомогою команди nagios -v /etc/nagios/nagios.cfg. Ця команда перевірить конфігураційні файли на наявність помилок і видасть відповідні повідомлення.

Налаштування сповіщень по SMS

Сповіщення по SMS – це ефективний спосіб отримання повідомлень про критичні проблеми, особливо коли немає доступу до електронної пошти. Налаштування SMS-сповіщень вимагає інтеграції з зовнішнім сервісом SMS-шлюзу. У цьому розділі ми розглянемо різні способи налаштування SMS-сповіщень, включаючи використання безкоштовних і платних сервісів, а також налаштування команд і контактів у Nagios.

Вибір SMS-шлюзу

Першим кроком є вибір відповідного SMS-шлюзу. Існує безліч сервісів, що пропонують послуги SMS-шлюзу, як платних, так і безкоштовних. Платні сервіси зазвичай пропонують більш високу надійність і швидкість доставки повідомлень, а також більш широкі можливості налаштування. Безкоштовні сервіси можуть мати обмеження за кількістю відправлених повідомлень або затримки в доставці.

Деякі популярні SMS-шлюзи:

  • Twilio
  • Nexmo (Vonage)
  • Clickatell
  • TextMagic

Для цілей тестування можна використовувати безкоштовні SMS-шлюзи, але для виробничих систем рекомендується використовувати платні сервіси.

Налаштування команди для відправки SMS

Після вибору SMS-шлюзу необхідно налаштувати команду в Nagios для відправки SMS-повідомлень. Ця команда буде використовувати API обраного SMS-шлюзу для відправки повідомлень. Необхідно створити нову команду в файлі /etc/nagios/commands.cfg.

Приклад: Налаштування команди для відправки SMS через Twilio:

define command {
        command_name    notify-service-by-sms
        command_line    /usr/bin/curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/Messages.json' \
        --data-urlencode 'To=$CONTACTPAGER$' \
        --data-urlencode 'From=+1234567890' \
        --data-urlencode 'Body=Nagios: $NOTIFICATIONTYPE$ - $HOSTNAME$ - $SERVICEDESC$ is $SERVICESTATE$' \
        -u ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:your_auth_token
        }

define command {
        command_name    notify-host-by-sms
        command_line    /usr/bin/curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/Messages.json' \
        --data-urlencode 'To=$CONTACTPAGER$' \
        --data-urlencode 'From=+1234567890' \
        --data-urlencode 'Body=Nagios: $NOTIFICATIONTYPE$ - $HOSTNAME$ is $HOSTSTATE$' \
        -u ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:your_auth_token
        }

У цьому прикладі замініть ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx на ваш Account SID від Twilio, +1234567890 на ваш номер телефону Twilio, а your_auth_token на ваш Auth Token від Twilio. Також переконайтеся, що у вас встановлений пакет curl.

Важливо: Зберігайте ваші облікові дані API в безпечному місці і не публікуйте їх у відкритому доступі.

Налаштування контактів для отримання SMS-сповіщень

Тепер необхідно налаштувати контакти, які будуть отримувати SMS-сповіщення. Це робиться в файлі /etc/nagios/conf.d/contacts.cfg. Необхідно вказати номер телефону контакту в параметрі pager.

define contact {
        contact_name                    admin_sms
        alias                           Admin SMS
        pager                           +79991234567
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r,f,s
        host_notification_options     d,u,r,f,s
        service_notification_commands   notify-service-by-sms
        host_notification_commands      notify-host-by-sms
        }

У цьому прикладі ми створили контакт з ім'ям admin_sms і вказали номер телефону +79991234567. Зверніть увагу, що номер телефону повинен бути вказаний в міжнародному форматі.

Приклад: Якщо ви використовуєте Nexmo, команда для відправки SMS буде виглядати наступним чином:

define command {
        command_name    notify-service-by-sms
        command_line    /usr/bin/curl -d "api_key=YOUR_API_KEY&api_secret=YOUR_API_SECRET&to=$CONTACTPAGER$&from=Nagios&text=Nagios: $NOTIFICATIONTYPE$ - $HOSTNAME$ - $SERVICEDESC$ is $SERVICESTATE$" 'https://rest.nexmo.com/sms/json'
        }

define command {
        command_name    notify-host-by-sms
        command_line    /usr/bin/curl -d "api_key=YOUR_API_KEY&api_secret=YOUR_API_SECRET&to=$CONTACTPAGER$&from=Nagios&text=Nagios: $NOTIFICATIONTYPE$ - $HOSTNAME$ is $HOSTSTATE$" 'https://rest.nexmo.com/sms/json'
        }

Замініть YOUR_API_KEY і YOUR_API_SECRET на ваші облікові дані від Nexmo.

Порада експерта: Використовуйте ліміти відправки SMS, що надаються вашим SMS-шлюзом, щоб уникнути несподіваних витрат.

Прив'язка контактів до хостів і сервісів

Як і у випадку зі сповіщеннями електронною поштою, необхідно прив'язати контакти до хостів і сервісів, для яких ви хочете отримувати SMS-сповіщення. Це робиться у визначеннях хостів і сервісів в файлах /etc/nagios/conf.d/hosts.cfg і /etc/nagios/conf.d/services.cfg.

define host {
        use                     linux-server
        host_name               dbserver
        alias                   Database Server
        address                 192.168.1.101
        contacts                admin_sms
        }

define service {
        use                     generic-service
        host_name               dbserver
        service_description     Database Connection
        check_command           check_tcp!3306
        contacts                admin_sms
        }

Після внесення змін до конфігураційних файлів Nagios необхідно перезапустити службу Nagios:

sudo systemctl restart nagios

Важливо: Протестуйте відправку SMS-сповіщень, щоб переконатися, що вони працюють правильно. Ви можете викликати помилку вручну, щоб згенерувати сповіщення.

Потрібен надійний хостинг для Nagios?

Налаштуйте Nagios без проблем на наших VPS. Ідеально для моніторингу вашого сервера. — from €4.49/mo.

Вибрати VPS →
rocket_launch Quick pick

Looking for a server that just works?

Valebyte VPS — NVMe, 24/7 support, deploy in 60 seconds.

View VPS plans arrow_forward

Інтеграція з Slack і Telegram

Інтеграція Nagios з платформами обміну повідомленнями, такими як Slack і Telegram, дозволяє отримувати повідомлення про проблеми в режимі реального часу безпосередньо у ваші канали зв'язку. Це може значно прискорити процес реагування на інциденти. У цьому розділі ми розглянемо, як налаштувати інтеграцію Nagios зі Slack і Telegram, щоб отримувати сповіщення про стан ваших серверів і сервісів.

Інтеграція зі Slack

Для інтеграції Nagios зі Slack необхідно створити Slack App і налаштувати вхідний webhook. Webhook – це URL, на який Nagios буде відправляти повідомлення у форматі JSON.

Кроки з налаштування інтеграції зі Slack:

  • Створіть Slack App у вашому Slack workspace.
  • Активуйте Incoming Webhooks в налаштуваннях вашого Slack App.
  • Отримайте URL webhook.
  • Налаштуйте команду в Nagios для відправки повідомлень на webhook.

Приклад: Налаштування команди в /etc/nagios/commands.cfg для відправки повідомлень в Slack:

define command {
        command_name    notify-service-by-slack
        command_line    /usr/bin/curl -X POST --data-urlencode "payload={\"channel\": \"#nagios-alerts\", \"username\": \"Nagios\", \"text\": \"*$NOTIFICATIONTYPE* Service Alert: $HOSTNAME$/$SERVICEDESC$ is $SERVICESTATE$ - $SERVICEOUTPUT$\", \"icon_emoji\": \":warning:\"}" YOUR_SLACK_WEBHOOK_URL
        }

define command {
        command_name    notify-host-by-slack
        command_line    /usr/bin/curl -X POST --data-urlencode "payload={\"channel\": \"#nagios-alerts\", \"username\": \"Nagios\", \"text\": \"*$NOTIFICATIONTYPE* Host Alert: $HOSTNAME$ is $HOSTSTATE$ - $HOSTOUTPUT$\", \"icon_emoji\": \":warning:\"}" YOUR_SLACK_WEBHOOK_URL
        }

Замініть YOUR_SLACK_WEBHOOK_URL на URL webhook, отриманий при налаштуванні Slack App. Параметр channel визначає канал, в який будуть відправлятися повідомлення. Параметр icon_emoji визначає емодзі, який буде відображатися поруч із повідомленням.

Далі, налаштуйте контакти в /etc/nagios/conf.d/contacts.cfg, вказавши команди для відправки повідомлень в Slack:

define contact {
        contact_name                    admin_slack
        alias                           Admin Slack
        email                           [email protected]
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r,f,s
        host_notification_options     d,u,r,f,s
        service_notification_commands   notify-service-by-slack
        host_notification_commands      notify-host-by-slack
        }

Нарешті, прив'яжіть контакт admin_slack до хостів і сервісів, для яких ви хочете отримувати повідомлення в Slack.

Важливо: Slack вимагає, щоб URL webhook був захищений протоколом HTTPS. Переконайтеся, що ваш сервер налаштований для використання HTTPS.

Інтеграція з Telegram

Для інтеграції Nagios з Telegram необхідно створити Telegram Bot і отримати його API Token і Chat ID. API Token – це унікальний ідентифікатор вашого бота, а Chat ID – це ідентифікатор чату, в який будуть відправлятися повідомлення.

Кроки з налаштування інтеграції з Telegram:

  • Створіть Telegram Bot, використовуючи BotFather в Telegram.
  • Отримайте API Token вашого бота.
  • Отримайте Chat ID чату, в який ви хочете відправляти повідомлення.
  • Налаштуйте команду в Nagios для відправки повідомлень через API Telegram.

Приклад: Налаштування команди в /etc/nagios/commands.cfg для відправки повідомлень в Telegram:

define command {
        command_name    notify-service-by-telegram
        command_line    /usr/bin/curl -s -X POST "https://api.telegram.org/botYOUR_TELEGRAM_BOT_TOKEN/sendMessage" -d "chat_id=YOUR_TELEGRAM_CHAT_ID&text=*$NOTIFICATIONTYPE*%20Service%20Alert:%20$HOSTNAME$/$SERVICEDESC$%20is%20$SERVICESTATE$%20-%20$SERVICEOUTPUT$"
        }

define command {
        command_name    notify-host-by-telegram
        command_line    /usr/bin/curl -s -X POST "https://api.telegram.org/botYOUR_TELEGRAM_BOT_TOKEN/sendMessage" -d "chat_id=YOUR_TELEGRAM_CHAT_ID&text=*$NOTIFICATIONTYPE*%20Host%20Alert:%20$HOSTNAME$%20is%20$HOSTSTATE$%20-%20$HOSTOUTPUT$"
        }

Замініть YOUR_TELEGRAM_BOT_TOKEN на API Token вашого бота, а YOUR_TELEGRAM_CHAT_ID на Chat ID чату. Символи %20 використовуються для кодування пробілів в URL.

Далі, налаштуйте контакти в /etc/nagios/conf.d/contacts.cfg, вказавши команди для відправки повідомлень в Telegram:

define contact {
        contact_name                    admin_telegram
        alias                           Admin Telegram
        email                           [email protected]
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r,f,s
        host_notification_options     d,u,r,f,s
        service_notification_commands   notify-service-by-telegram
        host_notification_commands      notify-host-by-telegram
        }

Нарешті, прив'яжіть контакт admin_telegram до хостів і сервісів, для яких ви хочете отримувати повідомлення в Telegram.

Приклад: Якщо ви хочете відправляти повідомлення в Telegram у форматі Markdown, використовуйте параметр parse_mode=Markdown в запиті:

define command {
        command_name    notify-service-by-telegram
        command_line    /usr/bin/curl -s -X POST "https://api.telegram.org/botYOUR_TELEGRAM_BOT_TOKEN/sendMessage" -d "chat_id=YOUR_TELEGRAM_CHAT_ID&text=*$NOTIFICATIONTYPE*%20Service%20Alert:%20$HOSTNAME$/$SERVICEDESC$%20is%20$SERVICESTATE$%20-%20$SERVICEOUTPUT$&parse_mode=Markdown"
        }

Порада експерта: Використовуйте різні канали або чати для різних типів повідомлень, щоб полегшити фільтрацію і пріоритизацію.

Порівняння способів оповіщення:

Спосіб оповіщенняПеревагиНедоліки
EmailДетальна інформація, простота налаштуванняЗатримка в доставці, може бути пропущено
SMSШвидка доставка, надійністьОбмежений розмір повідомлення, вартість
Slack/TelegramМиттєві повідомлення, спільна роботаПотрібне підключення до інтернету, може бути відволіканням

Налаштування ескалації сповіщень

Ескалація сповіщень – це механізм, що дозволяє відправляти повідомлення різним групам людей в залежності від серйозності проблеми і часу, що минув з моменту її виявлення. Це забезпечує, що критичні проблеми не будуть проігноровані і будуть вирішені в найкоротші терміни. У цьому розділі ми розглянемо, як налаштувати ескалацію сповіщень в Nagios, щоб повідомлення відправлялися різним контактам або групам контактів в залежності від різних умов.

Визначення періодів сповіщень

Першим кроком в налаштуванні ескалації сповіщень є визначення періодів сповіщень. Періоди сповіщень визначають, в який час доби і в які дні тижня повідомлення повинні бути відправлені. Це дозволяє уникнути відправки повідомлень в неробочий час, якщо це не є необхідним.

Періоди сповіщень визначаються в файлі /etc/nagios/conf.d/timeperiods.cfg (або в окремому файлі, зазначеному в nagios.cfg).

define timeperiod {
timeperiod_name 24x7 alias 24 Hours A Day, 7 Days A Week use generic-timeperiod start_time 00:00 end_time 24:00 } define timeperiod { timeperiod_name workhours alias Work Hours use generic-timeperiod monday 09:00-18:00 tuesday 09:00-18:00 wednesday 09:00-18:00 thursday 09:00-18:00 friday 09:00-18:00 }

У цьому прикладі ми визначили два періоди сповіщень: 24x7 (цілодобово) та workhours (робочий час з понеділка по п'ятницю).

Визначення груп контактів

Наступним кроком є визначення груп контактів. Групи контактів дозволяють об'єднувати кілька контактів в одну групу, щоб спростити управління сповіщеннями. Це корисно, коли необхідно відправити повідомлення декільком людям одночасно.

Групи контактів визначаються у файлі /etc/nagios/conf.d/contacts.cfg.

define contactgroup {
        contactgroup_name   admins
        alias               Nagios Administrators
        members             nagiosadmin, admin_sms, admin_telegram
        }

define contactgroup {
        contactgroup_name   developers
        alias               Developers Team
        members             developer1, developer2
        }

У цьому прикладі ми визначили дві групи контактів: admins (адміністратори) та developers (розробники). Група admins включає контакти nagiosadmin, admin_sms та admin_telegram, а група developers включає контакти developer1 та developer2.

Налаштування ескалації для хостів та сервісів

Тепер необхідно налаштувати ескалацію для хостів та сервісів. Це робиться у визначеннях хостів та сервісів у файлах /etc/nagios/conf.d/hosts.cfg та /etc/nagios/conf.d/services.cfg. Для налаштування ескалації використовуються параметри notification_interval, first_notification_delay, notification_period та contacts/contact_groups.

Приклад: Налаштування ескалації для хоста:

define host {
        use                     linux-server
        host_name               important_server
        alias                   Important

Готові до повного контролю над Nagios?

Отримайте максимальну продуктивність та безпеку для Nagios з нашими виділеними серверами. Повне налаштування під ваші потреби.

Вибрати сервер →
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.