How to Install Nagios on Debian 11

In this guide, we are going to learn how to install Nagios on Debian 11. Nagios is an opensource tool that provides an enterprise-class central monitoring engine for IT monitoring, network monitoring, server and applications monitoring.

Some of the Nagios’ features include:.

  • Monitoring of network services (via TCP port, SMTP, POP3, HTTP, NNTP, PING, etc.)
  • Plugin interface to allow for user-developed service checks
  • Contact notifications when problems occur and get resolved (via email, pager, or user-defined method)
  • Ability to define event handlers to be run during service or host events (for proactive problem resolution)
  • Web output (current status, notifications, problem history, log file, etc.)

Install Nagios on Debian 11

You can install Nagios on Debian 11 either from the source code or directly from the default Debian main repositories.

Install Nagios on Debian 11 from APT Repositories

In this guide, we will learn how to install Nagios on Debian 11 via the APT repository.

The good thing here is that, the default Debian 11 repositories provides Nagios core packages.

You can verify this by running the command below;

apt-cache policy nagios4
nagios4:
  Installed: (none)
  Candidate: 4.4.6-4
  Version table:
     4.4.6-4 500
        500 http://deb.debian.org/debian bullseye/main amd64 Packages

As of this writing, the default repos provides the current stable release version of Nagios Core, which is version 4.4.6. You can check on the releases page.

Install Nagios on Debian 11

You can then simply execute the command below to install Nagios on Debian 11.

apt install nagios4
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils javascript-common libapache2-mod-php libapache2-mod-php7.4 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
  libarchive13 libcurl4 libdbi1 libgd3 libgpgme11 libjs-jquery libldb2 liblua5.3-0 libmariadb3 libnet-snmp-perl libpq5 libpython3.9 libradcli4 libsensors-config
  libsensors5 libsmbclient libsnmp-base libsnmp40 libsodium23 libtalloc2 libtdb1 libtevent0 liburiparser1 libwbclient0 libxpm4 mariadb-common monitoring-plugins
  monitoring-plugins-basic monitoring-plugins-common monitoring-plugins-standard mysql-common nagios-images nagios4-cgi nagios4-common nagios4-core php-common php7.4-cli
  php7.4-common php7.4-json php7.4-opcache php7.4-readline python3-gpg python3-ldb python3-samba python3-talloc python3-tdb rpcbind samba-common samba-common-bin
  samba-dsdb-modules samba-libs smbclient snmp ssl-cert sudo
Suggested packages:
  apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser php-pear lrzip libgd-tools libcrypt-des-perl libdigest-hmac-perl libio-socket-inet6-perl
  lm-sensors snmp-mibs-downloader icinga2 nagios-plugins-contrib fping qstat nagios-nrpe-plugin heimdal-clients python3-markdown python3-dnspython cifs-utils
The following NEW packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils javascript-common libapache2-mod-php libapache2-mod-php7.4 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
  libarchive13 libcurl4 libdbi1 libgd3 libgpgme11 libjs-jquery libldb2 liblua5.3-0 libmariadb3 libnet-snmp-perl libpq5 libpython3.9 libradcli4 libsensors-config
  libsensors5 libsmbclient libsnmp-base libsnmp40 libsodium23 libtalloc2 libtdb1 libtevent0 liburiparser1 libwbclient0 libxpm4 mariadb-common monitoring-plugins
  monitoring-plugins-basic monitoring-plugins-common monitoring-plugins-standard mysql-common nagios-images nagios4 nagios4-cgi nagios4-common nagios4-core php-common
  php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline python3-gpg python3-ldb python3-samba python3-talloc python3-tdb rpcbind samba-common
  samba-common-bin samba-dsdb-modules samba-libs smbclient snmp ssl-cert sudo
0 upgraded, 67 newly installed, 0 to remove and 0 not upgraded.
Need to get 33.7 MB of archives.
After this operation, 131 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Nagios User and Group

The installation command creates dedicated Nagios user and group;

getent passwd nagios
nagios:x:109:115::/var/lib/nagios:/usr/sbin/nologin
getent group nagios
nagios:x:115:

