Gerät und ersten Service in Nagios definieren

Die Definition eines Geräts in Nagios ist die Grundvoraussetzung für das Monitoring.

Grundsätzliches

Bevor man mit der Konfiguration von Geräten beginnt, sollte man sich ein paar Gedanken zur Struktur im Verzeichnis /etc/nagios3/conf.d machen. Nagios ist es egal, wie viele Unterordner man dort anlegt. Somit kann man sich dort eine schöne Ordnerstruktur anlegen und dahinein seine Konfigurationsfiles legen. Eine Struktur wäre z.B.

  • Server
  • Clients
  • Drucker
  • Switche

Seid ihr euch über die Struktur einig, dann kanns losgehen.

Anlegen eines Windows-Clients

Legt eine Datei im Verzeichnis /etc/nagios3/conf.d/ an. Der Name ist freiwählbar. Die Dateiendung muss .cfg lauten.

define host{
        use                     generic-host            ; Name of host template to use
        host_name               Windows1
        alias                   Windows1
        address                 192.168.2.10
        }

Services definieren

Man kann in Nagios zweierlei Abfragen definieren.

  • Abfrage über das Netzwerk
  • Abfrage über das Netzwerk, mit installiertem Agent auf dem Windows-PC

Die zweite Variante werde ich später vorstellen.

Die Services werden so definiert

define service{
        use                             generic-service         ; Name of service template to use
        host_name                       Windows1
        service_description             PING
	check_command			check_ping!100,10%!250,20%
        }


In diesem Fall wird ein Ping von Nagios an den Windows-Client gesendet. Die Prozentangaben geben die Kritikalität an, ab wann Nagios eine Nachricht an die Administratoren senden soll.

