|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> программы
—> Nagios - мониторинг сети
Nagios - мониторинг сети
Автор: Al.
В один прекрасный день задался идеей построить какую-никакую систему мониторинга серверов сети и основных их сервисов. Изначально хотел написать скрипт на shell, который бы запускался по крону и подавал какие-нибудь сигналы, если сервер не ответил. Но, немного погуглив, понял, что велосипед изобретен уже давно и прогресс не стоит на месте. Итак, Nagios – система мониторинга сети и основных ее сервисов, таких, как ftp,pop,imap,sql и еще много чего (там около 20 модулей + есть возможность дописывать модули мониторинга на shell или perl ). В качестве оповещения может быть использована почта, icq(но я не пробовал) или звуковой сигнал. Также можно прикрутить веб-страничку (говорят, даж есть поддержка wap), на которой будет отображаться доступность серверов и их сервисов, история сбоев, можно делать отчеты с графиками, а так же создать карту сети. Итак, кто заинтересовался – ставим:
[srv:/usr/ports]#make search name=nagios
Port: nagios-2.5
Path: /usr/ports/net-mgmt/nagios
Info: Extremely powerful network monitoring system
| После установки делаем
cat >> /etc/rc.conf
nagios_enable="YES"
Ctrl+<D>
Предполагается,что,веб-сервер apache уже поставлен.Если нет- ставим и запускаем.Если по-простому,то ничего конфигурить не надо.
в /usr/local/etc/apache21/httpd.conf после
<Directory />
AllowOverride None
Order deny,allow
Deny from all
</Directory>
| добавляем
ScriptAlias /nagios/cgi-bin /usr/local/www/nagios/cgi-bin/
<Directory "/usr/local/www/nagios">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd.users
Require valid-user
</Directory>
Alias /nagios /usr/local/www/nagios/
<Directory "/usr/local/www/nagios/cgi-bin">
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd.users
Require valid-user
</Directory>
| Затем создаем файл паролей и заводим пользователей
#/usr/local/sbin/htpasswd -c /usr/local/etc/nagios/htpasswd.users nagios
#/usr/local/sbin/htpasswd /usr/local/etc/nagios/htpasswd.users boss
| файл /usr/local/etc/nagios/htpasswd.users boss можно расположить в любом месте.В моем примере не самый удачный вариант.
Тепери можно зайти на http://<IP-сервака>/nagios/ ,авторизоваться и полюбоваться интерфейсом.
Конфигурационные файлы нагиос, на мой взгляд, сделаны не самым лучшим образом и их имена могут меняться от версии к версии. Например, описание всех серверов и их сервисов в одном файле я считаю не самым лучшим вариантом, поэтому у меня на каждый сервер – свой файл (проще искать и править, если что-то не так). К счастью, Nagios позволяет менять структуру конфигов.
И так, в папке /usr/local/etc/nagios/ у меня находятся следующие файлы:
cgi.cfg - этот файл в основном содержит разграничение прав доступа к системе через веб. я его не почти не трогал. просто создал пользователей, как там. nagios-пользователь, под которым заходит админ, boss - все остальные. Эти пользователи не системные, так что поменять их потом не составит труда. так же задаются звуки, которые проигрываются в браузере в результате события.
default.cfg - в этот файл я собрал стандартные для всех серверов параметры - объявление периодов времени, группы, контакты и шаблоны
htpasswd.users - этот файлик мы потом создадим для паролей
resource.cfg - я его не трогал. В стандартном варианте он содержит пути к компонентам (1 путь)
commands.cfg - файл, в котором описаны команды вызова модулей и оповещений. При добавлении нового модуля его надо прописывать именно туда.
hosts - папка, в которой лежат описания хостов
nagios.cfg - основной конфигурационный файл. Его переименовывать нельзя
sample - папка. Туда я скинул дефолтовые файлы конфигурации
Итак, файлы. Подробно расписывать просто нет времени, но там коментов хватает и так. В основном, все понятно
cgi.cfg:
main_config_file=/usr/local/etc/nagios/nagios.cfg
# Путь к www файлам
physical_html_path=/usr/local/www/nagios
# то,что добавляем в браузере после имени сервера
url_html_path=/nagios
show_context_help=1
use_authentication=1
default_user_name=guest
# Раздаем права
authorized_for_system_information=nagios,boss
authorized_for_configuration_information=nagios,boss
authorized_for_system_commands=nagios
authorized_for_all_services=nagios,guest,boss
authorized_for_all_hosts=nagios,guest,boss
authorized_for_all_service_commands=nagios
authorized_for_all_host_commands=nagios
default_statusmap_layout=5
default_statuswrl_layout=4
ping_syntax=/bin/ping -n -U -c 5 $HOSTADDRESS$
refresh_rate=45
# Назначаем звуки. Должни находиться в папке /usr/local/www/nagios/sound
host_unreachable_sound=hostdown.wav
host_down_sound=hostdown.wav
service_critical_sound=critical.wav
service_warning_sound=warning.wav
service_unknown_sound=warning.wav
normal_sound=noproblem.wav
| default.cfg
#Задаем периоды оповещения
define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
define timeperiod{
timeperiod_name workhours
alias "Normal" Working Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00
}
define timeperiod{
timeperiod_name nonworkhours
alias Non-Work Hours
sunday 00:00-24:00
monday 00:00-09:00,17:00-24:00
tuesday 00:00-09:00,17:00-24:00
wednesday 00:00-09:00,17:00-24:00
thursday 00:00-09:00,17:00-24:00
friday 00:00-09:00,17:00-24:00
saturday 00:00-24:00
}
define timeperiod{
timeperiod_name none
alias No Time Is A Good Time
}
# Определяем контакты для оповещений, время оповещения(шоб ночью не будил)
# и события, при которых трезвонить
define contact{
contact_name nagios-admin
alias Nagios Admin
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email your@e.mail
}
# Создаем группу контактов. Для каждого сервера можно оповещать
# Свою группу
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagios-admin
}
# Стандартные шаблоны хостов
define host{
name generic-host
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
notification_period 24x7
register 0
}
define host{
# Имя шаблона
name freebsd-server
# Какой шаблон используем
use generic-host
# Период проверки-круглосуточно
check_period 24x7
# Макс попыток проверки
max_check_attempts 10
# Как проверяем жив-ли
check_command check-host-alive
# Сообщаем о неполадках кпуглосуточно
notification_period 24x7
# С каким интервалом повтор сообщения
notification_interval 30
# читаем маны-забыл.Для каких событий шлем сообщения
notification_options d,u,r
# Кому шлем сообщения
contact_groups admins
# Не регистрируем-это шаблон
register 0
}
# Группы хостов
define hostgroup{
#Название
hostgroup_name in_servers
#псевдоним-описание
alias Local Servers
#кого включаем(сервера)
members localhost
}
# групп может быть несколько
# каждую описываем отдельно
define hostgroup{
hostgroup_name out_servers
alias External Servers
members localhost
}
# Стандартные шаблоны сервисов
define service{
name generic-service
active_checks_enabled 1
passive_checks_enabled 1
parallelize_check 1
obsess_over_service 1
check_freshness 0
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
is_volatile 0
register 0
}
define service{
name local-service
use generic-service
check_period 24x7
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
contact_groups admins
# при каких ошбках звонить -warning
#critical, unknown
notification_options w,u,c,r
notification_interval 60
notification_period 24x7
register 0
}
| commands.cfg:
define command{
command_name check_local_disk
command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
}
| «command_name check_local_disk» - как мы назовем эту команду для дальнейшего использования (используется в файле описаний серверов)
«command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$» - как будем вызывать.$USER1$ - содержит /usr/local/libexec/nagios/, т.е. вызываем /usr/local/libexec/nagios/check_disk. далее передаем аргументы.чтобы узнать,какие ключи использует компонент, набираем /usr/local/libexec/nagios/check_disk -h. Так надо описать каждый компонент,который будем использовать.Изначально описан минимум,в /usr/local/libexec/nagios их больше
Если в файле хостов пишем «check_local_disk!1!2!3», то в итоге будет вызвано «/usr/local/libexec/nagios/check_disk -w 1 -c 2 -p 3»
nagios.cfg:
тут я только добавил инклуды моих файлов:
# Host and service definitions for monitoring this machine
cfg_file=/usr/local/etc/nagios/default.cfg
cfg_file=/usr/local/etc/nagios/hosts/localhost.host
#cfg_file=/usr/local/etc/nagios/hosts/server.host
| cfg_file=/usr/local/etc/nagios/hosts/server.host - так добавляем файлы с описанием новых серверов
server.host:
define host{
use freebsd-server
host_name localhost
alias localhost
address 192.168.93.220
}
define service{
use local-service
host_name localhost
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
define service{
use local-service
host_name localhost
service_description Root Partition
check_command check_local_disk!20%!10%!/
}
define service{
use local-service
host_name localhost
service_description Current Users
check_command check_local_users!20!50
}
define service{
use local-service
host_name localhost
service_description Total Processes
check_command check_local_procs!250!400!RSZDT
}
define service{
use local-service
host_name localhost
service_description Current Load
check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
}
define service{
use local-service
host_name localhost
service_description ntp service
check_command check_ntp
}
define service{
use local-service
host_name localhost
service_description dns service
check_command check_dns
}
define service{
use local-service
host_name localhost
service_description ftp service
check_command check_ftp
}
define service{
use local-service
host_name localhost
service_description ssh service
check_command check_ssh!30
}
define service{
use local-service
host_name localhost
service_description mailqu service
check_command check_mailq!1!3
}
| use local-service - используемый шаблон
host_name localhost - имя хоста,для кот выполняем проверку
service_description mailqu service - описание проверки
check_command check_mailq!1!3 - команда проверки и ее параметры
Вот,впринципе, и все. Писал уже с настроенного сервака,так что могут быть неточности....
Написано довольно криво-сам знаю,но на лучшее просто нету времени..Если кого реально заинтересует-напишу более подробно
размещено: 2007-10-19,
последнее обновление: 2007-10-19,
автор: Al
|
|
|
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
|
Комментарии пользователей [41 шт.]