Icinga2

Aus d0b
Zur Navigation springenZur Suche springen


Weil es zuviel geworden ist jetzt mit eigener Seite.

Icinga2

Unter Debian 7.6.0 (standardtools + ssh) + Aktuelle Sources gibts hier

aptitude update && aptitude -y upgrade     // System auf den neuesten Stand bringen
aptitude install vim -y                    // Favorit Editor installieren

vim /etc/apt/sources.list                  // Sources öffnen und um folgende Zeilen erweitern

#Icinga 2 Packages
deb http://debmon.org/debmon debmon-wheezy main
deb-src http://debmon.org/debmon debmon-wheezy main

Schlüssel herunterladen und Pakete als vertrauenswürdig einstufen:

wget -O - http://debmon.org/debmon/repo.key 2>/dev/null | apt-key add -   
aptitude update && aptitude -y upgrade
aptitude install icinga2
service icinga2 start

ClassicUI

Frontend, nach der installation erreichbar unter "http://localhost/icinga2-classicui"

aptitude install apache2 icinga2-classicui

Info`s zum Logout:

Xmpp Notification

Icinga-web

folgt...

Troubleshooting

Wer folgenden Fehler beim Aufruf von "http://localhost/icinga-web" bekommt:

Request Failed!
The server encountered an error:
Internal Exception, check your logs!

Sollte seine Java-Konsole im Browser anmachen und da loslegen mit der Suche, im log steht leider nichts brauchbares.

PNP4Nagios

Damit Icinga2 schöne Graphen bereitstellt, habe ich mich für das Addon PNP4Nagios im Bulk Mode mit NPCD entschieden.

Vorraussetzung: Icinga2 + classicui (Auf Debian )

Notwendige Pakete abholen

aptitude update && aptitude install pnp4nagios rrdcached

Icinga2 ist bereits für PNP4Nagios ausgestattet, deswegen legen wir nur einen Schalter um.

icinga2-enable-feature perfdata          
icinga2 feature enable perfdata     // Ab Icinga Version  1.7.1 

Npcd User + Spool Directoy Pfad anpassen

vim /etc/pnp4nagios/npcd.cfg

Zeile:  79
alt:	perfdata_spool_dir = /var/spool/pnp4nagios/npcd/ 
neu: 	perfdata_spool_dir = /var/spool/icinga2/perfdata/

Npcd aktivieren & starten

vim /etc/default/npcd

alt:	Run="no"
neu:	Run="yes"

/etc/init.d/npcd start


RRD OPTS setzen

update-rc.d npcd defaults
mkdir -p /var/cache/rrdcached
chown nagios: /var/cache/rrdcached
vim /etc/default/rrdcached

Zeile: 10
alt: #OPTS=""
neu: OPTS="-w 1800 -z 1800 -j /var/cache/rrdcached -s nagios -m 0660 -l unix:/var/run/rrdcached.sock"
vim /etc/pnp4nagios/process_perfdata.cfg

Zeile: 86
alt:   RRD_DAEMON_OPTS = unix:/tmp/rrdcached.sock
neu:   RRD_DAEMON_OPTS = unix:/var/run/rrdcached.sock

PNP4Nagios config anpassen

vim /etc/pnp4nagios/config.php

Zeile: 92
alt:   $conf['nagios_base'] = "/cgi-bin/nagios3";
neu:   $conf['nagios_base'] = "/cgi-bin/icinga";
 
Zeile: 225
alt:   $conf['RRD_DAEMON_OPTS'] = '';
neu:   $conf['RRD_DAEMON_OPTS'] = 'unix:/var/run/rrdcached.sock';

Apache Config anpassen

vim /etc/apache2/conf.d/pnp4nagios.conf
	
Zeile: 12
alt: AuthName "Nagios Access"
neu: AuthName "Icinga Access"

Zeile: 14
alt: AuthUserFile /usr/local/nagios/etc/htpasswd.users
neu: AuthUserFile /etc/icinga2-classicui/htpasswd.users

Jetzt noch den Apache User in die Nagios Gruppe & Apache neustarten

usermod -G nagios www-data

service apache2 restart

Icinga2 Templates anpassen

vim  /etc/icinga2/conf.d/templates.conf

# Am Anfang der Datei einfügen:
template Host "pnp-hst" {
   action_url = "/pnp4nagios/graph?host=$HOSTNAME$' class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=_HOST_"
}

template Service "pnp-svc" {
   action_url = "/pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=$SERVICEDESC$"
}

# Bei "generic-host" wird hinzugefügt:
   import "pnp-hst"

# Bei "generic-service" wird hinzugefügt:
   import "pnp-svc"

Alles neu starten

service rrdcached restart
service npcd restart
service icinga2 restart

Troubleshooting

Grundsätzlich erstmal einen Blick in die logs werfen, auch bei den docs vorbeischauen hilft oftmals.

vim /etc/pnp4nagios/process_perfdata.cfg         // LOG Level auf 2 = debug setzen  (Zeile 65)
tail /var/log/pnp4nagios/perfdata.log
cat objects.cache | grep perfdata

Es gibt eine Verify Script, was man auch mal laufen lassen kann:

wget http://verify.pnp4nagios.org/verify_pnp_config       

#verify_pnp_config -m|--mode=[sync|bulk|bulk+npcd|npcdmod]
#                  -c|--config=[path to nagios.cfg]
#                  -p|--pnpcfg=[path to PNP config dir]

perl verify_pnp_config -m bulk+npcd -c /etc/icinga2/icinga2.conf -p /etc/apache2/conf.d/pnp4nagios.conf

Wenn das bisher keine Ergebnisse geliefer hat, einfach mal den Weg der Performance Daten verfolgen.

ls -la /var/spool/icinga2/perfdata/

Updates & Troubleshooting

Icinga2 r2.1.1-1 auf r2.2.1-1

Beim Update von Icinga2 Version "r2.1.1-1" auf "r2.2.1-1", hat sich was an den Pfad zur classicUI Oberfläche getan, daher sind folgende Schritte notwenig:

  • Wer den Symlink auf die icinga2-classicui.conf nicht ändert bekommt diesen Fehler von aptitude geliefert:
ln: Symbolische Verknüpfung „/etc/apache2/conf.d/icinga2-classicui.conf“ konnte nicht angelegt werden: Die Datei existiert bereits
dpkg: Fehler beim Bearbeiten von icinga2-classicui (--configure):
 Unterprozess installiertes post-installation-Skript gab den Fehlerwert 1 zurück
Fehler traten auf beim Bearbeiten von:
 icinga2-classicui

Die Lösung steht im Fehler und ist schnell erledigt mit

rm /etc/apache2/conf.d/icinga2-classicui.conf
aptitude -f install
  • Wer PNP4Nagios einsetzt, sollte auch da den Pfad anpassen
vim /etc/apache2/conf.d/pnp4nagios.conf

Zeile: 14
alt: AuthUserFile /etc/icinga2/classicui/htpasswd.users
neu: AuthUserFile /etc/icinga2-classicui/htpasswd.users

service apache2 reload

Plugins

Manubulon Plugins

aptitude install nagios-snmp-plugins

ls -la /usr/lib/nagios/plugins              // Skripte
ls -la /etc/nagios-plugins/config/          // Config

Monitoring Plugins

aptitude-install nagios-plugins

ls -la /usr/lib/nagios/plugins              // Skripte
ls -la /etc/nagios-plugins/config/          // Config

Optionale Plugins

Ja wie geht das? Ganz einfach:

mkdir /opt/icinga-plugins/          // Ein neues Verzeichnis für die Optionalen Plugins anlegen
vim /etc/icinga2/constants.conf     // Icinga bescheid sagen wo dieser Pfad ist, mit Kommentar ;-)

/*
 * Custom / Optionale Plugins
 */
const CustomPluginDir = "/opt/icinga-plugins/"

check_hp_procurve

Da ich auch Pro Curve Switche überwache, konnte ich auf das check_hp_procurve.pl von Juergen Edelbluth zurückgreifen.

cd /opt/icinga-plugins/
wget http://sourceforge.net/projects/jued-ni-plugins/files/check_hp_procurve.pl/check_hp_procurve.pl_0.0.2.5.tar.gz
tar -xvzf check_hp_procurve.pl_0.0.2.5.tar.gz
chmod +x check_hp_procurve.pl

check_snmp_int

cd /opt/icinga-custom-plugins
wget http://nagios.proy.org/check_snmp_int.pl

check_qnap

Das Check_Qnap Plugin soll mir helfen Daten für Icinga zu sammeln, gut wenn man nicht selber alle OID suchen muss =)

 
cd /opt/icinga-plugins/
wget http://constey.de/wp-content/uploads/2011/12/check_qnap.txt       // Plugin runterladen
aptitude install libnagios-plugin-perl libnet-snmp-per                 // Abhängigkeiten des Plugins installieren
mv check_qnap.txt check_qnap.sh                                        // Plugin umbenennen
chmod +x check_qnap.sh                                                 // Rechte erteilen

Plugin testen

# /opt/icinga-plugins/

./check_qnamp.sh <HOST-IP> <snmp-community> <check>
./check_qnamp.sh 192.168.23.23 public cpu

Ich habe nach dem Test, welcher weniger erfolgreich war, alle snmpget Aufrufe angepasst damit es läuft. Dafür habe ich das Parameter "-mAll" entfernt und weil ich gerade dabei war die Version von "-v1" auf "-v 2c" umgestellt. Danach war alles schön =)

Commands.conf erweitern

# /etc/icinga2/conf.d/commands.conf 

/* Custom Commands */

object CheckCommand "check_qnap" {
  import "plugin-check-command"

  command = [
	CustomPluginDir + "/check_qnap.sh", "$check_qnap_hostip$", "$check_qnap_snmpcom$", "$check_qnap_check$"
  ]

  vars.check_qnap_hostip = "$address$"
  vars.check_qnap_snmpcom = "public"
}

Host anlegen

# /etc/icinga2/conf.d/hosts/GPS001.conf

object Host "GPS001" {
  import "generic-host"
  address = "192.168.23.20"
  vars.os = "Linux"
  vars.sla = "24x7"
  max_check_attempts = 5
  check_interval = 1m
  retry_interval = 30s

  check_command = "hostalive"
}

Service anlegen (mehrfach)

# /etc/icinga2/conf.d/hosts/GPS001/check_qnap_cpu.conf 

object Service "cpu" {
  import "generic-service"

  host_name = "GPS001"
  check_command = "check_qnap"
  vars.check_qnap_check = "cpu"   // Hier den gewünschten Check eintragen {cpu|diskusage|fan|hdsmart|hdtemp|volumes|systemp|ramuse}     
  vars.sla = "24x7"
}

check mk

check_by_ssh