Musiałem zrobić jakieś monitorowanie - wybrałem nagiosa + wykres za pomocą pnp4nagios.
Spędziłem nad tym trochę czasu, dlatego to spisałem wszystko żeby nie zapomnieć.
Sprawdzone na Debianie 4.0, raz sprawdziłem też na Debianie 5.0, z sukcesem odpalone tez na RHEL4. W chwili obecnej monitoruje serwery na Linuksie, Windowsie i urządzenia sieciowe.
W tej chwili opisałem poniżej tylko jak uruchomić nagiosa + wykresy.
Mam nadzieję, że ktoś z tego skorzysta, ewentualnie wyłapie błędy i braki.
Jak ktoś napisze, że mu się przydało, to w przyszłości opiszę jak monitorować Cisco, postgresql, Windows i jak robić wykresy z rzeczy, które standardowo się nie robią (np. ilość procesów).
Do uruchomienia potrzebny apache + php.
Kod: Zaznacz cały
apt-get install apache2 php5 libapache2-mod-php5
apt-get install libgd2-xpm libpng12-dev libjpeg62-dev libgd-tools libpng3-dev
apt-get install make gcc g++
apt-get install rrdtool rrdcollect libssl-dev
Kod: Zaznacz cały
groupadd nagios
usermod -G nagios nagios
usermod -G www-data,nagios www-data
Kod: Zaznacz cały
mkdir /usr/local/nagios
chown -R nagios:nagios /usr/local/nagios
Kod: Zaznacz cały
wget [url]http://www.boutell.com/gd/http/gd-2.0.33.tar.gz[/url]
tar -zxvf gd-2.0.33.tar.gz
cd gd-2.0.33
./configure
make && make install
Kod: Zaznacz cały
wget [url]http://garr.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.6.tar.gz[/url]
Kod: Zaznacz cały
tar xzf nagios-3.0.6.tar.gz
cd nagios-3.0.6
./configure --prefix=/usr/local/nagios --with-cgiurl=/nagios/cgi-bin --with-htmurl=/nagios/ --with-nagios-user=nagios --with-nagios-group=nagios --with-command-group=nagios
make all
make install
- This installs the main program, CGIs, and HTML files
make install-init
- This installs the init script in /etc/init.d
make install-commandmode
- This installs and configures permissions on the
directory for holding the external command file
make install-config
- This installs *SAMPLE* config files in /usr/local/nagios/etc
You'll have to modify these sample files before you can
use Nagios. Read the HTML documentation for more info
on doing this. Pay particular attention to the docs on
object configuration files, as they determine what/how
things get monitored!
make install-webconf
- This installs the Apache config file for the Nagios
web interface
Kod: Zaznacz cały
make install
make install-init
make install-commandmode
make install-config
make install-webconf
Wchodzimy na stronę: http://sourceforge.net/projects/nagiosplug/ i pobieramy aktualna wersję:
Kod: Zaznacz cały
wget [url]http://dfn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz[/url]
Kod: Zaznacz cały
tar -zxvf nagios-plugins-1.4.13.tar.gz
cd nagios-plugins-1.4.13
./configure
make && make install
Kod: Zaznacz cały
cp /etc/apache2/conf.d/nagios.conf /etc/apache2/sites-available/nagios.conf
rm /etc/apache2/conf.d/nagios.conf
a2ensite nagios.conf
Kod: Zaznacz cały
Alias /nagios/ "/usr/local/nagios/share"
Kod: Zaznacz cały
Alias /nagios "/usr/local/nagios/share"
Teraz robimy:
Kod: Zaznacz cały
/etc/init.d/apache2 restart
Kod: Zaznacz cały
update-rc.d nagios defaults
Kod: Zaznacz cały
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Edytujemy /usr/local/nagios/etc/objects/contacts.cfg i wstawiamy tam swój adres email:
Kod: Zaznacz cały
define contact{
contact_name nagiosadmin ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias Nagios Admin ; Full name of user
email [email][email protected][/email]s ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
}
Wszystkie pliki konfiguracyjne zawarte są w /usr/local/nagios/etc/objects/
Pliki te maja dużo opisów w środku, łatwo można dowiedzieć się o co chodzi. Więcej informacji dostarczy Google.
Integracja z PNP4NAGIOS - wykresy
Cala wiedza wykorzystana tu zawarta jest na tej stronie http://www.pnp4nagios.org/pnp/start - opisy z tego miejsca dotyczą konkretnego podejścia do sprawy oraz spreparowania wszystkiego pod Debiana (nie sprawdzałem na innych dystrybucjach).
Pobieranie:
Kod: Zaznacz cały
wget [url]http://heanet.dl.sourceforge.net/sourceforge/pnp4nagios/pnp-0.4.13.tar.gz[/url]
Kod: Zaznacz cały
tar -xvzf pnp-0.4.13.tar.gz
cd pnp-0.4.13
./configure
make all
make install
make install-config
make install-init
cp /usr/local/nagios/etc/pnp/process_perfdata.cfg-sample /usr/local/nagios/etc/pnp/process_perfdata.cfg
cp /usr/local/nagios/etc/pnp/rra.cfg-sample /usr/local/nagios/etc/pnp/rra.cfg
Kod: Zaznacz cały
process_performance_data=1
Kod: Zaznacz cały
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
Kod: Zaznacz cały
*http://<IPADDRESS_OR_HOSTNAME>/nagios/pnp/index.php**
Kod: Zaznacz cały
apt-get install php5-gd
nie należy martwić się tym.hostname is not set
Teraz czas na weryfikacje instalacji:
Kod: Zaznacz cały
cd #
cd pnp-0.4.13/contrib/
chmod 755 verify_pnp_config
./verify_pnp_config -m default
Kod: Zaznacz cały
[A] using Nagios basedir "/usr/local/nagios"
[A] using Nagios config "/usr/local/nagios/etc/nagios.cfg"
[I] PNP mode: "default"
[I] Nagios info: Nagios 3.0.6
[A] verifying Nagios config
[A] checking RRDtool
[I] RRDtool: RRDtool 1.2.15
[A] processing "/usr/local/nagios/etc/nagios.cfg"
[I] nagios_user=nagios
[I] nagios_group=nagios
[A] using "/usr/local/nagios/var/objects.cache" entries
[A] processing "/usr/local/nagios/etc/pnp/process_perfdata.cfg"
No (obvious) errors found. Happy graphing with PNP
Teraz czas na podłączenie tego do nagiosa.
Edytujemy /usr/local/nagios/etc/objects/templates.cfg i wklejamy tam gdzie definicje hostów:
Kod: Zaznacz cały
define host {
name host-pnp
register 0
action_url /nagios/pnp/index.php?host=$HOSTNAME$
}
Kod: Zaznacz cały
define service {
name srv-pnp
register 0
action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
}
Kod: Zaznacz cały
define host{
name linux-server ; The name of this host template
use generic-host ; This template inherits other values from the generic-host template
check_period 24x7 ; By default, Linux hosts are checked round the clock
check_interval 5 ; Actively check the host every 5 minutes
retry_interval 1 ; Schedule host check retries at 1 minute intervals
max_check_attempts 10 ; Check each Linux host 10 times (max)
check_command check-host-alive ; Default command to check Linux hosts
notification_period workhours ; Linux admins hate to be woken up, so we only notify during the day
; Note that the notification_period variable is being overridden from
; the value that is inherited from the generic-host template!
notification_interval 120 ; Resend notifications every 2 hours
notification_options d,u,r ; Only send notifications for specific host states
contact_groups admins ; Notifications get sent to the admins by default
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}
Kod: Zaznacz cały
action_url /nagios/pnp/index.php?host=$HOSTNAME$
Kod: Zaznacz cały
define service{
name local-service ; The name of this service template
use generic-service ; Inherit default values from the generic-service definition
max_check_attempts 4 ; Re-check the service up to 4 times in order to determine its final (hard) state
normal_check_interval 5 ; Check the service every 5 minutes under normal conditions
retry_check_interval 1 ; Re-check the service every minute until a hard state can be determined
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
}
Kod: Zaznacz cały
action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
Trzeba jeszcze dodać na samym końcu /usr/local/nagios/etc/objects/commands.cfg:
Kod: Zaznacz cały
define command {
command_name process-service-perfdata
command_line /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl
}
define command {
command_name process-host-perfdata
command_line /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}
define command{
command_name process-service-perfdata-file
command_line /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl --bulk=/usr/local/nagios/var/service-perfdata
}
define command{
command_name process-host-perfdata-file
command_line /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl --bulk=/usr/local/nagios/var/host-perfdata
}
Kod: Zaznacz cały
'process-host-perfdata' command definition
define command{
command_name process-host-perfdata
command_line /usr/bin/printf "%b" $LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$H$
}
'process-service-perfdata' command definition
define command{
command_name process-service-perfdata
command_line /usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEX$
}
Kod: Zaznacz cały
# 'process-host-perfdata' command definition
#define command{
# command_name process-host-perfdata
# command_line /usr/bin/printf "%b" "$LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$H$
# }
# 'process-service-perfdata' command definition
#define command{
# command_name process-service-perfdata
# command_line /usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEX$
# }
Kod: Zaznacz cały
/etc/init.d/nagios restart
Wykonując kopiuj i wklej na 99% powinno działać na Debianie Etch ;-) - informacja dla leniwych.