Navigation
Einleitung
- Diese Seite beschäftigt sich ausschließlich nur mit der Installation und Grundkonfiguration der jeweiligen Programme, Tools und AddOns. Die eigentliche Konfiguration erfolgt auf der nachfolgenden Seite.
Nagios 3 installieren
- Die Grundinstallation von Nagios ist in wenigen Zügen möglich. Bei dem Übersetzen des Nagios-Kerns muss jedoch darauf geachtet werden, dass die entsprechenden Entwicklerpakete vorhanden sind. Dazu zählen nicht nur die Klassiker wie GCC, sondern vor allem die Bibliotheken wie OpenSSL, GD und Co.
- Fangen wir an:
Nagios kompilieren
- Nagios auspacken und übersetzen
- Da ich gern alles beieinander habe, kopiere ich die Quellcode Pakete nach /usr/src/nagios/ und entpacke sie dort:
|
master :~# cd /usr/src/nagios
master :/usr/src/nagios# tar xzf nagios-3.0.6.tar.gz
master :/usr/src/nagios# cd nagios-3.0.6
master :/usr/src/nagios/nagios-3.0.6#
|
|
Damit check_multi seine Arbeit korrekt ausführen kann, muss der Buffer erhöht werden:
master :/usr/src/nagios/nagios-3.0.6# vi include/nagios.h -> #define MAX_PLUGIN_OUTPUT_LENGTH 8192
master :/usr/src/nagios/nagios-3.0.6# vi include/common.h -> #define MAX_INPUT_BUFFER 8192
|
- Als nächstes möchten wir Nagios übersetzen und nach /usr/local/nagios installieren lassen. Vorher müssen noch einige Vorkehrungen getroffen werden. Wir benötigen einen entsprechenden Benutzer und zwei Gruppen für Nagios. Eine für Nagios selbst und eine, in der auch der Apache Webserver sein wird.
|
master :~# groupadd nagios
master :~# groupadd nagcmd
master :~# usermod -G nagcmd www-data <-- (Bei SuSE wwwrun anstatt www-data)
master :~# useradd -d /usr/local/nagios -s /bin/bash -g nagios nagios
|
- Nun fehlen noch die entsprechend nötigen Pakete zum Kompilieren, sowie Apache zzgl. PHP, und dann kann übersetzt werden:
|
master :~# apt-get install apache2 build-essential libgd-dev libperl-dev php5-mysql libapache2-mod-php5 php5-gd
master :/usr/src/nagios/nagios-3.0.6# ./configure --enable-embedded-perl \
--enable-event-broker --with-httpd-conf=/etc/apache2/conf.d/ --with-command-group=nagcmd
master :/usr/src/nagios/nagios-3.0.6# make all
master :/usr/src/nagios/nagios-3.0.6# make fullinstall
master :/usr/src/nagios/nagios-3.0.6# make install-init install-config install-commandmode
|
|
master :~# yast -i gcc apache2 gd-devel apache2-mod_php5 php5-gd php5-mysql
master :/usr/src/nagios/nagios-3.0.6# ./configure --enable-embedded-perl \
--enable-event-broker --with-httpd-conf=/etc/apache2/conf.d/ --with-command-group=nagcmd
master :/usr/src/nagios/nagios-3.0.6# make fullinstall
master :/usr/src/nagios/nagios-3.0.6# make install-init und make install-config install-commandmode
|
Nagios-Plugins kompilieren
|
master:/usr/src/nagios# tar xzf nagios-plugins-1.4.11.tar.gz
master:/usr/src/nagios# cd nagios-plugins-1.4.11
|
- Je nach dem, welche Plugins zum Einsatz kommen, werden unterschiedlich viele Entwicklerpakete benötigt. In diesem Fall verwende ich folgende Pakete
|
master :~# apt-get install libssl-dev libmysqlclient15-dev libsnmp-base snmp libnet-snmp-perl
master :/usr/src/nagios/nagios-plugins-1.4.11# ./configure
master :/usr/src/nagios/nagios-plugins-1.4.11# make install
|
|
master :~# yast -i openssl-devel net-snmp perl-Net-SNMP mysql-devel
master :/usr/src/nagios/nagios-plugins-1.4.11# ./configure
master :/usr/src/nagios/nagios-plugins-1.4.11# make install
|
Nagios Grundkonfiguration
- Ist Nagios selbst mit seinen Plugins installiert worden, kann es auch schon an die Grundkonfiguration gehen. Da Nagios über eine Weboberfläche verfügt, über die zuvor eine Authentifizierung erfolgen muss, müssen wir zuerst die Benutzerdatenbank erstellen.
|
master :~# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
<password>
<password>
master :~# /etc/init.d/nagios start
master :~# /etc/init.d/apache2 restart
|
- Wird ein anderer Benutzername vorgezogen, so ist dies in der /usr/local/nagios/etc/cgi.cfg anzupassen.
- Es sollte nach dieser Prozedur möglich sein, auf die Webseite http://master/nagios/ zuzugreifen und die Testkonfiguration in Augenschein nehmen. Um zu schauen, ob die Rechte in Ordnung sind, lohnt es sich, einen Servicecheck aufzurufen und die Notification zu deaktivieren od. einen neuen Check zu forcieren.
- Damit Nagios automatisch startet, ist meistens notwendig, den Dienst in die Runlevels einzutragen.
|
master: ~# update-rc.d nagios defaults
|
|
master: ~# insserv -d nagios
|
Nagios Datenbank Support - NDOUtils
- Hat die Installation bis zu diesem Punkt geklappt, kann nun der Datenbank-Support eingerichtet werden. Die NDOUtils unterstützen zwar MySQL und PostgreSQL, doch ist letzteres noch nicht ausgereift genug. Es empfiehlt sich daher, vorläufig auf MySQL zu setzen, solang wie die Codeteile für PostgreSQL noch in der Entwicklung sind.
Installation
|
master:/usr/src/nagios# tar xzf ndoutils-1.4b7.tar.gz
master:/usr/src/nagios# cd ndoutils-1.4b7
master:/usr/src/nagios/ndoutils-1.4b7# apt-get install mysql-server
master:/usr/src/nagios/ndoutils-1.4b7# ./configure && make
|
|
master:/usr/src/nagios# tar xzf ndoutils-1.4b7.tar.gz
master:/usr/src/nagios# cd ndoutils-1.4b7
master:/usr/src/nagios/ndoutils-1.4b7# yast -i mysql perl-DBD-mysql
master:/usr/src/nagios/ndoutils-1.4b7# ./configure && make
|
- Dann die folgenden Dateien an die jeweiligen Orte kopieren:
|
master:/usr/src/nagios/ndoutils-1.4b7# cp src/ndo2db-3x /usr/local/nagios/bin/ndo2db
master:/usr/src/nagios/ndoutils-1.4b7# cp src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o
master:/usr/src/nagios/ndoutils-1.4b7# cp config/misccommands.cfg /usr/local/nagios/etc/objects/
master:/usr/src/nagios/ndoutils-1.4b7# cp config/ndo2db.cfg /usr/local/nagios/etc/
master:/usr/src/nagios/ndoutils-1.4b7# cp config/ndomod.cfg /usr/local/nagios/etc/
|
ndo2db ist der Daemon, der die Verbindung zwischen SQL und Nagios herstellt, und ndomod.o ist das Modul, welches über den eventhandler von Nagios aufgerufen wird.
|
Es muss unbedingt das zur Nagios-Version passende Modul sein. Für Nagios3 ist es ndomod-3x.o und ndo2db-3x Die Dateien mit -2x sind für das ältere Nagios in der Version 2!
|
- Als nächstes erfolgt das Einrichten der Datenbank. Dazu sollte ein Benutzer nagios und eine Datenbank nagios in MySQL existieren. Der Benutzer benötigt nur SELECT, INSERT, UPDATE, DELETE-Rechte auf diese eine Datenbank.
|
master:/usr/src/nagios/ndoutils-1.4b7# mysqladmin create nagios -p
master:/usr/src/nagios/ndoutils-1.4b7# cd db
master:/usr/src/nagios/ndoutils-1.4b7/db# ./installdb -u root -p secret -h localhost -d nagios
** Creating tables for version 1.4b7
Using mysql.sql for installation...
** Updating table nagios_dbversion
Done!
|
- Syntax: -u = user; -p = password; -h = Datenbankserver; -d = MySQL DB
- Der Befehl mysqlshow nagios sollte dann eine lange Liste von Tabellen auflisten.
- Da es schlecht ist, mit dem Benutzer Root auf die Datenbank zuzugreifen, erstellen wir einen dedizierten Benutzer, der über nur sehr eingeschränkte Rechte verfügt.
- Hier erstellen wir den MySQL Benutzer nagios, der von localhost auf die Datenbank nagios mit dem Kennwort secret zugreifen darf:
|
master:~# mysql
mysql> GRANT SELECT,INSERT,UPDATE,DELETE
-> ON nagios.*
-> TO 'nagios'@'localhost'
-> IDENTIFIED BY 'secret';
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye
|
- Den neu erstellen Account können wir nun testen:
|
master:~# mysql -unagios -psecret -Dnagios
...
mysql> show tables;
|
- Hat dies geklappt, kann nun mit der Konfiguration fortgefahren werden.
Konfiguration
- Damit Nagios nun auch von seinem Glück etwas weiß, müssen wir ihm mitteilen, er möge doch bitte bei jeder Aktion ein Modul darüber informieren. Dazu öffnen wir die /usr/local/nagios/etc/nagios.cfg und passen sie ein wenig an:
- /usr/local/nagios/etc/nagios.cfg
|
event_broker_options=-1
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
|
- Als nächstes erfolgt die Konfiguration der NDOUtils selbst. Die Utils verfügen über zwei Konfigurationsdateien. Eine kümmert sich nur um den Daemon, die Andere ist für das Nagios-Modul zuständig.
- Für die Kommunikation zwischen dem Modul und dem Daemon existieren drei Möglichkeiten:
- File - Es wird eine Datei geschrieben und gelesen
- Unix - Die Kommunikation erfolgt über Unix Sockets
- TCP - Hier wird TCP als Verbindungsglied genutzt
- Normalerweise werden Unix-Sockets bevorzugt, da sie zumeist schneller sind als die Pakete über TCP zu senden, doch in diesem Fall verwenden wir TCP, da die Verbindung stabiler arbeitet:
- /usr/local/nagios/etc/ndo2db.cfg
|
ndo2db_user=nagios
ndo2db_group=nagios
socket_type=tcp
socket_name=/usr/local/nagios/var/ndo.sock
tcp_port=5668
db_servertype=mysql
db_host=localhost
db_port=3306
db_name=nagios
db_prefix=nagios_
db_user=nagios
db_pass=secret
max_timedevents_age=1440
max_systemcommands_age=10080
max_servicechecks_age=10080
max_hostchecks_age=10080
max_eventhandlers_age=44640
# Values: -1 = Everything
# 0 = Nothing
# 1 = Process info
# 2 = SQL queries
debug_level=1
# DEBUG VERBOSITY
# This option determines how verbose the debug log out will be.
# Values: 0 = Brief output
# 1 = More detailed
# 2 = Very detailed
debug_verbosity=0
debug_file=/usr/local/nagios/var/ndo2db.debug
max_debug_file_size=1000000
|
- Benutzername, Datenbank und Passwort müssen natürlich den lokalen Gegebenheiten angepasst werden.
- Bei Problemen empfiehlt sich den Debug-Modus zu aktivieren. Er gibt Auskunft darüber, was gerade vor sich geht.
|
Wurde der Debug-Modus aktiviert, verlangsamt dies Nagios beträchtlich und darf daher nicht vergessen werden, wieder zu deaktivieren.
|
- Folgt nun als nächstes die Konfiguration des Moduls:
- /usr/local/nagios/etc/ndomod.cfg
|
instance_name=default
output_type=tcpsocket
output=127.0.0.1
tcp_port=5668
output_buffer_items=5000
buffer_file=/usr/local/nagios/var/ndomod.tmp
file_rotation_interval=14400
file_rotation_timeout=60
reconnect_interval=15
reconnect_warning_interval=15
data_processing_options=-1
config_output_options=2
|
- Danach muss der NDO-Damon gestartet werden, am besten als Benutzer nagios:
|
master:~# su - nagios -c "/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg"
|
- Fehlt nur noch Nagios selbst neuzustarten:
|
master:~# /etc/init.d/nagios restart
|
- Ob das geklappt hat, lässt sich über folgenden MySQL-Befehl abfragen:
|
master:~# mysql -p nagios -e 'select alias,address,display_name from nagios_hosts'
|
- Eine mögliche Ausgabe kann so aussehen:
|
+-----------+-------------+--------------+
| alias | address | display_name |
+-----------+-------------+--------------+
| localhost | 127.0.0.1 | localhost |
| master | 192.168.5.1 | master |
+-----------+-------------+--------------+
|
- Für einen Test habe ich eine Kopie angefertigt (cp /usr/local/nagios/etc/objects/localhost.cfg /usr/local/nagios/etc/objects/master.cfg) und in der Kopie werden die IP-Adressen von localhost auf die normale IP-Adresse geändert. Nach diesem Akt ist eine Zeile in der Nagios-Hauptkonfiguration nagios.cfg einzufügen, die die neue Konfig. Datei beinhaltet.
- /usr/local/nagios/etc/nagios.cfg
|
cfg_file=/usr/local/nagios/etc/objects/master.cfg
|
- Nach einem Reload/Restart von Nagios muss der neue Host in der Tabelle oben vorhanden sein. Ist dies der Fall, so war die Konfiguration der NDOUtils erfolgreich.
- Damit beim nächsten Start des Servers od. Nagios auch die NDOUtils laufen, erweitern wir das Startscript von Nagios selbst ein wenig. Dazu öffnen wir die /etc/init.d/nagios und erweitern sie:
|
-- ~ Zeile 127 --
[...]
su - $NagiosUser -c "/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg"
su - $NagiosUser -c "touch $NagiosVarDir/nagios.log $NagiosRetentionFile"
[...]
-- ~ Zeile 147 --
pid_nagios
killproc_nagios nagios
killall ndo2db
[...]
|
Nagios Process Business View
- Für die spätere Verknüpfung einzelner Hosts und Services zu einem Ganzen, kommt nun das AddOn Nagios Process Business View an die Reihe.
Installation
- Dieses benötigt einige Perl Module, welche - sofern vorhanden - von der Distribution übernommen werden können, od. aus dem CPAN Archiv.
- Das Paket selbst kann von hier bezogen werden.
- Auspacken und an Ort und Stelle verschieben
|
master:/usr/src/nagios# tar xzf nagios-business-process-addon-0.9.1.tar.gz
mv nagios-ext/ /usr/local/
|
- Es empfiehlt sich den Pfad /usr/local/nagios-ext' bei zu behalten, da sonst eine Menge Pfade innerhalb der CGI Dateien angepasst werden müssen.
|
master:~# apt-get install libcgi-simple-perl
|
|
master:~# perl -MCPAN -e 'install CGI::Simple'
|
|
master:/usr/local/nagios # tar xvzf CGI-Simple.tar.gz
master:/usr/local/nagios # cd CGI-Simple
master:/usr/local/nagios # perl Makefile.pl
master:/usr/local/nagios # make && make install
|
- Dann müssen nach dem entpacken und kopieren einige Perl Module in ein Perl Verzeichnis gelinkt werden. Welche Verzeichnisse von Perl beachtet werden, lässt sich mit folgendem Befehl anzeigen:
|
master:~# perl -e 'print join("\n", @INC) . "\n"'
/etc/perl
/usr/local/lib/perl/5.8.8
/usr/local/share/perl/5.8.8
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.8
/usr/share/perl/5.8
/usr/local/lib/site_perl
.
|
- In diesem Fall verwenden wir das /usr/lib/perl/5.8.8 Verzeichnis:
|
master: ~# cd /usr/lib/perl/5.8.8
master: /usr/lib/perl/5.8.8# ln -s /usr/local/nagios-ext/sbin/nagiosBp.pm
master: /usr/lib/perl/5.8.8# ln -s /usr/local/nagios-ext/sbin/ndodb.pm
master: /usr/lib/perl/5.8.8# ln -s /usr/local/nagios-ext/sbin/bsutils.pm
|
Konfiguration
- Nun folgt die Datenbank Konfiguration. Die Daten sind die gleichen, wie sie die NDOUtils nutzen:
- /usr/local/nagios-ext/etc/ndo_db_readonly.cfg
|
ndodb_host=localhost
ndodb_port=3306
ndodb_database=nagios
ndodb_username=nagios
ndodb_password=secret
ndodb_prefix=nagios_
|
- Das Impact Plugin kann eine Art Worst-Case' Szenario abbilden. Also was passiert wenn Host X und/oder Service Y ausfallen. Es dient allerdings in erster Linie dazu, die eigene Konfiguration zu kontrollieren, ob die Abhängigkeiten korrekt in der Konfiguration umgesetzt worden sind.
- Damit diese Erweiterung arbeiten kann, wird ein Verzeichnis benötigt, auf welches der Webserver schreibend zugreifen kann. Das Verzeichnis kann über /usr/local/nagios-ext/sbin/nagios-bp.cgi gewählt werden:
- /usr/local/nagios-ext/sbin/nagios-bp.cgi
|
my $session_dir = "/var/www/nagios_bp.sessions";
|
|
master: ~# mkdir -p /var/www/nagios_bp.sessions
master: ~# chown www-data:www-data /var/www/nagios_bp.sessions
master: ~# chmod 750 /var/www/nagios_bp.sessions
|
- /usr/local/nagios-ext/sbin/nagios-bp.cgi
|
my $session_dir = "/srv/www/nagios_bp.sessions";
|
|
master: ~# mkdir -p /srv/www/nagios_bp.sessions
master: ~# chown www-run:www /srv/www/nagios_bp.sessions
master: ~# chmod 750 /srv/www/nagios_bp.sessions
|
- Damit dieses neue Verzeichnis vom Apachen mit eingebunden wird, bedarf es einer Anpassung der von Nagios angelegten Konfiguration. Die Nachfolgenden Zeilen kommen an das Ende der /etc/apache2/conf.d/nagios Datei.
- /etc/apache2/conf.d/nagios
|
[...]
ScriptAlias /nagios-ext/cgi-bin /usr/local/nagios-ext/sbin
<Directory "/usr/local/nagios-ext/sbin">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
Alias /nagios-ext /usr/local/nagios-ext/share
<Directory "/usr/local/nagios-ext/share">
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
|
- Nun den Apache neustarten:
|
master: ~# /etc/init.dapache2 reload
|
- Damit nun auch der Zugriff bequem erfolgen kann, muss die Hauptseite von Nagios einige zusätzliche Links erhalten. Dazu öffnen wir die /usr/local/nagios/share/side.html und erweitern sie:
- /usr/local/nagios/share/side.html
|
--- Nach Zeile ~143 --
<tr>
<td width=13><img src="images/greendot.gif" width="13" height="14" name="statuswrl-dot"></td>
<td nowrap><a href="/nagios-ext/cgi-bin/nagios-bp.cgi" target="main" onMouseOver="switchdot('statuswrl-dot',1)" onMouseOut="switchdot('statuswrl-dot',0)" class="NavBarItem">Business Process View</a></td>
</tr>
<tr>
<td width=13><img src="images/greendot.gif" width="13" height="14" name="statuswrl-dot"></td>
<td nowrap><a href="/nagios-ext/cgi-bin/nagios-bp.cgi?mode=bi" target="main" onMouseOver="switchdot('statuswrl-dot',1)"onMouseOut="switchdot('statuswrl-dot',0)" class="NavBarItem">Business Impact</a></td>
</tr>
|
- Nach dem neuladen der Seite im Browser (FF: Shift +F5), sollten zwei neue Links auftauchen. Dank der Beispiel Konfiguration können die ersten Klicks ausprobiert werden. Nicht verwundern sollte der Status, denn die dort angegebenen Hosts und Services existieren natürlich nicht. Aber die Funktion an sich wird damit bestätigt.
SNMP NagTrap
- Wer über Geräte verfügt, die keinen direkten Zugriff per SNMP erlauben sondern nur Traps senden, der benötigt einen entsprechenden Empfänger und ein Programm zu ordnen der jeweiligen Traps.
- Der Empfänger in diesem Fall ist der snmptrapd' und der Sortierer snmptt. Der snmptt schreibt die bekannten und (wenn gewünscht) unbekannten Traps in eine Datenbank.
- Für die Weboberfläche ist dann NagTrap zuständig.:
NagTrap Installation
- NagTrap selbst kann von hier besorgt werden.
|
master:/usr/src/nagios# tar xzf nagtrap-0.1.2.tar.gz
master:/usr/src/nagios# mv nagtrap/nagtrap/ /usr/local/nagios/share/
master:/usr/src/nagios# cp nagtrap/plugin/check_snmp_traps.pl /usr/local/nagios/libexec/check_snmp_traps
|
- 'snmptt verwendet wie bereits erwähnt eine eigene Datenbank. Diese muss natürlich zuerst erstellt werden, um diese dann zu füllen. Dazu findeen sich im entpackten Verzeichnis nagtrap/db/ drei SQL Dateien. Da wir die neueste snmptt verwenden wollen, enscheiden wir uns für nagtrap/db/snmptt-1.2.sql:
|
master:/usr/src/nagios# tar xzf nagtrap-0.1.2.tar.gz
master:/usr/src/nagios# mv nagtrap/nagtrap/ /usr/local/nagios/share/
master:/usr/src/nagios# cp nagtrap/plugin/check_snmptraps.pl /usr/local/nagios/libexec/check_snmp_traps
|
- Nun erstellen wir die Datenbank zzgl. Benutzer:
|
master:/usr/src/nagios# mysqladmin create snmptt -p
master:/usr/src/nagios# mysql snmptt < nagtrap/db/snmptt-1.2.sql -p
master:/usr/src/nagios# mysql
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON snmptt.* TO 'snmptt'@'localhost' IDENTIFIED BY 'secret';
Query OK, 0 rows affected (0.00 sec)
mysql> quit
|
- Dann erfolgt der obligatorische Test.
|
master:/usr/src/nagios# mysql -usnmptt -psecret -Dsnmptt
mysql> show tables;
+------------------+
| Tables_in_snmptt |
+------------------+
| snmptt |
| snmptt_archive |
+------------------+
2 rows in set (0.01 sec)
mysql> quit
Bye
|
- Klappt also. Wer auch die unbekannten Traps in der Datenbank haben möchte, muss noch folgenden Befehl absetzen:
|
master:/usr/src/nagios# mysql snmptt < nagtrap/db/snmptt_unknown.sql
|
NagTrap Konfiguration
- Damit das Plugin nun von den neuen Gegebenheiten weiß, passen wir das Perl Plugin entsprechen an:
- /usr/local/nagios/libexec/check_snmp_traps
|
# ==================== Database connect information ====================
my $dbHost = "localhost";
my $dbName = "snmptt";
my $dbUser = "snmptt";
my $dbPass = "secret";
my $dbTable = "snmptt";
....
# ==================== Load Perl modules ====================
use strict;
use Getopt::Long;
use vars qw($PROGNAME);
use lib "/usr/local/nagios/libexec/"; # Pfad zur util.pm !!
|
- Folgt als nächstes die NagTrap Konfiguration selbst. Dazu begeben wir uns in das Verzeichnis von NagTrap und kopieren die Beispiel Konfig:
|
master:~# cd /usr/local/nagios/share/nagtrap
master:/usr/local/nagios/share/nagtrap# cp etc/config.ini.php-dist etc/config.ini.php
|
- Und passen sie gleich an:
- /usr/local/nagios/share/nagtrap/etc/config.ini.php
|
[global]
language = DE
useAuthentification = 1
allowedUser = nagiosadmin
useUnknownTraps = 0
step = 30
images = ./images/
iconStyle = dropline
cutTrapMessage = 100
illegalCharJavabox = <,>,'
[nagios]
prefix = /nagios
images = ../images/
[database]
host = localhost
user = snmptt
password = secret
name = snmptt
tableSnmptt = snmptt
tableSnmpttUnk = snmptt_unknown
[internal]
version = Version 0.1.2
title = NagTrap
|
- Wir gewohnt, für den einfachen Zugriff auf die NatTrap Seite, der entsprechende Link in der side.htm.:
- /usr/local/nagios/share/side.html
|
-- ~ Nach Zeile 147 --
<tr>
<td width=13><img src="images/greendot.gif" width="13" height="14" name="statuswrl-dot"></td>
<td nowrap><a href="/nagios/nagtrap/index.php" target="main" onMouseOver="switchdot('statuswrl-dot',1)"onMouseOut="switchdot('statuswrl-dot',0)" class="NavBarItem">NagTrap</a></td>
</tr>
|
SNMP TrapReceiver
- Um einen Trapreceiver einzurichten, benötigt es das Paket net-snmp, in dem das Programm snmptrapd enthalten ist. Dieser ist in allen Distributionen enthalten und kann daher einfach installiert werden:
|
master:~# apt-get install snmpd libconfig-inifiles-perl libsnmp-base libsnmp-perl
|
|
master:~# yast -i net-snmp perl-Config-IniFiles
|
- Letzteres Paket ist nötig, damit snmptt Dateien im "ini Stil lesen kann.
- Nun kommt 'snmptt selbst. Er kann von hier besorgt werden. Da er nur aus einer Reihe von Perl Scripten besteht, reicht ein auspacken, um die Dateien anschließend in die jeweiligen Verzeichnisse zu kopieren:
|
master:/usr/src/nagios# cp snmptt_1.2/snmptt /usr/sbin/
master:/usr/src/nagios# cp snmptt_1.2/snmptthandler /usr/sbin/
master:/usr/src/nagios# cp snmptt_1.2/snmpttconvert* /usr/bin/
master:/usr/src/nagios# cp snmptt_1.2/snmptt.ini /etc/snmp/
master:/usr/src/nagios# chmod +x /usr/bin/snmpttconvert*
master:/usr/src/nagios# chmod +x /usr/sbin/snmptt*
|
- snmptt kann endweder im Standalone Modues laufen, oder im Daemon Modues. In diesem Szenario entscheiden wir uns für die Daemon Variente. Daher schaut eine Konfiguration so aus:
|
[General]
snmptt_system_name = master
mode = daemon
multiple_event = 1
dns_enable = 0
strip_domain = 0
strip_domain_list = <<END
nagios.local
END
resolve_value_ip_addresses = 0
net_snmp_perl_enable = 1
net_snmp_perl_best_guess = 1
translate_log_trap_oid = 0
translate_value_oids = 1
translate_enterprise_oid_format = 1
translate_trap_oid_format = 1
translate_varname_oid_format = 1
translate_integers = 1
mibs_environment = ALL
wildcard_expansion_separator = " "
allow_unsafe_regex = 0
remove_backslash_from_quotes = 0
dynamic_nodes = 0
description_mode = 0
description_clean = 1
threads_enable = 0
threads_max = 10
[DaemonMode]
daemon_fork = 1
daemon_uid = nagios
pid_file = /var/run/snmptt.pid
spool_directory = /var/spool/snmptt/
sleep = 5
use_trap_time = 1
keep_unlogged_traps = 1
[Logging]
stdout_enable = 0
log_enable = 1
log_file = /var/log/snmptt.log
log_system_enable = 1
log_system_file = /var/log/snmpttsystem.log
unknown_trap_log_enable = 1
unknown_trap_log_file = /var/log/snmpttunknown.log
statistics_interval = 0
syslog_enable = 0
syslog_facility = local0
syslog_level_debug = <<END
END
syslog_level_info = <<END
END
syslog_level_notice = <<END
END
syslog_level_warning = <<END
END
syslog_level_err = <<END
END
syslog_level_crit = <<END
END
syslog_level_alert = <<END
END
syslog_level = warning
syslog_system_enable = 0
syslog_system_facility = local0
syslog_system_level = warning
[SQL]
db_translate_enterprise = 0
db_unknown_trap_format = '$-*'
sql_custom_columns = <<END
END
sql_custom_columns_unknown = <<END
END
mysql_dbi_enable = 1
mysql_dbi_host = localhost
mysql_dbi_port = 3306
mysql_dbi_database = snmptt
mysql_dbi_table = snmptt
mysql_dbi_table_unknown = snmptt_unknown
mysql_dbi_table_statistics =
mysql_dbi_username = snmptt
mysql_dbi_password = secret
mysql_ping_on_insert = 1
mysql_ping_interval = 300
postgresql_dbi_enable = 0
postgresql_dbi_module = 0
postgresql_dbi_hostport_enable = 0
postgresql_dbi_host = localhost
postgresql_dbi_port = 5432
postgresql_dbi_database = snmptt
postgresql_dbi_table_unknown = snmptt_unknown
postgresql_dbi_table_statistics =
postgresql_dbi_table = snmptt
postgresql_dbi_username = snmpttuser
postgresql_dbi_password = password
postgresql_ping_on_insert = 1
postgresql_ping_interval = 300
dbd_odbc_enable = 0
dbd_odbc_dsn = snmptt
dbd_odbc_table = snmptt
dbd_odbc_table_unknown = snmptt_unknown
dbd_odbc_table_statistics =
dbd_odbc_username = snmptt
dbd_odbc_password = password
dbd_odbc_ping_on_insert = 1
dbd_odbc_ping_interval = 300
[Exec]
exec_enable = 1
pre_exec_enable = 1
unknown_trap_exec =
unknown_trap_exec_format =
exec_escape = 1
[Debugging]
DEBUGGING = 2
DEBUGGING_FILE = /var/log/snmptt.debug
DEBUGGING_FILE_HANDLER = /var/log/snmptthandler.debug
[TrapFiles]
snmptt_conf_files = <<END
/etc/snmp/snmptt.conf
END
|
|
Auch hier sollte darauf geachtet werden, Debugging nach dem Funktionstest wieder zu deaktivieren
|
- Besonders die Zeilen fast am Ende snmptt_conf_files = <<END /etc/snmp/snmptt.conf END bedürfen besonderer Aufmerksamkeit. Denn zwischen den END Schlüsselwörtern können eine Reihe von Trap Konfigurationen eingefügt werden. Für jedes Gerät, welches Traps versendet, sollte eine eigene Datei angelegt werden.
- Damit der snmptt auch beim nächsten Start mit hochkommt, verwenden wir ein angepassten Startscript.
|
#!/bin/bash
# init file for snmptt
# Alex Burger - 8/29/02
OPTIONS="--daemon"
RETVAL=0
prog="snmptt"
start() {
echo -n $"Starting $prog: "
/usr/sbin/snmptt $OPTIONS
/usr/sbin/snmptrapd -Lf /var/log/snmptt.debug -On -C -c /etc/snmp/snmptrapd.conf
RETVAL=$?
echo
touch /var/lock/snmptt
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
pkill snmptrapd
killall snmptt 2>/dev/null
RETVAL=$?
echo
rm -f /var/lock/snmptt
if test -f /var/run/snmptt.pid ; then
[ $RETVAL -eq 0 ] && rm -f /var/run/snmptt.pid
fi
return $RETVAL
}
reload(){
echo -n $"Reloading config file: "
killall snmptt -HUP
RETVAL=$?
echo
return $RETVAL
}
restart(){
stop
start
}
condrestart(){
[ -e /var/lock/snmptt ] && restart
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
condrestart)
condrestart
;;
status)
status snmptt
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|reload}"
RETVAL=1
esac
exit $RETVAL
|
SNMP TrapReceiver Konfiguration
- Die Konfiguration ist recht einfach gehalten. Es genügt, wenn in der entsprechenden Datei, folgender zwei Einträge vorhanden sind:
|
disableAuthorization yes
traphandle default /usr/sbin/snmptthandler
|
- Insbesondere die erste Zeile ist wichtig, da sonst die Traps abgelehnt werden, dessen Urheber nicht bekannt ist.
SNMP Trap testen
- Wenn die Arbeiten bis zu diesem Punkt abgeschlossen wurden, kann nun getestet werden, ob SNMPTT ordnungsgemäß funktioniert. Dazu müssen wir ihn natürlich starten:
|
master: ~# /etc/init.d/snmptt start
|
- Dabei sollten folgende Prozesse zu sehen sein:
|
master:~# ps ax | grep snmp
5964 ? Ss 0:00 /usr/bin/perl /usr/sbin/snmptt --daemon
5965 ? Ss 0:00 /usr/bin/perl /usr/sbin/snmptt --daemon
5967 ? Ss 0:00 /usr/sbin/snmptrapd -Lf /var/log/snmptt.debug -On -C -c /etc/snmp/snmptrapd.conf
|
- Ist dies der Fall, können wir einen ein Beispiel Trap in den Spool Ordner von SNMPTT kopieren, welcher dann diesen Trap verarbeitet. EIn solche Datei findet sich im Quellverzeichnis von SNMPTT:
|
master:~# cp /usr/src/nagios/snmptt_1.2/sample-unknown-trap-daemon /var/spool/snmptt/
|
- In der Logdatei /var/log/snmpttunknown.log befindet sich dann folgender Eintrag:
- /var/log/snmpttunknown.log
|
Mon Aug 16 16:06:35 2004: Unknown trap (.1.3.6.1.0.0.0.0.0) received from server01.domain.com at:
Value 0: server01.domain.com
Value 1: 192.168.1.1
Value 2: 111:21:48:19.07
Value 3: .1.3.6.1.0.0.0.0.0
Value 4: 192.168.1.1
Value 5: public
Value 6: .1.3.6.1.4.1.232
Ent Value 0: .1.3.6.1.2.1.1.5.0=SERVER01
Ent Value 1: .1.3.6.1.4.1.232.11.2.11.1.0=0
Ent Value 2: .1.3.6.1.4.1.232.11.2.8.1.0=Sample Unknown Trap
|
- Je nachdem, ob auch angegeben wurde, das unbekannte Traps auch in der Datenbank landen sollen, findet sich nun im NagTrap ebenfalls ein Eintrag.
- Um nun aus diesem unbekannten Trap einen bekannten zu generieren, ordnen wir diesen Trap ein. Dazu wird die /etc/snmp/snmptt.conf verwendet.
|
EVENT sysName.0 .1.3.6.1.0.0.0.0.0 "Status Events" Normal
MATCH $2: (^0$)
FORMAT TestTrap: $3
|
- Der Match Eintrag beginnt ab dem ersten Ent Value zu zählen. Wir greifen uns also den Eintrag Ent Value 1 welcher die zweite Variable darstellt. Er fängt also mit 1 an zu zählen.
- Nun wird noch der SNMPTT neugestartet:
|
master: ~# /etc/init.d/snmptt stop
master: ~# /etc/init.d/snmptt start
|
|
Die Funktion restart funktioniert noch nicht ordnungsgemäß
|
- Nun kann erneut der Testtrap in das Spool Verzeichnis kopiert werden:
|
master:~# cp /usr/src/nagios/snmptt_1.2/sample-unknown-trap-daemon /var/spool/snmptt/
|
- Hat alles funktioniert, sollte ein Eintrag in der Datenbank enthalten sein und den Status normal besitzen:
|
master:~# mysql -p snmptt -e 'select trapoid,hostname,category,severity from snmptt'
Enter password:
+--------------------+---------------------+---------------+----------+
| trapoid | hostname | category | severity |
+--------------------+---------------------+---------------+----------+
| .1.3.6.1.0.0.0.0.0 | server01.domain.com | Status Events | Normal |
+--------------------+---------------------+---------------+----------+
|
- Damit ist SNMPTT funktionsfähig und kann nun verwendet werden.
Performance Grafiken mit PnP
- Viele der Plugins liefern Performancedaten zurück. Es gibt viele Möglichkeiten, diese grafisch erzeugen zu lassen. Die einfachste Art dies zu tun, ist mittels der PHP Anwendung, PnP. Die Anwendung kann von hier kopiert werden.
- Die Installation gestaltet sich recht einfach:
Installation
|
master:/usr/src/nagios# apt-get install rrdtool librrds-perl
|
|
master:/usr/src/nagios# yast -i rrdtool
|
- Auspacken und installieren
|
master:/usr/src/nagios# tar xzf pnp-0.4.7.tar.gz
master:/usr/src/nagios# cd pnp-0.4.7
master:/usr/src/nagios/pnp-0.4.7# ./configure && make all && make install && make fullinstall
|
- Das Script schaut nach, ob auch alles vorhanden ist und kopiert sich entsprechend nach /usr/local/nagios/
Konfiguration
- PnP unterstützt mehrere Arten von Arbeitsweisen. Welche Art für einen selbst die Beste ist, hängt von der Anzahl der zu erzeugenden Grafiken ab. Derzeit existieren drei Möglichkeiten:
- PnP Modus
- Standard - Nagios ruft für jeden Check das Perl-Script process_perfdata.pl auf, um die Performance Daten zu verarbeiten. Das klappt bis ca. 2000 Services gut. Verursacht allerdings eine Hohe IO Last
- Bulk Mode - Hier werden die Daten in eine Datei geschrieben und dann mit einem Schlag abgearbeitet. Verursacht wesentlich weniger Last, aber der Durchgang zum abarbeiten benötigt mehr Zeit pro Zyklus.
- Bulk Mode mit NPCD - Hier überwacht ein Daemon ein Spool Verzeichnis, welches Performance Werte enthält. Der Vorteil besteht darin, dass Nagios nicht selbst das Perl Script aufrufen muss und damit sich sofort wieder seiner eigentlichen Arbeit widmen kann. Das Abarbeiten der Daten übernimmt der NPCD Daemon. Damit wird die Performance Auswertung komplett vom Nagios entkoppelt. Der Nachteil besteht darin, dass die Daten zumeist um 5 Minuten später erscheinen. Dies ist aber in den meisten Fällen sicher kein Problem.
- Mehr zu den einzelnen Methoden finden sich auf der Webseite des Projektes.
- In dieser Anleitung beschränke ich mich auf den Bulk Mode. Dafür müssen wir Nagios ein wenig anpassen und fügen dazu in seiner Hauptkonfigurations- Datei folgende Einträge hinzu:
- /usr/local/nagios/etc/nagios.cfg
|
process_performance_data=1
#
# Service Performancedaten
#
service_perfdata_file=/usr/local/nagios/var/service-perfdata
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=15
service_perfdata_file_processing_command=process-service-perfdata-file
#
# Host Performancedaten ab Nagios 3.x
#
host_perfdata_file=/usr/local/nagios/var/host-perfdata
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$
host_perfdata_file_mode=a
host_perfdata_file_processing_interval=15
host_perfdata_file_processing_command=process-host-perfdata-file
|
|
Die Zeilen dürfen keinen Umbruch haben. Sie sind jeweils auf einer Zeile
|
- Damit werden nun die Performance Daten ausgewertet und in die jeweilige Datei geschrieben.
- Nun sind auch noch zwei neue Kommandos nötig, welche wir ebenfalls nachtragen. Dazu verwenden wir die Datei /usr/local/nagios/etc/objects/misccommands.cfg
- /usr/local/nagios/etc/objects/misccommands.cfg
|
define command {
command_name process-host-perfdata-file
command_line $USER1$/process_perfdata.pl --bulk=/usr/local/nagios/var/host-perfdata
}
define command {
command_name process-service-perfdata-file
command_line $USER1$/process_perfdata.pl --bulk=/usr/local/nagios/var/service-perfdata
}
|
- Damit diese Datei auch eingelesen wird, muss erneut die nagios.cfg aufgerufen werden um, folgende Zeile hinzuzufügen:
- /usr/local/nagios/etc/nagios.cfg
|
...
cfg_file=/usr/local/nagios/etc/objects/misccommands.cfg
...
|
- Dann geben wir Nagios Bescheid:
|
master:~# /etc/init.d/nagios restart
Running configuration check...done.
Stopping nagios: done.
Starting nagios: done.
|
- Als nächstes wird PnP selbst konfiguriert. Dazu kann ein wenig die /usr/local/nagios/etc/pnp/config.php angepasst werden:
- /usr/local/nagios/etc/pnp/config.php
|
<?php
$conf['rrdtool'] = "/usr/bin/rrdtool";
$conf['graph_width'] = "500";
$conf['graph_height'] = "100";
$conf['graph_opt'] = "";
$conf['rrdbase'] = "/usr/local/nagios/share/perfdata/";
$conf['page_dir'] = "/usr/local/nagios/etc/pnp/pages/";
$conf['refresh'] = "90";
$conf['max_age'] = 60*60*6;
$conf['temp'] = "/var/tmp";
$conf['nagios_base'] = "/nagios/cgi-bin";
$conf['allowed_for_service_links'] = "EVERYONE";
$conf['allowed_for_host_search'] = "EVERYONE";
$conf['allowed_for_host_overview'] = "EVERYONE";
$conf['allowed_for_pages'] = "EVERYONE";
$conf['overview-range'] = 1 ;
$conf['lang'] = "de";
$conf['date_fmt'] = "d.m.y G:i";
$conf['use_fpdf'] = 1;
$conf['background_pdf'] = '/usr/local/nagios/etc/pnp/background.pdf' ;
$conf['use_calendar'] = 1;
$views[0]["title"] = "4 Hours";
$views[0]["start"] = ( 60*60*4 );
$views[1]["title"] = "24 Hours";
$views[1]["start"] = ( 60*60*24 );
$views[2]["title"] = "One Week";
$views[2]["start"] = ( 60*60*24*7 );
$views[3]["title"] = "One Month";
$views[3]["start"] = ( 60*60*24*30 );
$views[4]["title"] = "One Year";
$views[4]["start"] = ( 60*60*24*365 );
?>
|
- Damit ist PnP einsatzbereit und kann über die Webseite http://master/nagios/pnp/index.php?host=localhost aufgerufen werden. :Mit diesem Link erhalten wir die Performancegrafiken vom Rechner localhost. Um die Links bequem über die Nagioswebseite aufrufen zu können, verwenden wir die Template Funktion. Dazu öffnen wir folgende Datei:
- /usr/local/nagios/etc/objects/templates.cfg
- und passen sie ein wenig an:
|
# define ServiceExt Info
define host {
name host-pnp
register 0
action_url /nagios/pnp/index.php?host=$HOSTNAME$
}
define service {
name srv-pnp
register 0
action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
}
|
- Bei den vorhandenen Eintragen, passen wir zwei an:
|
define service{
name generic-service ; The 'name' of this service template
active_checks_enabled 1 ; Active service checks are enabled
use srv-pnp ; <----------- hinzufuegen
[...]
define host{
name linux-server ; The name of this host template
use generic-host,host-pnp ; <------- hinzufuegen
[...]
|
- Damit haben nun alle Service und Hosts einen ActionLink, welcher direkt zur jeweiligen PnP Seite führt.
- Wird NRPE eingesetzt um die Remote Checks auszuführen, würde PnP nicht die Performancewerte erhalten. Daher müssen wir zusätzlich eine Konfiguration anlegen, um PnP auf NRPE vorzubereiten. Dafür muss lediglich eine Datei angepasst werden:
- /usr/local/nagios/etc/pnp/check_commands/check_nrpe.cfg
Grafische Karten mit NagiVis
- Um schnell im Blick zu haben, wo der (technische) Schuh drückt, eignet sich NagVis um auf einer Karte (Map) den Status anzuzeigen. NagVis nutzt die Datenbank der NDOUtils um den Status abzufragen.
Installation
- NagVis kann von hier besorgt werden. Es sei angegeraten (wie in diesem Beispiel) auf die Version NagVis-1.3rc1> zu setzen, da sie über interessante Funktionen verfügt. Es werden auf jeden Fall Pakete wie Graphiz und FreeType2 benötigt.
|
master:~# apt-get install graphviz
|
- Entpacken und verschieben
|
master:/usr/src/nagios# tar xzf nagvis-1.3b2.tar.gz
master:/usr/src/nagios# mv nagvis-1.3b2 /usr/local/nagios/share/nagvis
master:/usr/src/nagios# cd /usr/local/nagios/share/nagvis/etc/
master:/usr/local/nagios/share/nagvis/etc# cp nagvis.ini.php-sample nagvis.ini.php
|
Konfiguration
- Über die nagvis.ini können sehr viele Standard Paramter festgelegt, sodass später beim füllen der Karte nur noch wenige Optionen ausgefüllt werden müssen. Eine Beispielkonfiguration kann so aussehen:
|
[global]
language="german"
dateformat="Y-m-d H:i:s"
displayheader=1
refreshtime=60
[defaults]
icons="std_medium"
recognizeservices=1
onlyhardstates=1
backgroundcolor="#fff"
hovermenu=1
hovertemplate="default-pnp"
usegdlibs=1
urltarget="_self"
showinlists=1
[wui]
autoupdatefreq=25
maplocktime=5
allowedforconfig="nagios"
[automap]
showinlists=1
defaultroot="localhost"
[paths]
base="/usr/local/nagios/share/nagvis/"
htmlbase="/nagios/nagvis"
htmlcgi="/nagios/cgi-bin"
[backend_ndomy_1]
backendid="ndomy_1"
backendtype="ndomy"
dbhost="localhost"
dbname="nagios"
dbuser="nagios"
dbpass="secret"
dbprefix="nagios_"
dbinstancename="default"
htmlcgi="/nagios/cgi-bin"
; [rotation_demo]
; rotationid="demo"
; maps="demo,demo2"
; interval=15
|
- Die Zeile hovertemplate="default-pnp" sorgt dafür, das für den MausHover ein bestimmtes Template verwendet wird. Dieses auf PnP abgestimmte Template muss zuvor hier (ganz unten) heruntergeladen werden, und der Inhalt nach 'usr/local/share/nagvis/nagvis/ kopiert werden.
- Damit der Webserver die Rechte hat in das NagVis Verzeichnis zu schreiben, müssen wir einige Rechte anpassen:
|
master:~# chown www-data:www-data /usr/local/nagios/share/nagvis -R
master:~# chmod 664 /usr/local/nagios/share/nagvis/etc/nagvis.ini.php
master:~# chmod 775 /usr/local/nagios/share/nagvis/nagvis/images/maps
master:~# chmod 664 /usr/local/nagios/share/nagvis/nagvis/images/maps/*
master:~# chmod 775 /usr/local/nagios/share/nagvis/etc/maps
master:~# chmod 664 /usr/local/nagios/share/nagvis/etc/maps/*
master:~# chmod 775 /usr/local/nagios/share/nagvis/var
|
|
master:~# chown wwwrun:www /usr/local/nagios/share/nagvis -R
...
|
Ist alles gelaufen, kann über die Seite http://master/nagios/nagvis/index.php auf die Seite zugegriffen werden.
TicketSystem mit OTRS
- Wie bereits eingangs erläutert, wollen wir ein Ticketsystem einsetzen, mit dem Namen OTRS. Dieses kann von hier besorgt werden.
Installation
- OTRS ist in Perl geschrieben und kann ausgiebig von dem Apache2 Modul mod-perl gebrauch machen. Daher werden wir diese Pakete nach installieren.
|
master: ~# apt-get install libapache2-mod-perl2 libapache-dbi-perl
|
|
master: ~# yast -i apache2-mod_perl
|
- OTRS läuft unter einem eigenen Benutzer und eigener Gruppe. Daher werden wir diese entsprechend erstellen:
|
master: ~# groupadd otrs
master: ~# useradd -s /bin/bash -g otrs -G www-data -d /usr/local/otrs otrs
|
|
master: ~# groupadd otrs
master: ~# useradd -s /bin/bash -g otrs -G www -d /usr/local/otrs otrs
|
|
Unter SuSE empfiehlt sich generell ein RPM Paket vorzuziehen, da diese ausgezeichnet gepflegt werden.
|
- Nun folgt OTRS selbst:
|
master: /usr/src/nagios# tar xvzf otrs-2.2.6.tar.gz
master: /usr/src/nagios# mv /usr/src/nagios/otrs-2.2.6 /usr/local/otrs
|
- Um zu schauen, ob alle benötigten Perl Module vorhanden sind, gibt es ein Prüfscript, welches nur ausgeführt werden muss:
|
master: ~# /usr/local/otrs/bin/otrs.checkModules
|
- Fehlende Module müssen dann entsprechend nach installiert werden.
- Als nächstes erfolgen ein paar Grundkonfigurationen:
|
master:~# cd /usr/local/otrs
master: /usr/local/otrs# cp Kernel/Config.pm.dist Kernel/Config.pm
master: /usr/local/otrs# cd Kernel/Config/
master: /usr/local/otrs/Kernel/Config# for foo in *.dist; do cp $foo `basename $foo .dist`; done
master: /usr/local/otrs/Kernel/Config# cd /usr/local/otrs
master: /usr/local/otrs# perl -cw bin/cgi-bin/index.pl
master: /usr/local/otrs# perl -cw bin/PostMaster.pl
master: /usr/local/otrs# bin/SetPermissions.sh /usr/local/otrs otrs www-data otrs www-data
|
|
...
master: /usr/local/otrs# bin/SetPermissions.sh /usr/local/otrs otrs wwwrun otrs www
...
|
Konfiguration
- Sind die Rechte gesetzt, müssen noch zusätzlich einige Pfade angepasst werden, welche in der /usr/local/otrs/Kernel/Config.pm zu finden sind.
|
package Kernel::Config;
sub Load {
my $Self = shift;
$Self->{DatabaseHost} = 'localhost';
$Self->{Database} = 'otrs';
$Self->{DatabaseUser} = 'otrs';
$Self->{DatabasePw} = 'secret';
$Self->{DatabaseDSN} = "DBI:mysql:database=$Self->{Database};host=$Self->{DatabaseHost};";
$Self->{Home} = '/usr/local/otrs';
}
use strict;
use vars qw(@ISA $VERSION);
use Kernel::Config::Defaults;
push (@ISA, 'Kernel::Config::Defaults');
$VERSION = '$Revision: 1.18 $';
$VERSION =~ s/^\$.*:\W(.*)\W.+?$/$1/;
1;
|
- Nun muss der Apache2 noch auf das neue Verzeichnis aufmerksam gemacht werden. Dazu erstellen wir eine neue Konfiguration für eben diesen:
- /etc/apache2/conf.d/otrs.conf
|
# agent, admin and customer frontend
ScriptAlias /otrs/ "/usr/local/otrs/bin/cgi-bin/"
Alias /otrs-web/ "/usr/local/otrs/var/httpd/htdocs/"
# directory settings
<Directory "/usr/local/otrs/bin/cgi-bin/">
AllowOverride None
Options +ExecCGI -Includes
DirectoryIndex index.pl
Order allow,deny
Allow from all
</Directory>
<Directory "/usr/local/otrs/var/httpd/htdocs/">
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# load all otrs modules
Perlrequire /usr/local/otrs/scripts/apache2-perl-startup.pl
# Apache::Reload - Reload Perl Modules when Changed on Disk
PerlModule Apache2::Reload
PerlInitHandler Apache2::Reload
PerlModule Apache2::RequestRec
# set mod_perl2 options
<Location /otrs>
# ErrorDocument 403 /otrs/customer.pl
ErrorDocument 403 /otrs/index.pl
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
Options +ExecCGI
PerlOptions +ParseHeaders
PerlOptions +SetupEnv
Order allow,deny
Allow from all
</Location>
|
- Da eine in jedem Fall empfohlen wird, mod-perl2 einzusetzen, müssen wir noch ein paar Startscripte anpassen:
- /usr/local/otrs/scipts/apache2-perl-startup.pl
|
#! /usr/bin/perl
use strict;
[...]
# set otrs lib path!
use lib "/usr/local/otrs/";
use lib "/usr/local/otrs/Kernel/cpan-lib";
[...]
use Apache::DBI ();
Apache::DBI->connect_on_init('DBI:mysql:otrs', 'otrs', 'secret');
use DBI ();
# enable this if you use mysql
use DBD::mysql ();
[...]
|
- Der Apache2 muss danach natürlich neugestartet werden.
|
master: ~# /etc/init.d/apache2 restart
|
- Da OTRS einige Cronjobs benötigt, werden diese installiert:
|
master: /usr/local/otrs# cd /usr/local/otrs/var/cron
master: /usr/local/otrs/var/cron# for foo in *.dist; do cp $foo `basename $foo .dist`; done
master: /usr/local/otrs/var/cron# /usr/local/otrs/bin/Cron.sh start otrs
|
- Da OTRS natürlich eine Datenbank benötigt, kann diese entweder mittels Root Rechte über den Web-Assistenten erstellt werden, oder auf der Konsole, über die altbewährte Methode.
|
master: ~# mysqladmin create otrs -p
master: ~# mysql -p
mysql> GRANT ALL ON otrs.* TO 'otrs'@'localhost' IDENTIFIED BY 'secret';
Query OK, 0 rows affected (0.01 sec)
mysql> quit
|
- Danach steht dem Aufruf des Webinstallers nichts mehr im Wege: http://master/otrs/installer.pl
|
Beim Datenbank Setup ist es einfacher, die Datenbank mit dem Root Account von MySQL erstellen zu lassen, da sonst der letzte Schritt nicht durchgeführt (Berechtigung setzen) werden kann. Augenscheinlich stellt dies aber kein Problem da und die index.pl kann aufgerufen werden.
|
- Wurde der Installer durchlaufen, kann nun die http://master/otrs/index.pl aufgerufen werden.
Host und Service überwachen
Und nun zum dritten Teil, dieser Dokumentation: Dem überwachen der Hosts und Services.