Мониторинг серверов · 6 min read · Oct 18, 2025
Мониторинг сервера с Icinga на Debian Squeeze - Страница 2
3 Настройка Icinga
server1.example.com:
Основной файл конфигурации Icinga - это /etc/icinga/icinga.cfg, дополнительные конфигурации хранятся в /etc/icinga/commands.cfg и /etc/icinga/resource.cfg. Обычно стандартная конфигурация подходит, поэтому вам не нужно изменять эти файлы.
Первое, что вы должны изменить, это контактные данные в /etc/icinga/objects/contacts_icinga.cfg, чтобы уведомления отправлялись на правильный адрес электронной почты:
vi /etc/icinga/objects/contacts_icinga.cfg| [...] define contact{ contact_name root alias Falko Timme 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-email host_notification_commands notify-host-by-email email [email protected] } [...] |
Проверки сервиса для localhost (= server1.example.com) определены в /etc/icinga/objects/localhost_icinga.cfg - взгляните на этот файл:
cat /etc/icinga/objects/localhost_icinga.cfg| # Простой файл конфигурации для мониторинга локального хоста # Это может служить примером для настройки других серверов; # Пользовательские сервисы, специфичные для этого хоста, добавляются здесь, но сервисы # определенные в icinga-common_services.cfg также могут применяться. # define host{ use generic-host ; Имя шаблона хоста для использования host_name localhost alias localhost address 127.0.0.1 } # Определите сервис для проверки дискового пространства корневого раздела # на локальной машине. Предупреждение, если < 20% свободно, критично, если # < 10% свободного места на разделе. define service{ use generic-service ; Имя шаблона сервиса для использования host_name localhost service_description Disk Space check_command check_all_disks!20%!10% } # Определите сервис для проверки количества текущих пользователей, # вошедших в систему на локальной машине. Предупреждение, если > 20 пользователей, критично # если > 50 пользователей. define service{ use generic-service ; Имя шаблона сервиса для использования host_name localhost service_description Current Users check_command check_users!20!50 } # Определите сервис для проверки количества текущих процессов, # запущенных на локальной машине. Предупреждение, если > 250 процессов, критично, если # > 400 процессов. define service{ use generic-service ; Имя шаблона сервиса для использования host_name localhost service_description Total Processes check_command check_procs!250!400 } # Определите сервис для проверки нагрузки на локальной машине. define service{ use generic-service ; Имя шаблона сервиса для использования host_name localhost service_description Current Load check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0 } |
Команды check_command (например, check_all_disks) определены в конфигурационных файлах плагинов Nagios в директории /etc/nagios-plugins/config:
ls -l /etc/nagios-plugins/configroot@server1:~# ls -l /etc/nagios-plugins/config
total 144
-rw-r--r-- 1 root root 277 May 23 04:55 apt.cfg
-rw-r--r-- 1 root root 182 May 23 04:55 breeze.cfg
-rw-r--r-- 1 root root 458 May 23 04:55 dhcp.cfg
-rw-r--r-- 1 root root 909 May 23 04:55 disk.cfg
-rw-r--r-- 1 root root 1722 May 23 04:55 disk-smb.cfg
-rw-r--r-- 1 root root 321 May 23 04:55 dns.cfg
-rw-r--r-- 1 root root 673 May 23 04:55 dummy.cfg
-rw-r--r-- 1 root root 146 May 23 04:55 flexlm.cfg
-rw-r--r-- 1 root root 159 May 23 04:55 fping.cfg
-rw-r--r-- 1 root root 414 May 23 04:55 ftp.cfg
-rw-r--r-- 1 root root 320 May 23 04:55 games.cfg
-rw-r--r-- 1 root root 157 May 23 04:55 hppjd.cfg
-rw-r--r-- 1 root root 3579 May 23 04:55 http.cfg
-rw-r--r-- 1 root root 818 May 23 04:55 ifstatus.cfg
-rw-r--r-- 1 root root 748 May 23 04:55 ldap.cfg
-rw-r--r-- 1 root root 195 May 23 04:55 load.cfg
-rw-r--r-- 1 root root 2062 May 23 04:55 mail.cfg
-rw-r--r-- 1 root root 708 May 23 04:55 mailq.cfg
-rw-r--r-- 1 root root 385 May 23 04:55 mrtg.cfg
-rw-r--r-- 1 root root 567 May 23 04:55 mysql.cfg
-rw-r--r-- 1 root root 2355 May 23 04:55 netware.cfg
-rw-r--r-- 1 root root 420 May 23 04:55 news.cfg
-rw-r--r-- 1 root root 491 May 23 04:55 nt.cfg
-rw-r--r-- 1 root root 466 May 23 04:55 ntp.cfg
-rw-r--r-- 1 root root 426 May 23 04:55 pgsql.cfg
-rw-r--r-- 1 root root 2026 May 23 04:55 ping.cfg
-rw-r--r-- 1 root root 511 May 23 04:55 procs.cfg
-rw-r--r-- 1 root root 240 May 23 04:55 radius.cfg
-rw-r--r-- 1 root root 397 May 23 04:55 real.cfg
-rw-r--r-- 1 root root 315 May 23 04:55 rpc-nfs.cfg
-rw-r--r-- 1 root root 5550 May 23 04:55 snmp.cfg
-rw-r--r-- 1 root root 753 May 23 04:55 ssh.cfg
-rw-r--r-- 1 root root 784 May 23 04:55 tcp_udp.cfg
-rw-r--r-- 1 root root 438 May 23 04:55 telnet.cfg
-rw-r--r-- 1 root root 155 May 23 04:55 users.cfg
root@server1:~#Давайте посмотрим на файл /etc/nagios-plugins/config/disk.cfg:
cat /etc/nagios-plugins/config/disk.cfg| # Определение команды 'check_disk' define command{ command_name check_disk command_line /usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e -p '$ARG3$' } # Определение команды 'check_all_disks' define command{ command_name check_all_disks command_line /usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e } # Определение команды 'ssh_disk' define command{ command_name ssh_disk command_line /usr/lib/nagios/plugins/check_by_ssh -H '$HOSTADDRESS$' -C "/usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e -p '$ARG3$'" } #### # используйте эти проверки, если хотите протестировать IPv4 соединение на системах с включенным IPv6 #### # Определение команды 'ssh_disk_4' define command{ command_name ssh_disk_4 command_line /usr/lib/nagios/plugins/check_by_ssh -H '$HOSTADDRESS$' -C "/usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e -p '$ARG3$'" -4 } |
Как вы видите, команда check_all_disks определена как /usr/lib/nagios/plugins/check_disk -w ‘$ARG1$’ -c ‘$ARG2$’ -e. Если вы снова посмотрите на файл /etc/icinga/objects/localhost_icinga.cfg, вы увидите, что у нас есть строка check_command check_all_disks!20%!10% в ней. Icinga позволяет нам передавать аргументы командной строки для проверок сервиса, разделяя их восклицательным знаком (!), так что check_command check_all_disks!20%!10% означает, что мы передаем 20% в качестве первого аргумента командной строки и 10% в качестве второго аргумента к команде /usr/lib/nagios/plugins/check_disk -w ‘$ARG1$’ -c ‘$ARG2$’ -e, так что это в конечном итоге переводится в /usr/lib/nagios/plugins/check_disk -w ‘20%’ -c ‘10%’ -e.
Если вы хотите передать аргумент командной строки, который содержит восклицательный знак, вы должны экранировать восклицательный знак обратным слэшем: !
Плагины Nagios (т.е. инструменты, которые Icinga использует для выполнения проверок) находятся в директории /usr/lib/nagios/plugins:
ls -l /usr/lib/nagios/pluginsroot@server1:~# ls -l /usr/lib/nagios/plugins
total 2476
-rwxr-xr-x 1 root root 106120 May 23 04:55 check_apt
-rwxr-xr-x 1 root root 5369 May 23 04:55 check_bgpstate
-rwxr-xr-x 1 root root 2242 May 23 04:55 check_breeze
-rwxr-xr-x 1 root root 46192 May 23 04:55 check_by_ssh
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_clamd -> check_tcp
-rwxr-xr-x 1 root root 32072 May 23 04:55 check_cluster
-rwxr-xr-x 1 root root 44816 May 23 04:55 check_dhcp
-rwxr-xr-x 1 root root 41392 May 23 04:55 check_dig
-rwxr-xr-x 1 root root 119216 May 23 04:55 check_disk
-rwxr-xr-x 1 root root 8726 May 23 04:55 check_disk_smb
-rwxr-xr-x 1 root root 45488 May 23 04:55 check_dns
-rwxr-xr-x 1 root root 28968 May 23 04:55 check_dummy
-rwxr-xr-x 1 root root 3053 May 23 04:55 check_file_age
-rwxr-xr-x 1 root root 6315 May 23 04:55 check_flexlm
-rwxr-xr-x 1 root root 44656 May 23 04:55 check_fping
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_ftp -> check_tcp
-rwxr-xr-x 1 root root 36584 May 23 04:55 check_game
lrwxrwxrwx 1 root root 10 Aug 23 12:14 check_host -> check_icmp
-rwxr-xr-x 1 root root 41136 May 23 04:55 check_hpjd
-rwxr-xr-x 1 root root 164624 May 23 04:55 check_http
-rwxr-xr-x 1 root root 49264 May 23 04:55 check_icmp
-rwxr-xr-x 1 root root 34536 May 23 04:55 check_ide_smart
-rwxr-xr-x 1 root root 15134 May 23 04:55 check_ifoperstatus
-rwxr-xr-x 1 root root 12598 May 23 04:55 check_ifstatus
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_imap -> check_tcp
-rwxr-xr-x 1 root root 6887 May 23 04:55 check_ircd
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_jabber -> check_tcp
-rwxr-xr-x 1 root root 40816 May 23 04:55 check_ldap
lrwxrwxrwx 1 root root 10 Aug 23 12:14 check_ldaps -> check_ldap
-rwxr-xr-x 1 root root 3407 May 23 04:55 check_linux_raid
-rwxr-xr-x 1 root root 36168 May 23 04:55 check_load
-rwxr-xr-x 1 root root 6026 May 23 04:55 check_log
-rwxr-xr-x 1 root root 20284 May 23 04:55 check_mailq
-rwxr-xr-x 1 root root 36264 May 23 04:55 check_mrtg
-rwxr-xr-x 1 root root 34440 May 23 04:55 check_mrtgtraf
-rwxr-xr-x 1 root root 45936 May 23 04:55 check_mysql
-rwxr-xr-x 1 root root 44688 May 23 04:55 check_mysql_query
-rwxr-xr-x 1 root root 36616 May 23 04:55 check_nagios
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_nntp -> check_tcp
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_nntps -> check_tcp
-rwxr-xr-x 1 root root 48720 May 23 04:55 check_nt
-rwxr-xr-x 1 root root 46288 May 23 04:55 check_ntp
-rwxr-xr-x 1 root root 44880 May 23 04:55 check_ntp_peer
-rwxr-xr-x 1 root root 42224 May 23 04:55 check_ntp_time
-rwxr-xr-x 1 root root 60912 May 23 04:55 check_nwstat
-rwxr-xr-x 1 root root 8326 May 23 04:55 check_oracle
-rwxr-xr-x 1 root root 40400 May 23 04:55 check_overcr
-rwxr-xr-x 1 root root 40656 May 23 04:55 check_pgsql
-rwxr-xr-x 1 root root 48848 May 23 04:55 check_ping
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_pop -> check_tcp
-rwxr-xr-x 1 root root 114640 May 23 04:55 check_procs
-rwxr-xr-x 1 root root 40624 May 23 04:55 check_radius
-rwxr-xr-x 1 root root 40464 May 23 04:55 check_real
-rwxr-xr-x 1 root root 9581 May 23 04:55 check_rpc
lrwxrwxrwx 1 root root 10 Aug 23 12:14 check_rta_multi -> check_icmp
-rwxr-xr-x 1 root root 1137 May 23 04:55 check_sensors
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_simap -> check_tcp
-rwxr-xr-x 1 root root 127216 May 23 04:55 check_smtp
-rwxr-xr-x 1 root root 152008 May 23 04:55 check_snmp
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_spop -> check_tcp
-rwxr-xr-x 1 root root 36688 May 23 04:55 check_ssh
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_ssmtp -> check_tcp
-rwxr-xr-x 1 root root 37832 May 23 04:55 check_swap
-rwxr-xr-x 1 root root 49328 May 23 04:55 check_tcp
-rwxr-xr-x 1 root root 38128 May 23 04:55 check_time
lrwxrwxrwx 1 root root 9 Aug 23 12:14 check_udp -> check_tcp
-rwxr-xr-x 1 root root 44560 May 23 04:55 check_ups
-rwxr-xr-x 1 root root 36168 May 23 04:55 check_users
-rwxr-xr-x 1 root root 2936 May 23 04:55 check_wave
-rwxr-xr-x 1 root root 38152 May 23 04:55 negate
-rwxr-xr-x 1 root root 36104 May 23 04:55 urlize
-rw-r--r-- 1 root root 1938 May 23 04:55 utils.pm
-rwxr-xr-x 1 root root 862 May 23 04:55 utils.sh
root@server1:~#Чтобы узнать, какие аргументы командной строки может принимать плагин, вызовите этот плагин с переключателем –help. Например, чтобы узнать, как можно использовать плагин check_disk, выполните
/usr/lib/nagios/plugins/check_disk --helpС этими знаниями вы можете изменить проверки сервиса в /etc/icinga/objects/localhost_icinga.cfg по своему усмотрению, и вы можете добавлять/изменять конфигурации плагинов в директории /etc/nagios-plugins/config.
Теперь предположим, что мы хотим добавить проверку сервиса для MySQL, сначала взглянем на соответствующую конфигурацию плагина:
cat /etc/nagios-plugins/config/mysql.cfg| # Определение команды 'check_mysql' define command{ command_name check_mysql command_line /usr/lib/nagios/plugins/check_mysql -H '$HOSTADDRESS$' } # Определение команды 'check_mysql_cmdlinecred' define command{ command_name check_mysql_cmdlinecred command_line /usr/lib/nagios/plugins/check_mysql -H '$HOSTADDRESS$' -u '$ARG1$' -p '$ARG2$' } # Определение команды 'check_mysql_database' define command{ command_name check_mysql_database command_line /usr/lib/nagios/plugins/check_mysql -d '$ARG3$' -H '$HOSTADDRESS$' -u '$ARG1$' -p '$ARG2$' } |
Команду, которую я хочу использовать, это check_mysql_cmdlinecred - она принимает имя пользователя MySQL и пароль в качестве аргументов (помимо адреса хоста, который берется из параметра host_name определения проверки сервиса). Я хочу использовать пользователя MySQL nagios с паролем howtoforge, поэтому я добавляю следующий раздел в /etc/icinga/objects/localhost_icinga.cfg:
vi /etc/icinga/objects/localhost_icinga.cfg| [...] define service{ use generic-service host_name localhost service_description MySQL check_command check_mysql_cmdlinecred!nagios!howtoforge } |
Перед тем как перезапустить Icinga, мы должны создать пользователя MySQL nagios с паролем howtoforge:
mysql -u root -pGRANT USAGE ON *.* TO nagios@localhost IDENTIFIED BY 'howtoforge';
GRANT USAGE ON *.* TO [email protected] IDENTIFIED BY 'howtoforge';
FLUSH PRIVILEGES;quit;(Привилегия USAGE является синонимом “без привилегий”, т.е. пользователь nagios может подключаться к MySQL, но не может изменять или читать какие-либо данные.)
Теперь мы перезапускаем Icinga, чтобы наши изменения вступили в силу:
/etc/init.d/icinga restartЕсли вы сейчас проверите сервисы localhost в веб-интерфейсе Icinga, вы должны увидеть, что проверка для MySQL была добавлена:

