00-tech-book
.pdf#NOTIFICATIONS OPTION
#Уведомлять когда хост или сервис стартуют первый раз ?
#1 — да, 0 — нет
enable_notifications=1
#EVENT HANDLER USE OPTION
#Запускать ли event handler для только что запущенного хоста или сервиса
#1 — запускать, 0 — не запускать
enable_event_handlers=1
#PROCESS PERFORMANCE DATA OPTION
#Обрабатывать ли информацию о производительности полученную от хостов и
#сервисов. Информация может содержать в себе задержку в проверке (разницу
#с запланированной проверкой), сколько проверка заняла времени и т.д.
#Проверка производительности осуществляется командами
#host_perfdata_command (о ней ниже) и service_perfdata_command (о ней ниже).
#1 — обрабатывать данные о производительности, 0 — не обрабатывать
process_performance_data=0
#HOST AND SERVICE PERFORMANCE DATA PROCESSING COMMANDS
#Команды запускаются после того, как проверка хостов и сервисов
#завершится. Команды выполняются только если enable_performance_data
#равняется 1. Командный аргумент — короткое имя команды которое указано в
#host configuration file
#host_perfdata_command=process-host-perfdata #service_perfdata_command=process-service-perfdata
#HOST AND SERVICE PERFORMANCE DATA FILES
#Файлы в которые сохраняется информация о производительности хостов и
#сервисов. Должна быть включена опция enable_performance_data
#host_perfdata_file=/tmp/host-perfdata #service_perfdata_file=/tmp/service-perfdata
#HOST AND SERVICE PERFORMANCE DATA FILE TEMPLATES
#Шаблон для файлов содержащих информацию о производительности. Здесь
#описаны правила по которым нужно писать информацию в файлы. Шаблоны
#могут содержать макросы, специальные символы (\t — табуляция, \r —
#перевод каретки, \n — новая строка) и обычный текст. Новая строка
#автоматически добавляется после каждой записи в файл. Пара примеров дана
#ниже.
#host_perfdata_file_template=[HOSTPERFDATA]\t$TIMET$\t$HOSTNAME$\t
Модуль 12. Система мониторинга Nagios. |
|
161 |
|
|
|
|
|
#$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$
#service_perfdata_file_template=[SERVICEPERFDATA]\t$TIMET$\t
#$HOSTNAME$\t$SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t
#$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$
#HOST AND SERVICE PERFORMANCE DATA FILE MODES
#Режим работы с файлами
#a — append (дописывать в файл), w — write (записывать). Режим по
#умолчанию вполне всем хорош.
#host_perfdata_file_mode=a
#service_perfdata_file_mode=a
#HOST AND SERVICE PERFORMANCE DATA FILE PROCESSING #INTERVAL
#Как часто обрабатывать performance files командами которых указаны ниже.
#Значение указывается в секундах. 0 означает что обрабатывать не нужно.
#host_perfdata_file_processing_interval=0
#service_perfdata_file_processing_interval=0
#HOST AND SERVICE PERFORMANCE DATA FILE PROCESSING #COMMANDS
#Используемые команды для обработки performance data files
#host_perfdata_file_processing_command=process-host-perfdata-file
#service_perfdata_file_processing_command=process-service-perfdata-file
#OBSESS OVER SERVICE CHECKS OPTION
#Если не планируется система распределенного мониторинга то опцию лучше
#не включать
obsess_over_services=0
#OBSESSIVE COMPULSIVE SERVICE PROCESSOR COMMAND
#Команда запускаемая для каждого сервиса. Работает только если
#obsess_over_services равняется 1
#ocsp_command=somecommand
#ORPHANED SERVICE CHECK OPTION
#Опция призвана решать редкую проблему, когда сервис не может быть
#перезапущен.
check_for_orphaned_services=1
#SERVICE FRESHNESS CHECK OPTION
#Проверять ли «свежесть» сервисов, это полезно при пассивных проверках
|
162 |
|
Модуль 12. Система мониторинга Nagios. |
|
|
|
|
#когда нужно убедится что информация о сервисах поступает с нормальной
#переодичностью.
#1 — включить проверку, 0 — отключить
check_service_freshness=1
# SERVICE FRESHNESS CHECK INTERVAL
#Интервал проверки «свежести» сервисов в секундах. service_freshness_check_interval=60
#HOST FRESHNESS CHECK OPTION
#Проверять ли «свежесть» хостов, это полезно при пассивных проверках
#когда нужно убедится что информация о хостах поступает с нормальной
#переодичностью.
#1 — включить проверку, 0 — отключить
check_host_freshness=0
# HOST FRESHNESS CHECK INTERVAL
#Интервал проверки «свежести» хостов в секундах. host_freshness_check_interval=60
#AGGREGATED STATUS UPDATES
#Объединять обновления хостов, сервисов и данные состояния программ или
#нет. Обычно результаты обновляются моментально, что может создать
#большую нагрузку на сервер мониторинга.
#1 — включить объединение результатов, 0 — не включать
aggregate_status_updates=1
#AGGREGATED STATUS UPDATE INTERVAL
#Интервал в секундах объединенного обновления статуса хостов и сервисов
status_update_interval=15
#FLAP DETECTION OPTION
#Влючать или нет обнаружение частой смены состояния хоста или сервиса.
#1 — включить, 0 — выключить
enable_flap_detection=0
#FLAP DETECTION THRESHOLDS FOR HOSTS AND SERVICES
#Пороговые значения для flapping`а
#Подробнее про это написано здесь - #http://nagios.sourceforge.net/docs/2_0/flapping.html
Модуль 12. Система мониторинга Nagios. |
|
163 |
|
|
|
low_service_flap_threshold=5.0 high_service_flap_threshold=20.0 low_host_flap_threshold=5.0 high_host_flap_threshold=20.0
#DATE FORMAT OPTION
#Формам отображения даты
|
|
|
# |
us |
(MM-DD-YYYY HH:MM:SS) |
#euro (DD-MM-YYYY HH:MM:SS)
|
|
|
# |
iso8601 |
(YYYY-MM-DD HH:MM:SS) |
#strict-iso8601 (YYYY-MM-DDTHH:MM:SS)
date_format=euro
#P1.PL FILE LOCATION
#Путь к скрипту p1.pl который используется встроенными Perl интерпретатором
p1_file=/usr/sbin/p1.pl
#ILLEGAL OBJECT NAME CHARACTERS
#Здесь можно указать символы которые не могут быть использованы в
#название хостов, описание сервисов или в название других типах объектов
illegal_object_name_chars=`~!$%^&*|’”<>?,()=
#ILLEGAL MACRO OUTPUT CHARACTERS
#Здесь можно указать символы которые будут убраны из макросов до того как
#будут использованы в уведомлениях и т.д. Это не распространяется на макросы
#используемые в командах проверки хостов и сервисов
illegal_macro_output_chars=`~$&|’”<>
#REGULAR EXPRESSION MATCHING
#Использовать регулярные выражения или нет
#1 — включить, 0 — выключить
use_regexp_matching=0
#“TRUE” REGULAR EXPRESSION MATCHING
#Опция используется только если use_regexp_matching равняется 1. При
#отключенной опции совпадение происходит только на основание маски (*
#и ?), при включенной это происходит всегда, что может раздражать.
#0 — отключить, 1 — включить
use_true_regexp_matching=0
# ADMINISTRATOR EMAIL ADDRESS
|
164 |
|
Модуль 12. Система мониторинга Nagios. |
|
|
|
|
# Почтовый адрес администратора этого сервера
admin_email=nagios
#ADMINISTRATOR PAGER NUMBER/ADDRESS
#Номер пейджера администратора этого сервера. Определенно устаревшая опция.
admin_pager=pagenagios
#DAEMON CORE DUMP OPTION
#Разрешать создавать core dump или нет. Может использоваться для отладки.
#1 — разрешать создавать, 0 — не разрешать
daemon_dumps_core=0
Конфигурационный файл /etc/nagios/private/resource.cfg
#RESOURCE.CFG - Sample Resource File for Nagios 2.12
#Этот файл содержит различные макросы, CGI-программы будут обращаться
#именно к ним а не к этому файлу напрямую. Поэтому здесь можно
#использовать все возвожные пароли и логины и не бояться утечки информации.
#Макрос $USER1$ будет содержать путь к плагинам
$USER1$=/usr/lib/nagios/plugins
#Макрос $USER2$ будет содержать путь к event handlers
#$USER2$=/usr/lib/nagios/plugins/eventhandlers
#Store some usernames and passwords (hidden from the CGIs)
#$USER3$=someuser
#$USER4$=somepassword
#service httpd start
#service nagios start
Собственно все. Теперь у нас есть полнофункциональный сервер мониторинга. В файлы конфигурации можете внести изменения по своему вкусу, но опции по умолчанию вполне нормальные. Пока в нашей системе мониторинга только localhost. Допустим появилась необходимость добавить
на мониторинг еще один сервер, сделать это очень легко и сейчас я это продемонстрирую.
Модуль 12. Система мониторинга Nagios. |
|
165 |
|
|
|
Добавление хостов и сервисов на мониторинг
Есть linux-сервер с IP 192.168.146.135 и на нем работает веб-сервер,
DHCP-сервер и SMTP-сервер.
Добавим проверку этих трех служб и обычную доступность сервера
Мне повезло, все нужные мне плагины поставляются с Nagios и их не пришлось искать в Интернет
Добавляем в файл /etc/nagios/localhost.cfg
#Чтобы поставить на мониторинг новый сервер необходимо описать секцию
#host с его участием. Здесь указываем какой шаблон настроек будем
#использовать, хостнейм который должен резолвится с помощью DNS или
#быть указанным в /etc/hosts, альяс и IP-адрес сервера
|
|
|
|
|
|
|
define host{ |
|
|
|
|||
|
|
|
|
|
|
|
|
|
use |
|
linux-server |
||
|
|
|
|
|
||
|
|
host_name |
mylinuxbox |
|||
|
|
|
|
|
||
|
|
alias |
mylinuxbox |
|
|
|
|
|
|
|
|
||
|
|
address |
192.168.146.13 |
5 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#А теперь опишим сервисы которые хотим поставить на мониторинг на этом
#сервере
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
define service{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
use |
|
local-service |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
host_name |
mylinuxbox |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
service_description |
PING |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
check_command |
check |
_ping!100.0,10%!200.0,60% |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
define service{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
use |
|
local-service |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
host_name |
mylinuxbox |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
service_description |
SMTP |
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
check_command |
check_smtp |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
define service{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
use |
|
local-service |
||||||||||||
|
|
|
|
|
|
|
|
||||||||||
|
|
|
host_name |
mylinuxbox |
|||||||||||||
|
|
|
|
|
|
|
|||||||||||
|
|
|
service_description Apache |
|
|
|
|||||||||||
|
|
|
|
|
|
|
|||||||||||
|
|
|
check_command |
check_ |
http |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
|
Модуль 12. Система мониторинга Nagios. |
|
|
|
|
|
define service{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
use |
|
local-service |
||||
|
|
|
|
|
|
||
|
host_name |
mylinuxbox |
|||||
|
|
|
|
|
|
||
|
service_description |
DHCPD |
|
|
|||
|
|
|
|
||||
|
check_command |
check_dhcp |
|||||
|
} |
|
|
|
|
|
|
Чтобы узнать какие опции можно применить к командам check_* делаем
следующее
#/usr/lib/nagios/plugins/check_<название плагина> -h, например
#/usr/lib/nagios/plugins/check_http -h
Плагин check_dhcp есть в /usr/lib/nagios/plugins но не описан в /etc/nagios/ commands.cfg поэтому внесем соответствующию запись
define command{
command_name check_dhcp
command_line $USER1$/check_dhcp -s $HOSTADDRESS$
}
Проверить ошибки в конфигурации можно командой #/usr/sbin/nagios -v /etc/nagios/nagios.cfg
Перезагружаем Nagios
# service nagios restart
Все должно заработать.
Мониторинг различных параметров сервера
Ниже я привел некоторые способы мониторинга основных системных параметров и служб. Думаю пригодится.
Мониторинг свободного места
Выведем список 5 пользователей занимающих наибольшее количество дискового пространства в своем домашнем каталоге.
# du -cms /home/* | sort -rn | head -6
Модуль 12. Система мониторинга Nagios. |
|
167 |
|
|
|
8200 total
6100 /home/james
900 /home/ronaldo
570 /home/neo
420 /home/tester
210 /home/mybestuser
Как видим пользователь james занимает 6.1 Гб места и т.д.
Защита системы от пользовательских процессов
Пользовательскиепроцессыбезпроблеммогутзанятьвседисковоепространство и тем самым положить сервер. Чтобы этого избежать воспользуемся командой ulimit и ограничим возможный размер файла до 10Мб.
#ulimit -f 10000
#yes 'some shit' > shit.txt File size limit exceeded
#ls -l
total 10016
-rw-r--r-- 1 root root 10240000 Mar 14 21:36 shit.txt
Точнотакжеможнозадаватьдругиеопцииограничения,такиекакмаксимальное количество файлов, максимальное количество открытых дескрипторов, процессорное время, объем виртуальной памяти доступный в shell и т.д.
Просмотреть все возможные параметры
# ulimit -a
Ограничение в 10 Мб конечно врядли подойдет, а вот ограничить в 10 Гб уже можно. Защита от дурака так сказать.
Мониторинг S.M.A.R.T. - параметров жесткого диска
# smartctl -a /dev/sda
Напомню, S.M.A.R.T. - это Self-Monitoring, Analysis and Reporting Technology. Технология самоконтроля и анализа, которой снабжены все современные диски. Она позволяет отслеживать основные параметры жестких дисков и прогнозировать потенциальный отказ.
|
168 |
|
Модуль 12. Система мониторинга Nagios. |
|
|
|
|
Один из способов выяснить как ваш HDD называется в системе это выполнить команду fdisk -l, значение без цифры и будет нужным устройством.
Мониторинг сетевых портов в Linux
Просмотреть конкретный сетевой порт можно вот так
# netstat -nlp | grep :8080 |
|
|
|
tcp |
0 0 :::8080 |
:::* |
LISTEN 2697/httpd |
Как видим на порту 8080 выполняется веб-сервер Apache Весь список активных портов
# netstat -tlnp
Мониторинг открытых файлов и сокетов
Для этих целей хорошо подойдет lsof. Вывод всех открытых файлов
# lsof
Смотрим открытые файлы работающие с сетью по IPv4
|
# lsof -i 4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
COMMAND |
PID USER |
FD TYPE DEVICE SIZE NODE NAME |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
portmap 2341 |
rpc |
3u IPv4 |
6692 |
UDP *:sunrpc |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||||||||||
rpc.statd 2366 root 7u IPv4 6748 |
TCP *:852 (LISTEN) |
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
cupsd |
2657 |
root |
3u |
IPv4 |
7392 |
TCP localhost.localdomain:ipp (LISTEN) |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
cupsd |
2657 |
root |
5u |
IPv4 |
7395 |
UDP *:ipp |
||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||
php-cgi |
2662 |
nginx 0u IPv4 7415 |
TCP localhost.localdomain:cslistener (LISTEN) |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||
nginx |
3915 |
nginx |
5u |
IPv4 10864 |
TCP *:https (LISTEN) |
|||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||
nginx |
3915 |
nginx |
6u |
IPv4 10865 |
TCP *:http (LISTEN) |
Список открытых файлов по NFS
# lsof -N
Список открытых файлов в /var/log/
Опция +d покажет открытые файлы только в этом каталоге а +D и во вложенных
Модуль 12. Система мониторинга Nagios. |
|
169 |
|
|
|
|
|
# lsof +d /var/log |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
COMMAND PID USER |
FD TYPE DEVICE |
SIZE NODE NAME |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
syslogd |
2289 |
root |
1w |
REG 253,0 382311 3047763 /var/log/messages |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
syslogd |
2289 |
root |
2w |
REG 253,0 25939 3047764 /var/log/secure |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
syslogd |
2289 |
root |
3w |
REG 253,0 |
6285 3047765 |
/var/log/maillog |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
syslogd |
2289 |
root |
4w |
REG 253,0 |
7348 3047768 |
/var/log/cron |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
syslogd |
2289 |
root |
5w |
REG 253,0 |
0 3047766 /var/log/spooler |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
syslogd |
2289 |
root |
6w |
REG 253,0 |
1532 3047767 |
/var/log/boot.log |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||
acpid |
2590 |
root |
2w |
REG 253,0 |
3374 3047640 /var/log/acpid |
|||||||||||||||
|
|
|
|
|
||||||||||||||||
nginx |
3914 root |
2u REG 253,0 3398 3047715 /var/log/nginx.error_log |
Список открытых файлов для конкретного пользователя
# lsof -u james
Мониторинг запущенных процессов
Все процессы
# ps -eF
Вывести дерево процессов
# ps -ejH
Мониторинг системных ресурсов
# top
или, если хочется чтобы все было красиво (не забудьте подключить репозиторий EPEL)
#yum -y install htop
#htop
Мониторинг свободного места в разделах
# df -h
Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00
23G 2.4G 20G 11% /
|
170 |
|
Модуль 12. Система мониторинга Nagios. |
|
|
|
|