Der Aufbau der define service Kategorie ist

  • use = Welcher Service ist zu verwenden? (genaue Beschreibung findet ihr hier –> klick
  • host_name = wie in define host angegeben
  • service_description = Name des Services, wie er in der Nagios Weboberfläche angezeigt werden soll (kann frei definiert werden)
  • check_command = Der Abfragebefehl, wie er im Plugin definiert wurde.

Nachdem der Host und der Service definiert wurden, muss man Nagios neustarten/neuladen. Das geht über die Konsole mit dem Befehl

sudo /etc/init.d/nagios3 reload

Eigene Icons für Hosts erstellen

In Nagios kann man für die Hosts eigene Icons definieren, die in der Übersicht angezeigt werden. In der Anleitung zeige ich nur, wie man die Icons erstellt und wo sie zu speichern sind.

Das Besondere, die Icons müssen im Format gd2 im Verzeichnis /usr/share/nagios/htdocs/images/logos gespeichert werden. In dem Pfad sind bereits einige Ordner vorhanden, die alle verschiedene Icons enthalten:

Ihr könnt eure eigenen Icons in einen der Ordner speichern oder einen neuen anlegen. Nagios ist das egal, die Bilddateien müssen aber im Verzeichnis /usr/share/nagios/htdocs/images/logos abrufbar sein.

Das Konvertieren von PNG-Bilddateien in das Format gd2 ist eigentlich sehr leicht. Die notwendige Library ist bereits in den Repositories von Ubuntu vorhanden und kann deshalb auf der Konsole mit dem Befehl nachinstalliert werden.

sudo aptitude install libgd-tools

Nach der erfolgreichen Installation kann man gleich auf der Konsole bleiben und sich zum Verzeichnis durchhangeln, wo das gewünschte Icon noch im png-Format liegt.

pngtogd2 nagios.png nagios.gd2 0 1

Das Ergebnis kopiert ihr nun in euren Icons-Ordner im Verzeichnis /usr/share/nagios/htdocs/images/logos

Mehr Infos dank define hostextinfo

Die Weboberfläche in Nagios kann schnell unübersichtlich werden, wenn sehr viele Hosts definiert worden sind. Das Monitoring-System gibt zeigt nur den den host_name an. Es kann aber recht hilfreiche sein, mehr Informationen zu hinterlegen, ein eigenes Icon für eine Hostgruppe festzulegen und einen Hyperlink auf die Adminoberfläche des Geräts in Nagios einzubinden.

Die Funktionen ist bereits in Nagios integriert, ihr müsst sie aber extra aktivieren.

Machen wir zusammen ein Beispiel durch. Nehmen wir mal an, wir wollen einen Windows-Server in Nagios aufnehmen und unser eigenes Icon, weitere Infos und einen Link auf die Server-Adminoberfläche in der Hostübersicht haben.

Anleitung

Wechselt in das Verzeichnis /etc/nagios3/conf.d und legt dort eine Datei mit einem Namen des Windows-Servers an, z.B. Server1.

define host{
        use                     generic-server      ; Name of host template to use
        host_name               Server1
        alias                   Server1 ist ein Windows Server
        address                 http://192.168.0.50
        }

define hostextinfo{
        host_name   Server1
        notes            Server1 ist ein Windows Server
        notes_url        http://192.168.0.50
        icon_image       base/windows.png
        icon_image_alt   Server1 ist ein Windows Server
        vrml_image       windows.png
        statusmap_image  base/windows.gd2
        }


Der Abschnitt define host sollte bereits bekannt sein. Der zweite define hostextinfo ist für die Bereitstellung der weiteren Infos zuständig.

  • host_name = gleiche Name wie im Abschnitt define host
  • notes = Notizen zu und über den Server
  • notes_url = Link auf die Adminoberfläche
  • icon_image = Icon das in Nagios für den Host angezeigt werden soll. Es ist im Verzeichnis /usr/share/nagios/htdocs/images/logos zu finden
  • icon_image_alt = Beschriftung
  • vrml_image = Icon das in Nagios für den Host angezeigt werden soll. Es ist im Verzeichnis /usr/share/nagios/htdocs/images/logos zu finden
  • statusmap_image = Icon das in Nagios für den Host angezeigt werden soll. Es ist im Verzeichnis /usr/share/nagios/htdocs/images/logos zu finden

Ist alles in der Datei eingetragen, dann speichert sie ab und startet Nagios neu

sudo /etc/init.d/nagios3 restart

Wechselt auf die Weboberfläche von Nagios. Dort sollte jetzt in der Zeile des Windows Servers ein roter Ordner angezeigt werden, der den Hyperlink auf die Adminoberfläche beinhaltet.

Die weiteren Informationen werden in der Detailübersicht des Windows Servers angezeigt.

siehe auch

Eigene Icons für Hosts erstellen

IPMI – Execution of ipmitool failed with return code 127

Die Fehlermeldung Execution of ipmitool failed with return code 127. wird ausgegeben, wenn auf dem Nagios-Server das ipmi-Paket fehlt.

Alternative 1

Das fehlende Pakte lässt sich bei einem (K)Ubuntu-System über die Konsole oder einen grafischen Paketmanager einfach nachinstallieren.

sudo aptitude install ipmi-tools

Alternative 2

Das fehlende Pakte lässt sich bei einem (K)Ubuntu-System über die Konsole oder einen grafischen Paketmanager einfach nachinstallieren.
Anstatt das ipmi-tools zu installieren, wird das zweite IPMI-Paket, ipmitool, installiert.

sudo aptitude install ipmitool

Achtung

Bei beiden Varianten ist darauf zu achten, dass die Plugins im Verzeichnis /usr/lib/nagios/plugins auch ausführbar sind.

Weitere Fehlermeldung

Es kann auch vorkommen, dass auf einmal kein Plugin mehr funktioniert und die Ausgabe in Nagios so aussieht.

Hier läuft ein notwendiger Daemon nicht, den das Plugin dringend benötigt. Aber über die Konsole lässt sich das sehr schnell beheben:

sudo /etc/init.d/ipmievd start

Noch ein kleiner Tipp.
Nagios benötigt auch SNMP, das man über den Befehlt

sudo /etc/init.d/snmpd start


starten kann.

Contacts und Services in Nagios

Nagios bietet eine große Menge an Funktionen, die alle über Skripte konfiguriert werden können. Es wesentliches Feature ist die Benachrichtigung von Administratoren beim Eintreten eines definierten Ereignisses.

Anlegen von Kontakten

Die Kontakte sind standardmäßig in der Datei contacts.cfg zu finden. Ich habe die Datei in den Ordner /etc/nagios3/conf.d/contacts geschoben, der Übersichtlichkeit wegen.
Es gibt zwei Arten von Kontakten, die man definieren kann

  • Einzel Kontakte, z.B. Personen
  • Kontaktgruppen

Kontakte

In der Standardinstallation von Nagios ist bereits eine ausreichende Konfiguration vorhanden, die man ohne größere Probleme an die eigenen Bedürfnisse anpassen kann.

define contact{
        contact_name                    stefan
        alias                           Stefan
        service_notification_period     workhours
        host_notification_period        workhours
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        email                           
        }


Die workhours werden in der Datei timeperiods_nagios2.cfg hinterlegt. Die Benachrichtigungen an diesen Kontakt werden nur in seiner Arbeitszeit versendet.

service_notification_options und host_notification_options, hier wird definiert welche Benachrichtigungen der Admin erhalten soll. Die Buchstaben stehen für

  • n = NONE
  • w = WARNING
  • c = CRITICAL
  • r = RECOVERY

Mit dem Befehl notify-service-by-email wird festgelegt, dass Nagios den Kontakt via E-Mail benachrichtigen soll.

Nach diesem Beispiel kann man nun beliebig viele Kontakte definieren. Umständlich wird es, wenn die Kontakte unterschiedliche Benachrichtigungen erhalten sollen und evtl. für Gerätegruppen zuständig sein sollen. Eine denkbare Möglichkeit, es sind mehrere Administratoren für die Administration und Wartung der Drucker verantwortlich.
In einem solchen Fall ist es für die Nagios-Administration einfacher, die einzelnen Kontakte nochmal in Kontaktgruppen zusammen zufassen.

Kontaktgruppen

Die Kontaktgruppen können in der gleichen Datei wie die Kontakte konfiguriert werden.

define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 stefan
        }


