Icinga 2 is an open source, scalable and extensible monitoring tool which checks the availability of your network resources, notifies users of outages, and generates performance data for reporting. Icinga 2 can monitor large, complex environments across multiple locations and has a web interface called Icinga Web 2
With Icinga 2 you can monitor:
- Server resources – RAM usage, CPU load, disk usage
- Network services – HTTP, HTTPS, SMTP, IMAP, POP3, NNTP, ping e.t.c
- Network devices – Routers and switches
Features of Icinga 2
These are the top features which Icinga 2 provides:
- Performance-oriented: Icinga 2 has a multithreaded design, it can run thousands of checks each second without any sign of CPU strain.
- Distributed Architecture: IFor large and complex environments do a distributed setup with high availability.
- REST API: Icinga 2 provides a RESTful API which enables you to update your configurations on the fly or show live information about current problems on your custom dashboards.
- Rule-based Configuration: Monitoring as code with dynamic configurations. Apply rules to hosts and services to create a continuous monitoring environment.
- Alerting: You get instant notifications when problems occur via email, text message or mobile message applications.
- Icinga 2 has native support for Graphite and InfluxDB. You can easily send performance data gathered directly to the third party tools.
- Icinga 2 supportNagiosGrapher, PNP4Nagios, and InGraph addons
Install Icinga2 on Ubuntu 18.04 LTS
With the introduction and features covered, let’s start the actual installation of Icinga2 on Ubuntu 18.04 LTS server.
Step 1: Update your system
Run the commands below to update your system and get the latest packages
sudo apt-get update sudo apt-get upgrade sudo reboot
Step 2: Install Apache and PHP
Icinga 2 needs a web server and PHP installed on the hosting server. Run below commands to have everything setup.
sudo apt-get install php php-{xml,cli,opcache,gd,intl,readline,mysql,curl,mbstring,ldap,json}
Install apache2
and libapache2-mod-php
module.
sudo apt-get install apache2 libapache2-mod-php
Configure php timezone
$ sudo vim /etc/php/7.2/apache2/php.ini date.timezone = Africa/Nairobi
Restart apache2 service
sudo systemctl restart apache2
Step 3: Install and Configure the MariaDB database server
Install MariaDB database on your Ubuntu 18.04 server using the link:
Install MariaDB 10.3 on Ubuntu 18.04 and CentOS 7
Once done with the installation, log in to the database as root user and create database and user.
$ mysql -u root -p
Create a database and user
CREATE DATABASE icinga2_db; GRANT ALL PRIVILEGES on icinga2_db.* to 'icinga2_user'@'localhost' identified by 'StrongPassword'; FLUSH PRIVILEGES; quit
Also, do the same for Icinga web 2.
CREATE DATABASE icingaweb2_db; GRANT ALL PRIVILEGES on icingaweb2_db.* to 'icingaweb2_user'@'localhost' identified by 'StrongPassword'; FLUSH PRIVILEGES;
Step 4: Install Icinga2 and Icinga Web 2
Start by importing repo GPG key:
curl -sSL https://packages.icinga.com/icinga.key | sudo apt-key add -
Add apt repository
echo "deb https://packages.icinga.com/ubuntu icinga-bionic main" | sudo tee /etc/apt/sources.list.d/icinga.list
Run update of package list and install Icinga2 packages
sudo apt-get install icinga2 icingaweb2 icinga2-ido-mysql
Answer yes when asked whether Icinga 2 should use MySQL
Enable Icinga 2's ido-mysql feature? YES Configure database for icinga2-ido-mysql with dbconfig-common? NO
Configure Icinga 2 Backend
When done, enable ido-mysql
and command features.
sudo icinga2 feature enable command ido-mysql
Then restart icinga2 after making the change
sudo systemctl restart icinga2.service
Import database schema:
mysql -u root icinga2_db -p < /usr/share/icinga2-ido-mysql/schema/mysql.sql
Configure Icinga2 MySQL IDO with created database and user account
sudo vim /etc/icinga2/features-enabled/ido-mysql.conf
Make changes like below:
/** * The db_ido_mysql library implements IDO functionality * for MySQL. */ library "db_ido_mysql" object IdoMysqlConnection "ido-mysql" { user = "icinga2_user", password = "StrongPassword", host = "localhost", database = "icinga2_db" }
Restart icinga2 service after saving the changes
sudo systemctl restart icinga2
Configure Icinga2 on Web Interface
You need to create a setup token for use on web configuration
$ sudo icingacli setup token create The newly generated setup token is: 75e269c261a15615
Take note of the given token ID. On your web browser, open and the URL:
http://serverdomain/icingaweb2 or http://server-ip-address/icingaweb2
This should take you to configuration wizard page
- Provide generated token ID and click Next.
- On the next page, select modules you want to enable and click Next.
- The next page will do a check if all PHP modules are installed.
- On the next page, select Authentication type, the default is MySQL
- Provide MySQL database settings
- On Monitoring IDO Resource page, provide Icinga2 database settings configured earlier
- Please define below how you want to send commands to your monitoring instance.
- Configure Monitoring Security
- Configure admin user
g
- Finish the setup to get the Login page. Enter admin account username and password created earlier.
Configure Icinga 2 master node
# icinga2 node wizard Welcome to the Icinga 2 Setup Wizard! We will guide you through all required configuration details. Please specify if this is a satellite/client setup ('n' installs a master setup) [Y/n]: n Starting the Master setup routine... Please specify the common name (CN) [ubuntu-01]: icinga2-master Reconfiguring Icinga... Checking for existing certificates for common name 'icinga2-master'... Certificates not yet generated. Running 'api setup' now. Generating master configuration for Icinga 2. Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect. Please specify the API bind host/port (optional): Bind Host []: 0.0.0.0 Bind Port []: Done.
Now restart your Icinga 2 daemon to finish the installation!
sudo systemctl restart icinga2.service
To generate a ticket for the client on the master node, use syntax
# icinga2 pki ticket --cn 'clientname'
In our next article, we will cover the configuration of Icinga 2 clients to be monitored.