Nagios Service

The install command creates Nagios service configuration files;

systemctl status nagios4
● nagios4.service - nagios4
     Loaded: loaded (/lib/systemd/system/nagios4.service; disabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-08-27 07:47:28 EAT; 8min ago
       Docs: man:nagios4
   Main PID: 17993 (nagios4)
      Tasks: 6 (limit: 2341)
     Memory: 20.2M
        CPU: 296ms
     CGroup: /system.slice/nagios4.service
             ├─17993 /usr/sbin/nagios4 /etc/nagios4/nagios.cfg
             ├─17994 /usr/sbin/nagios4 --worker /var/lib/nagios4/rw/nagios.qh
             ├─17995 /usr/sbin/nagios4 --worker /var/lib/nagios4/rw/nagios.qh
             ├─17996 /usr/sbin/nagios4 --worker /var/lib/nagios4/rw/nagios.qh
             ├─17997 /usr/sbin/nagios4 --worker /var/lib/nagios4/rw/nagios.qh
             └─17998 /usr/sbin/nagios4 /etc/nagios4/nagios.cfg

Aug 27 07:47:28 debian11 nagios4[17993]: wproc: Registry request: name=Core Worker 17994;pid=17994
Aug 27 07:47:28 debian11 nagios4[17993]: wproc: Registry request: name=Core Worker 17994;pid=17994
Aug 27 07:47:28 debian11 nagios4[17993]: wproc: Registry request: name=Core Worker 17997;pid=17997
Aug 27 07:47:28 debian11 nagios4[17993]: wproc: Registry request: name=Core Worker 17997;pid=17997
Aug 27 07:47:28 debian11 nagios4[17993]: wproc: Registry request: name=Core Worker 17996;pid=17996
Aug 27 07:47:28 debian11 nagios4[17993]: wproc: Registry request: name=Core Worker 17996;pid=17996
Aug 27 07:47:28 debian11 nagios4[17993]: wproc: Registry request: name=Core Worker 17995;pid=17995
Aug 27 07:47:28 debian11 nagios4[17993]: wproc: Registry request: name=Core Worker 17995;pid=17995
Aug 27 07:47:29 debian11 nagios4[17993]: Successfully launched command file worker with pid 17998
Aug 27 07:47:29 debian11 nagios4[17993]: Successfully launched command file worker with pid 17998

Enable the service to run on system boot.

systemctl enable nagios4

Nagios Configuration Files

The Nagios configuration files are installed under, /etc/nagios4/.

ls -1d /etc/nagios4/*
/etc/nagios4/apache2.conf
/etc/nagios4/cgi.cfg
/etc/nagios4/conf.d
/etc/nagios4/htdigest.users
/etc/nagios4/nagios.cfg
/etc/nagios4/objects
/etc/nagios4/resource.cfg
/etc/nagios4/stylesheets

Nagios Apache Config files

Apache configuration files for Nagios web interface, is also setup on the /etc/apache2/conf-available/nagios4-cgi.conf configuration file.

The sample configuration file without comment lines is shown below;

ScriptAlias /cgi-bin/nagios4 /usr/lib/cgi-bin/nagios4
ScriptAlias /nagios4/cgi-bin /usr/lib/cgi-bin/nagios4

Alias /nagios4/stylesheets /etc/nagios4/stylesheets

Alias /nagios4 /usr/share/nagios4/htdocs

<DirectoryMatch (/usr/share/nagios4/htdocs|/usr/lib/cgi-bin/nagios4|/etc/nagios4/stylesheets)>
    Options FollowSymLinks
    DirectoryIndex index.php index.html
    AllowOverride AuthConfig
    Require ip	::1/128 fc00::/7 fe80::/10 10.0.0.0/8 127.0.0.0/8 169.254.0.0/16 172.16.0.0/12 192.168.0.0/16
    <Files "cmd.cgi">
	AuthDigestDomain "Nagios4"
	AuthDigestProvider file
	AuthUserFile	"/etc/nagios4/htdigest.users"
	AuthGroupFile	"/etc/group"
	AuthName	"Nagios4"
	AuthType	Digest
	Require all	granted
    </Files>
</DirectoryMatch>

<Directory /usr/share/nagios4/htdocs>
    Options	+ExecCGI	
</Directory>

Update Default Configuration

You can adjust the configuration file as you so wish.

For example, run the commands below to update the default configuration file.

cp /etc/apache2/conf-enabled/nagios4-cgi.conf{,.original}
cat > /etc/apache2/conf-enabled/nagios4-cgi.conf << EOL
ScriptAlias /cgi-bin/nagios4 /usr/lib/cgi-bin/nagios4
ScriptAlias /nagios4/cgi-bin /usr/lib/cgi-bin/nagios4

Alias /nagios4/stylesheets /etc/nagios4/stylesheets

Alias /nagios4 /usr/share/nagios4/htdocs

<DirectoryMatch (/usr/share/nagios4/htdocs|/usr/lib/cgi-bin/nagios4|/etc/nagios4/stylesheets)>
    Options FollowSymLinks
    DirectoryIndex index.php index.html
    AllowOverride AuthConfig
	AuthDigestDomain "nagios4"
	AuthDigestProvider file
	AuthUserFile	"/etc/nagios4/htdigest.users"
	AuthGroupFile	"/etc/group"
	AuthName	"Restricted Nagios4 Access"
	AuthType	Digest
	Require	valid-user
</DirectoryMatch>

<Directory /usr/share/nagios4/htdocs>
    Options	+ExecCGI	
</Directory>
EOL

Enable Apache rewrite and CGI modules

You need to enable Apache rewrite and CGI modules.

a2enmod rewrite cgi

Setup Nagios Apache Authentication

Enable Required Modules

If you can check the configuration above, Nagios by default uses MD5 digest authentication. As such you need to enable the required module. Run the command below to check if the modules are already enabled;

apachectl -M | grep -iE 'digest|group'
 auth_digest_module (shared)
 authz_groupfile_module (shared)

If not enabled, run the command below to enable;

a2enmod auth_digest authz_groupfile

Create Nagios Authentication Users

To setup Nagios Web authentication, you need to create an Apache user for authentication.

Since it is using MD5 digest, then this can be done using the htfigest command.

The syntax for the command is;

htdigest [ -c ] passwdfile realm username

The auth passwdfile is defined in the configuration above as /etc/nagios4/htdigest.users.

Add the users and passwords into this file.
htdigest -c /etc/nagios4/htdigest.users "Restricted Nagios4 Access" nagiosadmin

The user, nagiosadmin, is used by default and is defined in the/etc/nagios4/cgi.cfg config file.

If you need to use a different user, you need to replace all the occurrences of nagiosadmin on the /etc/nagios4/cgi.cfg file with the user you created.

For example, if you use like admin, replace nagiosadmin as shown below.

sed -i 's/nagiosadmin/admin/g' /etc/nagios4/cgi.cfg

If you also want to use a different authentication user file instead of, /etc/nagios4/htdigest.users, ensure you edit the Nagios Apache configuration file, /etc/apache2/conf-available/nagios4-cgi.conf and change the value of AuthUserFile.

And of course, you can then generate the password for that user.

Start Apache Web server

Once you are done with configuration, restart Apache.

systemctl restart apache2

To check the status;

systemctl status apache2

If any firewall is running on your system, be sure to enable Apache through it.

ufw allow 80/tcp

Restart Nagios service

Restart Nagios service by running the command below;

systemctl restart nagios4

To check the status

systemctl status nagios4

If you need to go through the Nagios logs, the log file is;

/var/log/nagios4/nagios.log

Accessing Nagios Web UI on Debian 11

Once you are done with the configuration, navigate to the browser and access your Nagios with the address http://<server-IP>/nagios4.

You will be prompted to enter username and password created above to login.

Install Nagios on Debian 11
Install Nagios on Debian 11

Nagios uses various plugins located under /usr/lib/nagios/plugins/ to monitor various services.

ls -1 /usr/lib/nagios/plugins/*
/usr/lib/nagios/plugins/check_apt
/usr/lib/nagios/plugins/check_breeze
/usr/lib/nagios/plugins/check_by_ssh
/usr/lib/nagios/plugins/check_clamd
/usr/lib/nagios/plugins/check_cluster
/usr/lib/nagios/plugins/check_curl
/usr/lib/nagios/plugins/check_dbi
/usr/lib/nagios/plugins/check_dhcp
/usr/lib/nagios/plugins/check_dig
/usr/lib/nagios/plugins/check_disk
/usr/lib/nagios/plugins/check_disk_smb
/usr/lib/nagios/plugins/check_dns
/usr/lib/nagios/plugins/check_dummy
/usr/lib/nagios/plugins/check_file_age
/usr/lib/nagios/plugins/check_flexlm
/usr/lib/nagios/plugins/check_fping
/usr/lib/nagios/plugins/check_ftp
/usr/lib/nagios/plugins/check_game
/usr/lib/nagios/plugins/check_host
/usr/lib/nagios/plugins/check_hpjd
/usr/lib/nagios/plugins/check_http
/usr/lib/nagios/plugins/check_icmp
/usr/lib/nagios/plugins/check_ide_smart
/usr/lib/nagios/plugins/check_ifoperstatus
/usr/lib/nagios/plugins/check_ifstatus
/usr/lib/nagios/plugins/check_imap
/usr/lib/nagios/plugins/check_ircd
/usr/lib/nagios/plugins/check_jabber
/usr/lib/nagios/plugins/check_ldap
/usr/lib/nagios/plugins/check_ldaps
/usr/lib/nagios/plugins/check_load
/usr/lib/nagios/plugins/check_log
/usr/lib/nagios/plugins/check_mailq
/usr/lib/nagios/plugins/check_mrtg
/usr/lib/nagios/plugins/check_mrtgtraf
/usr/lib/nagios/plugins/check_mysql
/usr/lib/nagios/plugins/check_mysql_query
/usr/lib/nagios/plugins/check_nagios
/usr/lib/nagios/plugins/check_nntp
/usr/lib/nagios/plugins/check_nntps
/usr/lib/nagios/plugins/check_nt
/usr/lib/nagios/plugins/check_ntp
/usr/lib/nagios/plugins/check_ntp_peer
/usr/lib/nagios/plugins/check_ntp_time
/usr/lib/nagios/plugins/check_nwstat
/usr/lib/nagios/plugins/check_oracle
/usr/lib/nagios/plugins/check_overcr
/usr/lib/nagios/plugins/check_pgsql
/usr/lib/nagios/plugins/check_ping
/usr/lib/nagios/plugins/check_pop
/usr/lib/nagios/plugins/check_procs
/usr/lib/nagios/plugins/check_radius
/usr/lib/nagios/plugins/check_real
/usr/lib/nagios/plugins/check_rpc
/usr/lib/nagios/plugins/check_rta_multi
/usr/lib/nagios/plugins/check_sensors
/usr/lib/nagios/plugins/check_simap
/usr/lib/nagios/plugins/check_smtp
/usr/lib/nagios/plugins/check_snmp
/usr/lib/nagios/plugins/check_spop
/usr/lib/nagios/plugins/check_ssh
/usr/lib/nagios/plugins/check_ssmtp
/usr/lib/nagios/plugins/check_swap
/usr/lib/nagios/plugins/check_tcp
/usr/lib/nagios/plugins/check_time
/usr/lib/nagios/plugins/check_udp
/usr/lib/nagios/plugins/check_ups
/usr/lib/nagios/plugins/check_users
/usr/lib/nagios/plugins/check_wave
/usr/lib/nagios/plugins/negate
/usr/lib/nagios/plugins/urlize
/usr/lib/nagios/plugins/utils.pm
/usr/lib/nagios/plugins/utils.sh

Host Status

Install Nagios on Debian 11

Host Services Status

Install Nagios on Debian 11

There you go. You have successfully install and configured Nagios on Debian 11.

Other Tutorials

If you need to monitor you Linux/Windows Hosts or any other device, see out links below;

Next Post Previous Post
No Comment
Add Comment
comment url