Das Einzige was zu beachten ist, members = contact_name. Schreibfehler verzeiht Nagios nicht, deshalb unbedingt zweimal kontrollieren. Members werden durch Kommas getrennt eingegeben, z.B. stefan, admin1, admin2. Der Alias ist frei wählbar.

Nachdem nun die Kontakte und Kontaktgruppen angelegt worden sind, kann begonnen werden sie auf einzelne Services zuzuordnen.

Services

In der Standardkonfiguration von Nagios sind bereits Services definiert. Sie sind in der Datei generic-service_nagios2.cfg zu finden. Die einzelnen Punkte sind in der Datei selbst sehr gut dokumentiert, dehalb werde ich darauf nicht näher eingehen.
contact_groups hier werden die frisch angelegten Kontaktgruppen den Services zugewiesen. Es können mehrere Gruppen durch Komma getrennt eingegeben werden.

define service{
        name                            generic-service ; The 'name' of this service template
        active_checks_enabled           1       ; Active service checks are enabled
        passive_checks_enabled          1       ; Passive service checks are enabled/accepted
        parallelize_check               1       ; Active service checks should be parallelized (disabling this can lead to major performance problems)
        obsess_over_service             1       ; We should obsess over this service (if necessary)
        check_freshness                 0       ; Default is to NOT check service 'freshness'
        notifications_enabled           1       ; Service notifications are enabled
        event_handler_enabled           1       ; Service event handler is enabled
        flap_detection_enabled          1       ; Flap detection is enabled
        failure_prediction_enabled      1       ; Failure prediction is enabled
        process_perf_data               1       ; Process performance data
        retain_status_information       1       ; Retain status information across program restarts
        retain_nonstatus_information    1       ; Retain non-status information across program restarts
		notification_interval           5		; Only send notifications on status change by default.
		is_volatile                     0
		check_period                    24x7
		normal_check_interval           5
		retry_check_interval            1
		max_check_attempts              4
		notification_period             24x7
		notification_options            w,u,c,r
		contact_groups                  admins
        register                        0       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
        }

IPMI Sensor Monitoring Plugin

Das Plugin kann den Hardware-Status von Servern abfragen. Das ist z.B. dann möglich, wenn ein Server eine Managementkarte eingebaut hat.

Installation

Bevor mit der Installation des Plugins begonnen werden kann, sind aber noch ein paar Abhängigkeiten zu beachten. Da alle Pakete in den Repositories verfügbar sind, ist die Installation sehr einfach durchzuführen.

sudo aptitude install gawk


Es wird auch das FreeIPMI-Paket für das Plugin benötigt. Leider musste ich aber feststellen, dass es dabei ein paar Probleme geben kann. Es gibt zwei Pakete, die dafür verwendet werden können:

  • freeipmi-tools
  • ipmitool

Eine ausführliche Beschreibung findet ihr hier ➡ IPMI – Execution of ipmitool failed with return code 127.

