Linux-Nagios
Nagios installation unter AlmaLinux release 10.2 mit SELinux
- Installation auf Almalinux 10
- 1. Repositories aktivieren
- 2. Build-Umgebung installieren
- 3. Apache, php und SELinux Utils installieren
- 4. Firewalld installieren
- 5. Nagioscore Build und Install
- 6. Diverses
- 7. Nagios starten und prüfen
- 8. Nagios Plugins
- 9. NCPA in Nagios einbinden
- 10. NCPA Installation (Auf Linux Client-Rechner) *optional*
- 11. NCPA Installation (Auf Windows Client-Rechner) *optional*
- 12. Nagiosgraph
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:
- Nagios Core
- Nagios Plugins
- Nagiosgraph zur Darstellung von Performance-Graphen
- NCPA als Agent für Linux- und Windows-Systeme
- Apache HTTP Server
- SELinux im Enforcing-Modus
- firewalld
1. Repositories aktivieren
sudo dnf install -y epel-release
sudo dnf config-manager --set-enabled crb
Prüfen:sudo dnf config-manager --set-enabled crb
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
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 dnf install -y policycoreutils-python-utils
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 --reload
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 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 make install-daemoninit
sudo make install-config
sudo make install-webconf
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
sudo chmod 775 /usr/local/nagios/var/rw
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:
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
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:
semodule_package -o nagios_cmd_external.pp -m nagios_cmd_external.mod
sudo semodule -i nagios_cmd_external.pp
sudo semanage fcontext -a -t nagios_var_run_t "/usr/local/nagios/var/rw(/.*)?"
sudo restorecon -Rv /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 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
sudo ./configure --with-nagios-user=nagios --with-nagios-group=nagios
sudo make
sudo make install
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
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:sudo semanage fcontext -a -t nagios_unconfined_plugin_exec_t "/usr/local/nagios/libexec(/.*)?"
sudo restorecon -Rv /usr/local/nagios/libexec
/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
}
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
}
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 wget https://assets.nagios.com/downloads/ncpa/ncpa-latest.el9.x86_64.rpm
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 firewall-cmd --reload
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:
- Token
- Port: 5693
- SSL aktivieren (empfohlen)
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
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
# 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
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
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
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
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" ersetztenname nagiosgraph-service
action_url /nagiosgraph/cgi-bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$
register 0
}
Fertig!