Использованная литература:
1. http://www.daemony.ru/?p=673
2. Документация по Nagios
Итак... Традиционно для Debian Lenny, уже 6.0
apt-get install nagios3 nagios-plugins apache2
В процессе установки попросит ввести пароль для nagiosadmin
После этого по адресу http://servip/nagios3 после ввода имени nagiosadmin и пароля, который задали при установке, попадаете на основную страничку Nagios.
Теперь небольшая копипаста:
Нам необходимо:
Случилось так, что системный пользователь nagios не имеет возможности залогиниться в систему. Но эту неприятность мы переживем :) Домашняя его директория находится в /var/spool/nagios/. Итак, логинимся в систему пользователем nagios и генерируем RSA ключи:
sudo -u nagios /bin/bash
cd ~
mkdir .ssh
chmod 700 .ssh
ssh-keygen -t rsa
cd ~
mkdir .ssh
chmod 700 .ssh
ssh-keygen -t rsa
Тут мы получаем общий ключ id_rsa.pub, который будем использовать далее.
Теперь несколько скриптов для упрощения жизни:
runnonhost.sh
adduser nagios
mkdir -p /home/nagios
mkdir -p /home/nagios/.ssh
mkdir -p /home/nagios/plugins
echo "nagios ALL=NOPASSWD: /usr/sbin/asterisk" >> /etc/sudoers
mkdir -p /usr/share/terminfo/u
cp /usr/share/terminfo/l/linux /usr/share/terminfo/u/unknown
mv /home/user/id_rsa.pub /home/nagios/.ssh/authorized_keys
chown -R nagios:nagios /home/nagios/*
chown -R nagios:nagios /home/nagios
chmod 700 /home/nagios/.ssh
chmod 600 /home/nagios/.ssh/authorized_keys
Это скрипт, который запускается на самом сервере, который будем мониторить. Для этого в папке пользователя user должен лежать id_rsa.pub, который мы получили ранее. Для этого проще всего воспользоваться sftp или чем-то подобным.
6я строчка - для возможности получения пользователем nagios доступа к консоли Asterisk.
7я и 8я зависят от дистрибутива и его версии. Дело в том, что nagisk не может выполняться на dumb терминале. Выполняется он на unknown, для чего мы его и подсовываем.
Также для CentOS необходимо в sudoers добавить строчку
Defaults:nagios !requiretty
Скрипт номер 2:
addhost.sh
#! /bin/sh
HOST="$1"
PORT="$2"
NAME="$3"
sudo -u nagios /bin/bash -c "scp -P $PORT /usr/lib/nagios/plugins/* $HOST:~/plugins && exit"
echo >> /etc/nagios3/conf.d/host-clients.cfg
echo "define host {" >> /etc/nagios3/conf.d/host-clients.cfg
echo "host_name $NAME" >> /etc/nagios3/conf.d/host-clients.cfg
echo "alias $NAME" >> /etc/nagios3/conf.d/host-clients.cfg
echo "address $HOST" >> /etc/nagios3/conf.d/host-clients.cfg
echo "_PORT $PORT" >> /etc/nagios3/conf.d/host-clients.cfg
echo "_WARNCHAN 10" >> /etc/nagios3/conf.d/host-clients.cfg
echo "use generic-host" >> /etc/nagios3/conf.d/host-clients.cfg
echo "}" >> /etc/nagios3/conf.d/host-clients.cfg
Скрипт, который запускается на хостовой машине с Nagios. Принимает 3 параметра. Собственно, хост, порт для ssh, и имя, которое используется в Nagios. Конфиг хоста записывает в host-client.cfg. После этого руками надо добавить его в какую-либо хостгруппу в файле
/etc/nagios3/conf.d/hostgroups_nagios2.cfg
Теперь файлы самого Nagios:
/etc/nagios3/commands.cfg
define command {
command_name check_ssh_disk
command_line $USER1$/check_by_ssh -p $ARG4$ -H $HOSTADDRESS$ -C "~/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$"
}
define command {
command_name check_ssh_CPU
command_line $USER1$/check_by_ssh -p $ARG7$ -H $HOSTADDRESS$ -C "~/plugins/check_load -w $ARG1$,$ARG2$,$ARG3$ -c $ARG4$,$ARG5$,$ARG6$"
}
define command {
command_name check_ssh_asterisk_version
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c version 2>>/dev/null"
}
define command {
command_name check_ssh_asterisk_channels
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c channels -w $ARG2$ 2>>/dev/null"
}
define command {
command_name check_ssh_asterisk_peers
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c peers 2>>/dev/null"
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Root Partition
check_command check_ssh_disk!10%!5%!/!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Home Partition
check_command check_ssh_disk!10%!5%!/home!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description CPU Load
check_command check_ssh_CPU!5.0!4.0!3.0!10.0!6.0!4.0!$_HOSTPORT$
notifications_enabled 1
}
command_name check_ssh_disk
command_line $USER1$/check_by_ssh -p $ARG4$ -H $HOSTADDRESS$ -C "~/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$"
}
define command {
command_name check_ssh_CPU
command_line $USER1$/check_by_ssh -p $ARG7$ -H $HOSTADDRESS$ -C "~/plugins/check_load -w $ARG1$,$ARG2$,$ARG3$ -c $ARG4$,$ARG5$,$ARG6$"
}
define command {
command_name check_ssh_asterisk_version
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c version 2>>/dev/null"
}
define command {
command_name check_ssh_asterisk_channels
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c channels -w $ARG2$ 2>>/dev/null"
}
define command {
command_name check_ssh_asterisk_peers
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c peers 2>>/dev/null"
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Root Partition
check_command check_ssh_disk!10%!5%!/!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Home Partition
check_command check_ssh_disk!10%!5%!/home!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description CPU Load
check_command check_ssh_CPU!5.0!4.0!3.0!10.0!6.0!4.0!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Asterisk Version
check_command check_ssh_asterisk_version!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Asterisk Channels
check_command check_ssh_asterisk_channels!$_HOSTPORT$!$_HOSTWARNCHAN$
notifications_enabled 1
}
/etc/nagios3/conf.d/host-clients.cfg
define host {
host_name HOSTNAME
alias HOSTNAME
address IPaddress
_PORT PORT
_WARNCHAN 60
use generic-host
}
/etc/nagios3/conf.d/hostgroups_nagios2.cfg
define hostgroup {
hostgroup_name AAA
alias Client Servers
members HOSTNAME1, HOSTNAME2, HOSTNAME3
hostgroup_name AAA
alias Client Servers
members HOSTNAME1, HOSTNAME2, HOSTNAME3
}
После этого перезапускаем Nagios и любуемся.
No comments:
Post a Comment