Nun kann man das Plugins von der Seite des Herstellers herunterladen (:arrow: thomas-krenn.com).

Die heruntergeladene Datei kopiert man nun in das Verzeichnis /usr/lib/nagios/plugins. Die Rechte sind unbedingt zu prüfen.

Zum Abschluss muss man Nagios noch mitteilen, dass ein neues Plugin vorhanden ist, also auf der Konsole eingeben

sudo /etc/init.d/nagios3 reload

Konfiguration

Zu Beginn der Konfiguration muss der Abfragebefehl definiert werden, z.B. in der Datei commands.cfg

define command{
command_name check_ipmi_sensor
command_line $USER1$/check_ipmi_sensor -H $_HOSTIPMI_IP$ -U $ARG1$ -P $ARG2$ -T $ARG3$ -L user
}

Danach muss man die Gerätedateien so konfigurieren, dass das IPMI-Tool darauf zugreifen kann. In meinem Beispiel habe ich einen Server mit einer statischen IP-Adresse der auf einer Hardware mit einer Managementkarte läuft, die ebenfalls über eine statische IP verfügt.
Nun soll in Nagios die Management-Karte zum Server zugeordnet werden. Es ist ziemlich leicht das vorzunehmen.
In dem Bereich define host ist die Zeile _ipmi_ip einzufügen.

define host{
        use                     generic-server            ; Name of host template to use
        host_name               Server1
        alias                   Server1
        address                 192.168.2.2
	_ipmi_ip      192.168.3.50
        }

Die Services können ebenfalls in der gleichen Datei definiert werden:


atusmap_image  base/suse.gd2
        }


define service{
      use 				generic-service
      host_name				Server1
      service_description		SSH
		check_command		check_ssh!172.16.0.4
}

define service{
	use 				generic-service
	host_name			Server1
	service_description		SSH Port 22
	      check_command		check_ssh_port!22!172.16.0.4
}

# Doku für ipmitool --> http://www.webhosternews.com/2010/10/uberwachen-sie-server-hardwaremit-dem-ipmi-plugin-in-nagios/
# http://www.thomas-krenn.com/de/wiki/IPMI_Grundlagen
# Konsolenabfrage: ipmitool -I lan -H  -U  -P  sensor
define service{
use generic-service
host_name     Server1
service_description  IPMI_Hardware_Status
check_command    check_ipmi_sensor!$USER5$!$USER6$!full
}

define service{
use generic-service-1m-check
host_name     Server1
service_description  IPMI_Hardware_Fan
check_command    check_ipmi_sensor!$USER5$!$USER6$!fan
}

define service{
use generic-service-1m-check
host_name     Server1
service_description  IPMI_Hardware_Voltage
check_command    check_ipmi_sensor!$USER5$!$USER6$!Voltage
}

define service{
use generic-service-1m-check
host_name     Server1
service_description  IPMI_Hardware_Temparature
check_command    check_ipmi_sensor!$USER5$!$USER6$!Temperature
}

define service{
use generic-service-1m-check
host_name     Server1
service_description  IPMI_Hardware_Memory
check_command    check_ipmi_sensor!$USER5$!$USER6$!Memory
}

define service{
use generic-service-1m-check
host_name     Server1
service_description  IPMI_Hardware_Processor
check_command    check_ipmi_sensor!$USER5$!$USER6$!Processor
}

Die Platzhalter $USER5$ und $USER6$ sind für den Benutzernamen und das Passwort reserviert. Da der Zugriff auf die Managementkarte des Servers einen Login benötigt, müssen diese Werte Nagios mitgeteilt werden.
Die beiden Informationen werden in der resource.cfg hinterlegt. Hier ist zwingend zu beachten, dass beide Werte in Plaintext dort gespeichert werden. Nach Möglichkeit ist ein separater User auf der Netwerkkarte anzulegen, der nur Lesezugriff auf die benötigten Informationen hat, um ggf. bei Passwortdiebstahl Missbrauch zu vermeiden.

Ist die Konfiguration abgeschlossen, dann teilt man das Nagios mit, indem man auf der Konsole den Befehl eingibt:

sudo /etc/init.d/nagios3 reload

What the heck is „Return code of 255 is out of bounds“?

Return code of 255 is out of bounds – Was ist das für eine Fehlermeldung?