Аналогично, мы можем добавить проверки для SMTP, POP3 и IMAP - это просто проверки соединения, поэтому нам не нужны аргументы:
vi /etc/icinga/objects/localhost_icinga.cfg| [...] define service{ use generic-service host_name localhost service_description SMTP check_command check_smtp } define service{ use generic-service host_name localhost service_description POP3 check_command check_pop } define service{ use generic-service host_name localhost service_description IMAP check_command check_imap } |
Перезапустите Icinga…
/etc/init.d/icinga restart… и через несколько мгновений вы должны увидеть новые проверки в веб-интерфейсе Icinga:

Вы могли заметить проверки SSH и HTTP для localhost, которые не определены в /etc/icinga/objects/localhost_icinga.cfg. Они определены в группах хостов в файле /etc/icinga/objects/hostgroups_icinga.cfg. Группа хостов позволяет нам выполнять проверку сервиса для нескольких серверов и определять ее только один раз. Взгляните на этот файл:
cat /etc/icinga/objects/hostgroups_icinga.cfg| # Некоторые определения групп хостов # Простая группа хостов с подстановочным знаком define hostgroup { hostgroup_name all alias Все серверы members * } # Список ваших серверов Debian GNU/Linux define hostgroup { hostgroup_name debian-servers alias Серверы Debian GNU/Linux members localhost } # Список ваших веб-серверов define hostgroup { hostgroup_name http-servers alias HTTP серверы members localhost } # Список ваших серверов с доступом по ssh define hostgroup { hostgroup_name ssh-servers alias SSH серверы members localhost } |
Как вы видите, у нас есть группа хостов под названием http-servers и группа хостов под названием ssh-servers, и localhost является членом каждой из этих групп. Проверки сервиса для групп хостов определены в /etc/icinga/objects/services_icinga.cfg. Этот файл содержит проверки сервиса и ссылается на группы хостов, к которым эти проверки должны применяться, используя параметр hostgroup_name:
cat /etc/icinga/objects/services_icinga.cfg| # проверьте, что веб-сервисы работают define service { hostgroup_name http-servers service_description HTTP check_command check_http use generic-service notification_interval 0 ; установите > 0, если хотите, чтобы вас уведомили снова } # проверьте, что ssh-сервисы работают define service { hostgroup_name ssh-servers service_description SSH check_command check_ssh use generic-service notification_interval 0 ; установите > 0, если хотите, чтобы вас уведомили снова } |
Как вы видите, проверки сервиса SSH и HTTP определены здесь.
Get new posts in your inbox
No spam. Unsubscribe anytime.