Linux-Nagios

Nagios installation unter AlmaLinux release 10.2 mit SELinux




Installation auf Almalinux 10

(erstellt am 10.07.2026 / letzte Änderung: 10.07.2026)
Status: Tested on AlmaLinux release 10.2 (Lavender Lion)

Die Installation umfasst:

1. Repositories aktivieren

sudo dnf install -y epel-release
sudo dnf config-manager --set-enabled crb
Prüfen:
dnf repolist


2. Build-Umgebung installieren

sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y gcc glibc glibc-common glibc-devel make gettext automake autoconf net-snmp net-snmp-utils net-snmp-devel openssl openssl-devel perl wget tar unzip

3. Apache, php und SELinux Utils installieren

sudo dnf install -y httpd php php-cli php-gd php-xml php-mbstring php-process php-json
sudo dnf install -y policycoreutils-python-utils
Service aktivieren:
sudo systemctl enable --now httpd
Prüfen:
sudo systemctl status httpd

4. Firewalld installieren

sudo dnf install -y firewalld
Dienst aktivieren und sofort starten:
sudo systemctl enable --now firewalld
Prüfen:
sudo systemctl status firewalld

Anschließend HTTP freigeben:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
Den aktuellen Stand der Firewall prüfen:
sudo firewall-cmd --list-all

5. Nagioscore Build und Install