Nagios kann man mit einer Vielzahl an Plugins an die eigenen Bedürfnisse anpassen. Manche benötigen dafür das Simple Network Management Protocol (SNMP), dass auf dem Nagios Server installiert sein muss. Das ist z.B. bei Druckern der Fall , wenn kein Agent auf den entfernten Geräten installiert werden kann, sondern Nagios die Informationen in den definierten Zeitabständen selbst abholt.
Eine genaue Beschreibung des Netzwerkverwaltungsprotokolls findet man in der Wikipedia ➡ http://de.wikipedia.org/wiki/Simple_Network_Management_Protocol

Aber nun zurück zum Fehler. Wenn in einer Nagios-Abfrage die Fehlermeldung Return code of 255 is out of bounds ausgegeben wird, dann liegt das sehr wahrscheinlich an einem fehlenden PHP-Modul. Da es in den Repositories von Ubuntu enthalten ist, könnt ihr er ganz leicht über die Konsole nach installieren.

sudo aptitude install php5-snmp

Zum Abschluss muss dann Nagios noch mitgeteilt werden, dass das Paket nun auf dem Server vorhanden ist. Das geht ebenfalls über die Konsole mit dem Befehl

sudo /etc/init.d/nagios3 reload

Es wird eine kleine Weile dauern, bis die Fehlermeldung Return code of 255 is out of bounds gegen die richtigen Werte ersetzt wird. Das hängt davon ab, in welchen Zeitabständen Nagios die Informationen von den zu überwachenden Geräten abholt.

Abfragen von Toner- und Papierfüllstände bei Druckern

Mit Nagios kann man eine Vielzahl an Informationen von den unterschiedlichsten Hardwaregeräten abfragen. Ein sicherlich sehr nützliches ist das von ciphron entwickelte check_printer. Damit kann man

  • Tonerstand
  • Papierstand
  • Druckvolumen
  • Hardwarestatus
  • etc.

abgefragt werden.

Die Installation ist nicht sehr aufwendig und lässt sich leicht durchführen.

Schritt 1

Ladet das Plugin von der Seite des Herstellers herunter ➡ ciphron.de/gfx/pool/check_printer

Schritt 2

Speichert die Datei im Plugin-Verzeichnis von Nagios unter /usr/lib/nagios/plugins ab und ändert die Rechte ab (siehe Screenshot)

Schritt 3

Der Abfrage Befehl ist in der Nagios-Konfiguration zu hinterlegen. Ich habe es in die /etc/nagios3/commands.cfg geschrieben. Dort einfach die folgenden Zeilen eintragen.

define command{
     command_name    check_printer
     command_line    /usr/bin/php $USER1$/check_printer $ARG1$ $ARG2$ $ARG3$ $ARG4$ $ARG5$
     }

Schritt 4

Als wahrscheinlich aufwendigster Schritt ist das Gerät, also der abzufragende Drucker, noch zu hinterlegen. Dazu wechselt in das Verzeichnis /etc/nagios3/conf.d und legt dort eine Datei mit dem Names eures Druckers an, z.B. Drucker.cfg. Dort müsst ihr nun die Informationen zum Gerät und die Abfrageparameter definieren.

# A simple configuration file for monitoring the local host
# This can serve as an example for configuring other servers;
# Custom services specific to this host are added here, but services
# defined in nagios2-common_services.cfg may also apply.
# 

define host{
        use                     generic-printer-ad-gde            ; Name of host template to use
        host_name               Drucker1
        alias                   Drucker1, Canon iR C3080 
        address                 192.168.2.50
        }

define hostextinfo{
        host_name   Drucker1
        notes            Drucker1, Canon iR C3080
        notes_url        http://192.168.2.50/
        icon_image       base/hp-printer40
        icon_image_alt   Drucker1, Canon iR C3080
        vrml_image       hp-printer40.png
        statusmap_image  base/hp-printer40.gd2
        }

define service{
        use                             generic-service-printer-de          ; Name of service template to use
        host_name                       Drucker1
        service_description             PING
	check_command			check_ping!100,10%!250,20%
        }


define service{
    use                              generic-service-printer-de 
    host_name                        Drucker1
    service_description              Counter
    contact_groups                   printeradmins
    check_command                    check_printer!192.168.2.50!public!counter!1
    }


