• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Teilgelöst] Apache2 für Nagios einrichten?

revealed

Guru
Hallo!

Ich habe SUSE 10.3 und möchte mal testen ob ich zuhause mit meinen Configfiles Nagios richtig einrichten kann:
Code:
(ausgabe als root:)
nagios -v /etc/nagios/nagios.cfg

Nagios 2.9
Copyright (c) 1999-2007 Ethan Galstad (http://www.nagios.org)
Last Modified: 04-10-2007
License: GPL

Reading configuration data...


Checking services...
        Checked 6 services.
Checking hosts...
        Checked 2 hosts.
Checking host groups...
        Checked 2 host groups.
Checking service groups...
        Checked 0 service groups.
Checking contacts...
        Checked 2 contacts.
Checking contact groups...
        Checked 2 contact groups.
Checking service escalations...
        Checked 0 service escalations.
Checking service dependencies...
        Checked 0 service dependencies.
Checking host escalations...
        Checked 0 host escalations.
Checking host dependencies...
        Checked 0 host dependencies.
Checking commands...
        Checked 22 commands.
Checking time periods...
        Checked 4 time periods.
Checking extended host info definitions...
        Checked 0 extended host info definitions.
Checking extended service info definitions...
        Checked 0 extended service info definitions.
Checking for circular paths between hosts...
Checking for circular host and service dependencies...
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check
Der check mit dem "-v" schalter klappt! Sieht man ja.

Dazu habe ich jetzt aber ein paar fragen!

Ich habe nagios rpm Pakete installiert via YasT und das sieht so aus:
rpm -qa |grep nagios
nagios-plugins-1.4.9-19
nagios-www-2.9-48
nagios-2.9-48
nagios-nsca-2.7.2-11
nagiosgrapher-1.6.1RC3-58
nagios-nsca-client-2.7.2-11
nagios-plugins-extras-1.4.9-19
nagios-plugins-sap-ccms-0.7.3-111
nagios-nrpe-2.8.1-50
Ich habe PHP Apache2 und MySQL!

Wenn ich im Browser "localhost" aufrufe, erscheint die Nagios Seite! Das ist schonmal super find ich! Wenn ich dort aber etwas anwähle dann mekkert es:
Whoops!

Error: Could not read object configuration data!

Here are some things you should check in order to resolve this error:

1. Verify configuration options using the -v command-line option to check for errors.
2. Check the Nagios log file for messages relating to startup or status data errors.
3. Make sure you've compiled the main program and the CGIs to use the same object data storage options (i.e. default text file or template-based file).

Make sure you read the documentation on installing, configuring and running Nagios thoroughly before continuing. If all else fails, try sending a message to one of the mailing lists. More information can be found at http://www.nagios.org.
Also lade ich die Konfiguration als "SU" manuell:
Code:
nagios -d /etc/nagios/nagios.cfg
Und starte apache2 neu mit
Code:
rcapache2 restart
Syntax OK
Shutting down httpd2 (waiting for all children to terminate) done
Starting httpd2 (prefork) done
Jedoch meldet die Seite immernoch die selbe Fehlermeldung :(

Vorbereitend hab ich für apache eine httpd.conf.local im Sysconfig eingetragen! Diese ist jedoch ohne Inhalt bisher. Sie liegt unter:
Code:
/etc/apache2/httpd.conf.local
Der Sysconfigwert ist folgender:
Code:
APACHE_CONF_INCLUDE_FILES
/etc/apache2/mod_userdir.conf /etc/apache2/httpd.conf.local

Das File mod_userdir.conf hat bereits folgende Anpassungen bekommen:
cat mod_userdir.conf
#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.
#

<IfModule mod_userdir.c>
# Note that the name of the user directory ("public_html") cannot easily be
# changed here, since it is a compile time setting. The apache package
# would have to be rebuilt. You could work around by deleting
# /usr/sbin/suexec, but then all scripts from the directories would be
# executed with the UID of the webserver.
#
# To rebuild apache with another setting you need to change the
# %userdir define in the spec file.

# not every user's directory should be visible:
UserDir disabled root

# to enable UserDir only for a certain set of users, use this instead:
#UserDir disabled
UserDir enabled disk


# the UserDir directive is actually used inside the virtual hosts, to
# have more control
UserDir public_html

<Directory /home/*/public_html>

AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>

<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>

</Directory>

</IfModule>
die Onlineinhalte sollen in "srv/www/htdocs/" liegen. <- Standard?
in dem Verzeichnis liegt eine index.html die eine Weiterleitung ist auf:
http://localhost/nagios/
Weil zunächst das ganze nur dafür konfiguriert sein soll. Für mich mal zum Verstehen und ausprobieren.

Jetzt habe ich keine Ahnung, wie ich diese .htacess erstellen muss für die Pakete die anscheinent zu keinem der Tutorials die ich online finden kann passen. Die verzeichnisse in den Tuts existieren bei mir einfach nicht oder teilweise. Und da komm ich nicht weiter und deswegen verliere ich leider langsam den Spass daran.

Kann mir bitte jemand helfen die Anmeldung, die Berechtigungen und die .htaccess und httpd.conf.local auf die Reihe zu bekommen?

Einen USER Nagios und eine Gruppe Nagios kann ich im Yast nicht anmelden. Es meldet da würde ein Konflikt mit einem existierenden User bestehen?

Und in der nagios.cfg kann man folgenden wert einstellen:
# NAGIOS USER
# This determines the effective user that Nagios should run as.
# You can either supply a username or a UID.

nagios_user=
Muss dieser im YasT angelegt sein?
Müssen die User im "contacts.cfg" im Yast angelegt sein?
Auch frage ich mich immernoch, warum das public_html Verzeichnis via Browser zu Erreichen ist.

HILFE!

Wenn ihr weitere Informationen braucht, lasst mich bitte wissen!

PS.: Die configfiles hab ich nach der Anleitung händisch erstellt:
http://nagios.sourceforge.net/docs/2_0/xodtemplate.html
bis auf die nagios.cfg <- diese kam mit dem RPM und diese habe ich nur editiert und angepasst.


Gruß

R
 
OP
revealed

revealed

Guru
http://nagios.sourceforge.net/docs/2_0/commandfile.html
keine Ahnung was ich an Sicherheitslöchern aufgerissen habe!

Ich starte Nagios als Root!

Im sysconfig für Apache2: -> APACHE_CONF_INCLUDE_FILES:
Code:
/etc/apache2/mod_userdir.conf /etc/apache2/httpd.conf.local /etc/apache2/conf.d/nagios.conf

in der "/etc/nagios/cgi.cfg" habe ich folgendes angepasst und die Authentifizierung deaktiviert!!! Das geht mal grad noch so, weil bei mir Von "extern" intern nix zu Erreichen ist.
Code:
use_authentication=0

Damit fällt die htaccess flach?

dann:
useradd nagios
groupadd nagios
groupadd nagcmd
usermod -G nagcmd nagio
usermod -G nagcmd wwwrun

Und ich hab in der Nagios.cfg noch Service Checks deaktiviert.

Berechtigungen und eigentümer (Gruppe) der beiden Verzeichnisse:


chown nagios.nagiocmd:
chmod g+s
chmod g+rwx
chmod u+rwx
Code:
/var/log/nagios/ 
/etc/nagios/

Gruß!
-R
 
OP
revealed

revealed

Guru
back to scratch....

also mittlerer Weile komm ich da ganz gut klar...

Also ich hab die Pakete installiert:
Code:
nagios-plugins-1.4.9-19
nagios-nrpe-2.8.1-50
nagios-nsca-2.7.2-11
nagios-2.9-48
nagios-plugins-sap-ccms-0.7.3-111
nagios-www-2.9-48
nagiosgrapher-1.6.1RC3-58
nagios-plugins-extras-1.4.9-19
nagios-nsca-client-2.7.2-11

Dann hab ich noch folgende Datei modifiziert:
disk@WILD-THING:~> cat /etc/apache2/conf.d/nagios.conf
Code:
## nagios-wiki.de
ScriptAlias /nagios/cgi-bin /usr/lib/nagios/cgi
<Directory /usr/lib/nagios/cgi>
   Options ExecCGI
   AllowOverride AuthConfig limit
   order allow,deny
   Allow from all
</Directory>

Alias /nagios  /usr/share/nagios
<Directory /usr/share/nagios>
   Options None
   AllowOverride AuthConfig limit
   Order allow,deny
   Allow from all
</Directory>

#### Originale ####
#ScriptAlias /nagios/cgi-bin /usr/lib/nagios/cgi
#<Directory /usr/lib/nagios/cgi>
#   Options ExecCGI
#   order deny,allow
#   deny from all
#   allow from 127.0.0.1 localhost 192.168.0.3 WILD-THING 192.168.0.1
#</Directory>
#
#Alias /nagios  /usr/share/nagios
#<Directory /usr/share/nagios>
#   Options None
#   order deny,allow
#   deny from all
#   allow from 127.0.0.1 localhost 192.168.0.3 WILD-THING 192.168.0.1
#</Directory>

#### For SSL-servers Originale ####
#ScriptAlias /nagios/cgi-bin /usr/lib/nagios/cgi
#<Directory /usr/lib/nagios/cgi>
#   Options ExecCGI
#   SSLRequireSSL
#   order deny,allow
#   deny from all
#   AuthType Basic
#   AuthUserFile /site/cfg/passwd
#   AuthGroupFile /site/cfg/group
#   AuthName "nagios"
#   require group nagios
#   Satisfy Any
#</Directory>
#
#Alias /nagios/ /usr/share/nagios
#<Directory /usr/share/nagios>
#   Options None
#   SSLRequireSSL
#   order deny,allow
#   deny from all
#   AuthType Basic
#   AuthUserFile /site/cfg/passwd
#   AuthGroupFile /site/cfg/group
#   AuthName "nagios"
#   require group nagios
#   Satisfy Any
#</Directory>
dann hab ich eine Datei erstellt:
disk@WILD-THING:/usr/lib/nagios/cgi> cat .htaccess
Code:
# Allow from 127.0.0.1 # <- kann in die vorletzte Zeile ##
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
require valid-user
Order deny,allow
Deny from all
satisfy any
und dementsprechend gibt es die Datei in der Zeile mit "AuthUserFile" (htpasswd.users) auch. Der Pfad kann entsprechend der letzten Datei auch variieren! Bzw die Ordner hab ich angelegt....

Und in die "htpasswd.users" kann man mit:
Code:
htpasswd2 -c  /usr/local/nagios/etc/htpasswd.users username
Den ersten User anlegen bzw die Datei initialisieren? Wobei "username" für den gewünschten Nutzername steht. Nach bestätigen mit "Eingabe" wird man interaktiv zu einer Passworteingabe aufgefordert.

Wenn man weiter Nutzer hinzufügen will ... Achtung! den "-c" Flag weglassen. Dann wird der neue Nutzer angefügt also:
Code:
htpasswd2 /usr/local/nagios/etc/htpasswd.users user_add

Die nagios.cfg sowie eventuell host.cfg als auch timings usw lassen sich dann von Hand mit Hilfe von:
http://www.nagios.org/docs/

Eigendlich laden. Default verwendet die Installation "nagios.cfg" Darin ist eine Config eingestellt, die unter anderem den localhost von Haus aus monitort. Und weiter kann man seine gewünschten Konfigurationsdateien einfügen. Bzw den Gartenzaun vor den Gewünschten entfernen. Diese muss man dann noch im Verzeichnis:
Code:
/etc/nagios/
anlegen erweitern usw...

Ich hoffe damit geholfen zu haben.

Zunächst sind keinerlei modifikationen notwendig...

Achso die Benutzer haben sich irgendwie selbständig konfiguriert... also eigendlich muss es wohl eine Gruppe ~nagcmd? oder so geben?, falls noch nicht vorhanden. Und einen Useraccount nagios? (wobei das wohl auch ein lokal bereits vorhandener user sein kann?)

Dazu hab ich aber leider kein detailknowhow.

Ach und im runleveleditor die Dienste für Nagios aktivieren...

Apache2 PHP usw...

Anregungen verbesserungsvorschläge bitte erwünscht!

# btw das ganze in Anlehnung an:
http://www.nagios-wiki.de/doku.php/nagios/howtos/nagios_suse

Allerdings mit anderen Pfaden als im Tut unter SuSE 10.3 mit Nagios Version 2.9 April 10, 2007 und irgendwie anderen Pfaden für die ganzen Verzeichnissen und den SuSE RPM's (standard).

Und nicht erschrecken, falls Fehlermeldungen direkt nach dem Installieren auftauchen. Ein Systemneustart kann Wunder bewirken. Der kann auch wunder bewirken trotz der Tatsache, dass man die abhängigen Dienste händisch neugestartet hat!

Gruß

R
 

Leviathan

Hacker
Den Nagios mit dem Flag -v aufrufen.
Ich vermute du willst eine cgi Seite aufrufen und darfst das nicht, weil du keinen authenticated User hast.

Siehe cgi.cfg
Die Optionen die mit authorized_ anfangen

Da musst du User eintragen, die du mit htaccess prüfst.

Gruß Dominik
 
OP
revealed

revealed

Guru
Ich hab noch was neues!

Es gibt ein Tool:
Code:
nagiosQL
Dieses habe ich mir heruntergeladen und Installiert.

Und zwar das Stückchen MySQL und Nagios kann ich jetzt schliessen!
Das ganze ermöglicht es über ein PHP Interface Hosts services und alles mögliche einzustellen. Jedoch habe ich meine Konfigurationen händisch erstellt und deswegen die Konfiguration noch nicht entsprechend angepasst.

Die Installation des UI verlief so:

Code:
disk@wild-thing:~> rpm -qa | grep nagios
nagios-2.9-48.4
nagios-www-2.9-48.4
nagios-plugins-sap-ccms-0.7.3-111
nagios-nrpe-2.8.1-50
nagios-nsca-client-2.7.2-11
nagios-nsca-2.7.2-11
nagiosgrapher-1.6.1RC3-58
nagios-plugins-1.4.9-19.3
nagios-plugins-extras-1.4.9-19.3
disk@wild-thing:~> cat /etc/SuSE-release
openSUSE 10.3 (i586)
VERSION = 10.3
1. Ich habe mir nagiosql-2.0.2.tar.bzw heruntergeladen.
2. Dieses habe ich in meinen Documentroot (/srv/www/htdocs) entpackt;
3. Das Verzeichnis habe ich umbenannt in: "nagiosql";
4. Die Berechtigungen für das Verzeichnis nagiosql rekursiv "wwwrun.www";
5. Apache Konfiguration (neu erstellt):
/etc/apache2/conf.d/nagiosqlhttpd.conf
Code:
#
# NAGIOSQL httpd.conf
Alias /nagiosql "/srv/www/htdocs/nagiosql"
#
# This is to permit URL access to scripts/files in nagiosql directory via login basis.
#
#<Directory  /srv/www/htdocs/nagiosql>
#     AllowOverride All
#</Directory>
<Directory "/srv/www/htdocs/nagiosql">
   Options ExecCGI
   AllowOverride AuthConfig limit
   order allow,deny
   Allow from all
        AuthUserFile /srv/www/htaccesses/.htpasswd.nagsqlusers
        AuthGroupFile /dev/null
        AuthName "naqiosQL"
        AuthType Basic
        AuthName "nagiosqlusr"
        require valid-user
</Directory>
6. Die /srv/www/htaccesses/.htpasswd.nagsqlusers erstellt:
Code:
htpasswd2 -c /srv/www/htaccesses/.htpasswd.nagsqlusers username
7. Dann aus der Anleitung:
Code:
   # cd /srv/www/htdocs/nagiosQL/config
   # mysql -uroot -p < nagiosQL_v2_db_mysql.sql
   # Password: DATENBANKPASSWORT
   
   (Beispiel f�r Datenbankuser "root" und Passwort "xxxx"
   
   Dem Benutzer nagiosqlusr ein neues Passwort zuteilen
   
   # mysql -uroot -p
   # Password: xxxx
   mysql> use mysql;
   mysql> UPDATE user SET Password=PASSWORD("mypassword") WHERE User="nagiosqlusr";
   mysql> FLUSH PRIVILEGES;
   mysql> exit
8. Mittel MySQL-Administrator habe ich geprüft und das Passwort nochmals angepasst; Standardpasswort ist keine gute Idee!
9. Apache2 neugetartet:
Code:
rcapache2 restart
10. im Browser: (Dort kann man eventuelle konfigurationsfehler betrachten!)
http://localhost/nagiosql/testQL.php
11. Als ersten Hinweis bekam ich die:
/srv/www/htdocs/nagiosql/config/settings.ini
Code:
;///////////////////////////////////////////////////////////////////////////////
;
; NagiosQL
;
;///////////////////////////////////////////////////////////////////////////////
;
; (c) 2006 by Martin Willisegger / nagiosql_v2@wizonet.ch
;
; Projekt:	NagiosQL Applikation
; Author :	Martin Willisegger
; Datum:	01.12.2006
; Zweck:	Einstellungen
; Datei:	settings.ini
; Version:	2.0.2
;
;///////////////////////////////////////////////////////////////////////////////
[path]
; Web server directoy (below DocumentRoot / )
; ------------------------------------------- 
; Example1 if you open the website with http://www.domain.tld/nagiosQL/index.php 
; -> your root path is "/nagiosQL/" 
; Example2 if you open the website with http://www.domain.tld/index.php 
; -> your root path is "/" 
; Example3 if you open the website with http://www.domain.tld/mydir/nagiosQL/index.php 
; -> your root path is "/mydir/nagiosQL/"
root 		= /nagiosql/
 
; Absolute (physical) path to the software directory 
; --------------------------------------------------
physical = /srv/www/htdocs/nagiosql/ 
 
; Used web technology (http or https)
; -----------------------------------
protocol        = http
 
; Path to Pear modul HTML_Template_IT - change only if the modul was not 
; installed by "pear install HTML_Template_IT" - make sure, your Modules Path is 
; included in php.ini!
;
IT   		= HTML/Template/IT.php

[data]
; Language
; --------
; lang_de = Deutsch
; lang_en = English
;
lang 		= lang_de

[db]
; Database Server (mysql)
; -----------------------
server  	= localhost
database 	= db_nagiosql_v2
username 	= nagiosqlusr
password 	= DATENBANKPASSWORT
stripslashes	= 0

[nagios]
; Nagios main configuration directory 
; -----------------------------------
config          = "/etc/nagios/" 

; Nagios host configuration directory 
; -----------------------------------
confighosts     = "/etc/nagios/hosts/" 

; Nagios service settings directory 
; ---------------------------------
configservices  = "/etc/nagios/services/" 

; Backup directories 
; ------------------
backup 		= "/etc/nagios/backup/" 
backuphosts     = "/etc/nagios/backup/hosts/" 
backupservices  = "/etc/nagios/backup/services/"

; Nagios system files
; -------------------
binary    = "/usr/sbin/nagios"
cmdfile		= "/var/spool/nagios/nagios.cmd"
pidfile 	= "/var/run/nagios/nagios.pid"

[security]
; Session timeout in seconds
; --------------------------
logofftime	= 3600

[common]
; Lines per page in configuration overview
; ----------------------------------------
pagelines	= 15
12. Ich erhielt eine Fehlermeldung zu PHP PEAR und einem Template; Dementsprechend habe ich in YAST nach 'PEAR' gesucht und nachinstalliert.
13. Im Manual steht zum Falle PEAR: (einfach in die Konsole):
Code:
pear install HTML_Template_IT
14. Im Verzeichnis /etc/nagios habe ich die Verzeichnisse angelegt:
Code:
   /etc/nagios/ 				-> Allgemeine Konfigurationsdateien
   		"	  /hosts			-> Host Konfigurationsdateien
		"	  /services			-> Service Konfigurationsdateien
		"	  /backup/			-> Backups der allgemeinen Konfigurationsdateien
		"	  	 "   /hosts		-> Backups der Host Konfigurationsdateien
		"		 "	 /services	-> Backups der Service Konfigurationsdateien
15. In der Datei: /etc/php5/apache2/php.ini
Code:
   magic_quotes_gpc = On
16. nochmal Apache neugestartet:
Code:
 rcapache2 restart
15. Ab jetzt ist das Interface aufrufbar und man kann sich zunächst mittels Cookie Authentifizieren:
Und dann am Interface zum ersten mal als 'admin' 'admin' anmelden.
Code:
http://localhost/nagiosql/
16. Berechtigungen für das Configverzeichnis "/etc/nagios/" müssen noch gesetzt werden.

In allen fällen empfehle ich die Readme datei!!

Was jetzt noch bliebe, währe die Configdateien einzupflegen. Es gibt eine Importfunktion und sehr viel womit ich mich erstmal zurechtfinden muss. Jedoch wollte ich hier schreiben, dass eine Installation möglich ist.

Das Problem ist, dass meine Configdateien voneinander etwas unlogisch strukturiert sind für das Webfrontend. So muss ich das alles erst auspflegen oder neu einpflegen. Wie man denn so will. Wann ich dazu komme, weiss ich noch nicht.

Ich hoffe irgendwem geholfen zu haben!

Grüße,

R
 
Oben