cd /usr/local/src
sudo wget --output-document="nagioscore.tar.gz" $(wget -q -O - https://api.github.com/repos/NagiosEnterprises/nagioscore/releases/latest | grep '"browser_download_url":' | grep -o 'https://[^"]*')
sudo tar xzf nagioscore.tar.gz
cd nagios-*

sudo ./configure
Wenn kein Fehler auftreten ist:
sudo make all
Benutzer & Gruppen anlegen:
sudo make install-groups-users
Apache zur Gruppe hinzufügen:
sudo usermod -aG nagios apache
Installation, systemd Service, Konfig und Webinterface:
sudo make install
sudo make install-daemoninit
sudo make install-config
sudo make install-webconf
anschliessend Apache neu starten:
sudo systemctl restart httpd

6. Diverses

Webuser anlegen
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Verzeichnis anlegen
sudo mkdir -p /usr/local/nagios/var/rw
Rechte setzen
sudo chown -R nagios:nagios /usr/local/nagios/var
sudo chmod 775 /usr/local/nagios/var/rw
External Commands aktivieren
grep check_external_commands /usr/local/nagios/etc/nagios.cfg
Muss sein:
check_external_commands=1

Falls nicht:
sudo sed -i 's/^check_external_commands=.*/check_external_commands=1/' /usr/local/nagios/etc/nagios.cfg

SELinux
cd /tmp
sudo tee nagios_cmd_external.te > /dev/null << 'EOF'
module nagios_cmd_external 1.0;

require {
    type httpd_sys_script_t;
    type nagios_var_run_t;
    class fifo_file { getattr write open };
}

#============= httpd_sys_script_t ==============
allow httpd_sys_script_t nagios_var_run_t:fifo_file { getattr write open };
EOF
Modul kompilieren, paketieren und installieren:
checkmodule -M -m -o nagios_cmd_external.mod nagios_cmd_external.te
semodule_package -o nagios_cmd_external.pp -m nagios_cmd_external.mod
sudo semodule -i nagios_cmd_external.pp
Außerdem:
sudo semanage fcontext -a -t nagios_var_run_t "/usr/local/nagios/var/rw(/.*)?"
sudo restorecon -Rv /usr/local/nagios/var/rw

7. Nagios starten und prüfen

Konfiguration testen
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Nagios starten
sudo systemctl enable --now nagios
Status:
sudo systemctl status nagios

Webseite prüfen:
http://<server>/nagios
Login:
 Benutzer: nagiosadmin
 Passwort hast du selber unter "7. Diverses -> Webuser anlegen" festgelegt.

8. Nagios Plugins

Download und entpacken:
cd /usr/local/src
sudo wget https://nagios-plugins.org/download/nagios-plugins-2.4.11.tar.gz
sudo tar xzf nagios-plugins-2.4.11.tar.gz
cd nagios-plugins-2.4.11
Kompilieren:
sudo ./configure --with-nagios-user=nagios --with-nagios-group=nagios
sudo make
sudo make install

check_ncpa Plugin installieren:
cd /usr/local/nagios/libexec
sudo wget https://raw.githubusercontent.com/NagiosEnterprises/ncpa/master/client/check_ncpa.py
sudo chmod +x check_ncpa.py

SELinux Kontext setzen:
sudo restorecon -Rv /usr/local/nagios
sudo semanage fcontext -a -t nagios_unconfined_plugin_exec_t "/usr/local/nagios/libexec(/.*)?"
sudo restorecon -Rv /usr/local/nagios/libexec
Funktionstest der Plugins:
/usr/local/nagios/libexec/check_ping -H 127.0.0.1 -w 100,10% -c 200,20%

Nagios neu starten
sudo systemctl restart nagios

9. NCPA in Nagios einbinden

Beispiel Command Definition (/usr/local/nagios/etc/objects/commands.cfg)
define command{
  command_name check_ncpa_cpu
  command_line $USER1$/check_ncpa.py -H $HOSTADDRESS$ -t 'mytoken' -P 5693 -M cpu/percent
}

Beispiel Service (z.B. in /usr/local/nagios/etc/objects/localhost.cfg)
define service{
  use generic-service
  host_name localhost
  service_description CPU Load
  check_command check_ncpa_cpu
}

10. NCPA Installation (Auf Linux Client-Rechner) *optional*

Download von NCPA als rpm (das el9 tuts hier unter Almalinux10 auch)
cd /usr/local/src
sudo wget https://assets.nagios.com/downloads/ncpa/ncpa-latest.el9.x86_64.rpm
Installation:
sudo dnf install -y ./ncpa-latest.el9.x86_64.rpm
Dienst starten:
sudo systemctl enable --now ncpa_listener
Prüfen:
sudo systemctl status ncpa_listener Firewall öffnen
sudo firewall-cmd --permanent --add-port=5693/tcp
sudo firewall-cmd --reload
SELinux - NCPA bringt eigene Labels mit
sudo restorecon -Rv /usr/local/ncpa

Token setzen in:
/usr/local/ncpa/etc/ncpa.cfg

Wichtige Parameter:
community_string = mytoken

Je nach Distribution kann es sein, dass

#!/usr/bin/env python

nicht funktioniert. Entweder man ändert das in python3 - z.B.:
sudo sed -i '1s|python$|python3|' /usr/local/nagios/libexec/check_ncpa.py
oder macht:
sudo ln -s /usr/bin/python3 /usr/local/bin/python
oder am besten (wenn möglich)
sudo dnf install python-unversioned-command

11. NCPA Installation (Auf Windows Client-Rechner) *optional*

Download des MSI Installers von der Nagios-Seite:
https://www.nagios.org/projects/ncpa/#download-ncpa-section

Während der Installation setzen:
Windows Firewall
PowerShell als Admin:
New-NetFirewallRule -DisplayName "NCPA" -Direction Inbound -Protocol TCP -LocalPort 5693 -Action Allow

12. Nagiosgraph

Abhängigkeiten installieren:
sudo dnf install -y rrdtool rrdtool-devel perl-rrdtool perl-CGI perl-Time-HiRes perl-GD gd gd-devel perl-libwww-perl git

Sourcecode downloaden:
cd /usr/local/src
sudo git clone https://github.com/JasonRivers/nagiosgraph.git
cd nagiosgraph

Voraussetzungen prüfen:
sudo perl install.pl --check-prereq
Das fehlende Nagios::Config kann ignoriert werden.

Installation:
sudo perl install.pl --install --verbose --layout standalone --prefix /usr/local/nagiosgraph --nagios-user nagios --www-user apache --nagios-cgi-url /nagiosgraph/cgi-bin --nagios-perfdata-file /usr/local/nagios/var/service-perfdata.log
Alle defaults mit Enter bestätigen, ausser:
  Modify the Nagios configuration? [n] y

Apache config manuell erstellen:
sudo tee /etc/httpd/conf.d/nagiosgraph.conf > /dev/null << 'EOF'
# enable nagiosgraph CGI scripts
ScriptAlias /nagiosgraph/cgi-bin "/usr/local/nagiosgraph/cgi"
<Directory "/usr/local/nagiosgraph/cgi">
    Options ExecCGI
    AllowOverride None
    Require all granted
</Directory>
# enable nagiosgraph CSS and JavaScript
Alias /nagiosgraph "/usr/local/nagiosgraph/share"
<Directory "/usr/local/nagiosgraph/share">
    Options None
    AllowOverride None
    Require all granted
</Directory>
EOF

SELinux-Kontexte:
sudo semanage fcontext -a -t httpd_sys_script_exec_t "/usr/local/nagiosgraph/cgi(/.*)?"
sudo restorecon -Rv /usr/local/nagiosgraph/cgi
sudo setsebool -P httpd_enable_cgi 1
sudo semanage fcontext -a -t httpd_sys_content_t "/usr/local/nagiosgraph/share(/.*)?"
sudo restorecon -Rv /usr/local/nagiosgraph/share
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/usr/local/nagiosgraph/var(/.*)?"
sudo restorecon -Rv /usr/local/nagiosgraph/var

Und da RRDtool die rrd-Dateien per mmap() öffnet, muss noch ein passendes policy modul gebaut werden:
cd /tmp
sudo tee nagiosgraph_rrd_mmap.te > /dev/null << 'EOF'
module nagiosgraph_rrd_mmap 1.0;

require {
    type httpd_sys_script_t;
    type httpd_sys_rw_content_t;
    class file map;
}

#============= httpd_sys_script_t ==============
allow httpd_sys_script_t httpd_sys_rw_content_t:file map;
EOF

Modul kompilieren, paketieren und installieren:
checkmodule -M -m -o nagiosgraph_rrd_mmap.mod nagiosgraph_rrd_mmap.te
semodule_package -o nagiosgraph_rrd_mmap.pp -m nagiosgraph_rrd_mmap.mod
sudo semodule -i nagiosgraph_rrd_mmap.pp

Nagios und Apache neustarten:
sudo systemctl restart nagios
sudo systemctl restart httpd

Prüfen: http://<server>/nagiosgraph/cgi-bin/showhost.cgi?host=localhost

Damit nagiosgraph nun auch auf der Weboberfläche erscheint, zu /usr/local/nagios/etc/objects/templates.cfg hinzufügen:
define service {
    name nagiosgraph-service
    action_url /nagiosgraph/cgi-bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$
    register 0
}
Und bei den entsprechenden service checks z.B. "use local-service" durch "use local-service, nagiosgraph-service" ersetzten

Fertig!