define service{
    use                              generic-service-printer-de 
    host_name                        Drucker1
    service_description              TONER_black
    contact_groups                   printeradmins
    check_command                    check_printer!192.168.2.50!public!toner!1!0.05
    }


define service{
    use                              generic-service-printer-de 
    host_name                        Drucker1
    service_description              TONER_Cyan
    contact_groups                   printeradmins
    check_command                    check_printer!192.168.2.50!public!toner!2!0.05
    }

define service{
    use                              generic-service-printer-de 
    host_name                        Drucker1
    service_description              TONER_Magenta
    contact_groups                   printeradmins
    check_command                    check_printer!192.168.2.50!public!toner!3!0.05
    }

define service{
    use                              generic-service-printer-de 
    host_name                        Drucker1
    service_description              TONER_Yellow
    contact_groups                   printeradmins
    check_command                    check_printer!192.168.2.50!public!toner!4!0.05
    }

define service{
    use                              generic-service-printer-de 
    host_name                        Drucker1
    service_description              Paper_Tray_1
    contact_groups                   printeradmins
    check_command                    check_printer!192.168.2.50!public!paper!2!0.1
    }

define service{
    use                              generic-service-printer-de 
    host_name                        Drucker1
    service_description              Paper_Tray_2
    contact_groups                   printeradmins
    check_command                    check_printer!192.168.2.50!public!paper!3!0.1
    }

define service{
    use                              generic-service-printer-de 
    host_name                        Drucker1
    service_description              Paper_Tray_3
    contact_groups                   printeradmins
    check_command                    check_printer!192.168.2.50!public!paper!4!0.1
    }

define service{
    use                              generic-service-printer-de 
    host_name                        Drucker1
    service_description              Paper_Tray_4
    contact_groups                   printeradmins
    check_command                    check_printer!192.168.2.50!public!paper!5!0.1
    }


In der Beispieldatei wird ersichtlich, was alles abgefragt wird. Ihr müsst die Einträge nur noch an eure Gegebenheiten anpassen:

  • host_name = Name des Druckers, der in Nagios für die Indexierung verwendet wird
  • alias = ist hier der Hersteller und das Modell des Druckers
  • address = Ip-Adresse des Geräts
  • Im Bereich hosttextinfo sind die Beschreibung, ein Link auf die Adminoberfläche und das Icon definiert
  • In den nachfolgenden define service Abschnitten ist definiert, welche Informationen Nagios von den Druckern abholen soll.
      Achtung:

    • Der host_name ist anzupassen
    • service_description = verwendet einen eindeutigen Namen, da dieser auch in der weiteren Nagios-Konfiguration verwendet wird und in der Weboberfläche ausgegeben wird.
    • contact_groups = Die Gruppe, die benachrichtigt werden soll, wenn ein Ereignis eintrifft
    • check_command = definiert den Abfragebefehl und die Eskalationsstufe
      !toner!1!0.05 = eine Benachrichtigung an die contact_groups wird gesendet, wenn der Toner nur noch zu 5% voll ist.

Schritt 5

Nagios auffordern die neue Konfiguration und das neue Gerät zu berücksichtigen. Auf der Konsole den Befehl eingeben

sudo /etc/init.d/nagios3 reload

Schritt 6

Ergebnis im Webbrowser begutachten

Sollte die Fehlermeldung „Return code of 255 is out of bounds“ von Nagios ausgegeben werden, dann schaut euch die Lösung des Problems hier an ➡ What the heck is „Return code of 255 is out of bounds“?

Benutzer für die Weboberfläche hinzufügen

Die Benutzer und das dazugehörige, verschlüsselte Passwort werden in der Datei /etc/nagios3/htpasswd.users abgespeichert.

Das hinzufügen von neuen Benutzern ist nur über die Konsole möglich. Das Editieren der oben genannten Datei hat keine Auswirkung auf Nagios
Der Befehl für die Konsole lautet:

htpasswd /etc/nagios3/htpasswd.users username

username ist durch den Benutzernamen zu ersetzen.
Nach der Eingabe wird noch ein Passwort abgefragt, dass verschlüsselt in der htpasswd.users gespeichert wird.

Sollte der Benutzer sich nicht an der Weboberfläche von Nagios anmelden können, dann ist der Eintrag use_authentication von 0 auf 1 zu setzen.
Die zu editierende Datei heißt cgi.cfg und ist im Verzeichnis /etc/nagios3 zu finden.