Site Tools


nagios

Быстрый старт

Устанавливаем:

apt-get install nagios3

Проверяем, что доступен:

grep -iRH 'nagios' /etc/apache/
curl localhost/nagios3/

Проверяем, что работают чеки по умолчанию:

firefox http://localhost/cgi-bin/nagios3/status.cgi

Добавить собственный чек

Например, мы написали скрипт для проверки sphinx:

/usr/lib/nagios/plugins/custom/sphinx/check_sphinx

Этот скрипт должен возвращать <status>: (text)

# /usr/lib/nagios/plugins/custom/sphinx/check_sphinx 
OK: Sphinx Engine is Running

# /usr/lib/nagios/plugins/custom/sphinx/check_sphinx 
Critical: Sphinx Engine is not Running: connection to 127.0.0.1:9313 failed (errno=111, msg=Connection refused)

Теперь нам нужно добавить команду в sphinx:

grep -iRH 'define command' /etc/nagios*  # смотрим примеры
vi /etc/nagios3/commands.cfg

define command{
      command_name    check_sphinx
      command_line    /usr/lib/nagios/plugins/custom/sphinx/check_sphinx
}

Теперь добавляем сервис который будет использовать эту команду

grep -iRH 'define service' /etc/nagios*  # смотрим примеры
vi /etc/nagios3/conf.d/services_nagios2.cfg

define service {
      host                            localhost
      service_description             SPHINX
      check_command                   check_sphinx
      use                             generic-service
      notification_interval           0
}

Конечно, должны быть еще сконфигурированы hosts, а возможно и hosts_group, но localhost доступен по умолчанию. Проверяем что конфиг исправен:

nagios3 -v /etc/nagios3/nagios.cfg

Перезагружаем конфиг

/etc/init.d/nagios3 reload

Любуемся результатом:

firefox http://localhost/cgi-bin/nagios3/status.cgi

Имена конфигов не имеют значения, так как они все просто инклюдятся по стандартной практики.

Добавить отправку по SMS

Например у нас есть скрипт /usr/lib/nagios/plugins/custom/send_sms.sh который шлет sms-ки:

# /usr/lib/nagios/plugins/custom/send_sms.sh "ALARM SOME TEXT"

Теперь нам нужно создать команду для nagios:

define command{
      command_name    notifi_by_sms
      command_line    /usr/lib/nagios/plugins/custom/send_sms.sh '$NOTIFICATIONTYPE$ $HOSTALIAS$/$SERVICEDESC$: $SERVICEOUTPUT$'
}

Теперь создает наш контакт, который будет использовать эту команду для оповещения (использует notifi_by_sms):

define contact{
      contact_name                    conovaloff
      alias                           ConConovaloff
      service_notification_period     24x7
      host_notification_period        24x7
      service_notification_options    u,c,r
      host_notification_options       d,r
      service_notification_commands   notify-service-by-email,notifi_by_sms
      host_notification_commands      notify-host-by-email,notifi_by_sms
      email                           constantin@some.com
}

Добавляем этот контакт в группу:

define contactgroup{
      contactgroup_name       admins
      alias                   Nagios Administrators
      members                 conovaloff
}

А эта группа по умолчанию уже используется для оповещения при проблемах с сервисами:

define service{
      name                            generic-service ; The 'name' of this service template
      ...
      contact_groups                  admins
}

Иерархия

hostgroup –> host –> service

Конфиг

  1. define
    1. host
      1. use
      2. host_name
      3. alias
      4. address
    2. service
      1. use
      2. host_name
      3. service_description
      4. check_command
      5. active_checks_enabled
      6. passive_checks_enabled
      7. parallelize_check
      8. obsess_over_service
      9. check_freshness
      10. notifications_enabled
      11. event_handler_enabled
      12. flap_detection_enabled
      13. process_perf_data
      14. retain_status_information
      15. retain_nonstatus_information
      16. register
      17. is_volatile
      18. check_period
      19. max_check_attempts
      20. normal_check_interval
      21. retry_check_interval
      22. notification_interval
      23. notification_period
      24. notification_options
      25. contact_groups
    3. hostgroup
      1. hostgroup_name
      2. alias
      3. members
      4. contact_groups
    4. contact
      1. contact_name
      2. alias
      3. service_notification_period
      4. host_notification_period
      5. service_notification_options
      6. host_notification_options
      7. service_notification_commands
      8. host_notification_commands
      9. email
    5. contactgroup
      1. contactgroup_name
      2. alias
      3. members

host states

  • d = DOWN
  • u = UNREACHABLE
  • r = recoveries (UP states)
  • f = host starts and stops flapping
  • s = scheduled downtime starts and ends.

service states

  • w = WARNING
  • u = UNKNOWN
  • c = CRITICAL
  • r = service recoveries (OK states)
  • f = flapping
  • n = (none)

Глосарий

NRPE – (Nagios Remote Plugin Executor) сервер для удаленных вызовов. То что запускаются на удаленных хостах, для запуска локальных программ проверки.

Discussion

Constantin Conovaloff, 2016/04/27 14:27

Hello world python

#!/usr/bin/env python
 
# optparse is Python 2.3 - 2.6, deprecated in 2.7
# For 2.7+ use http://docs.python.org/library/argparse.html#module-argparse
from optparse import OptionParser
 
# CONSTANTS FOR RETURN CODES UNDERSTOOD BY NAGIOS
# Exit statuses recognized by Nagios
UNKNOWN = -1
OK = 0
WARNING = 1
CRITICAL = 2
 
# TEMPLATE FOR READING PARAMETERS FROM COMMANDLINE
parser = OptionParser()
parser.add_option("-m", "--message", dest="message", 
   default='Hello world', help="A message to print after OK - ")
(options, args) = parser.parse_args()
 
# RETURN OUTPUT TO NAGIOS
# USING THE EXAMPLE -m PARAMETER PARSED FROM COMMANDLINE
print 'OK - %s' % (options.message)
raise SystemExit, OK

Define a command that uses this plugin:

define command {
    command_name    check_hello_world
    command_line    $USER1$/check_hello_world.py -m 'some message'
}

Check a host or service using the command:

define service {
    use         generic-service
    host_name           some-host
    service_description Check using the hello world plugin (always returns OK)
    check_command       check_hello_world
}
Constantin Conovaloff, 2016/04/27 16:08

https://exchange.nagios.org/

Constantin Conovaloff, 2016/04/27 19:08

Проверить, что на странице site.com/en/ есть строка “MYMARKER”

/usr/lib/nagios/plugins/check_http site.com -H site.com -u /en/ --string='MYMARKER'
Constantin Conovaloff, 2016/04/28 13:48

Макросы – забинденные переменные
http://shinken.readthedocs.io/en/latest/05_thebasics/macrolist.html#thebasics-macrolist-usern

You could leave a comment if you were logged in.
nagios.txt · Last modified: 2019/10/19 17:38 (external edit)

Page Tools