Icinga@MariaDB-Apache-RHEL8.md 19 KB

init on ‎21 ‎July ‎2020, ‏‎10:10:56

2021 01 27 * updated

NO PACKAGES IN REPOSITORY at the moment of writing, icinga packages were not available in RHN for RH Satellites subscribed to Icinga_RHEL8_Icinga_RHEL8

ICINGA (master installation)

enable REPOS, subscribe if needed

yum repolist yum update yum install icinga2 icinga2-selinux systemctl enable icinga2 && systemctl restart icinga2 && systemctl status icinga2 icinga2 feature list

yum install icingaweb2 icingaweb2-selinux icingacli

if you wish to use EPEL's plugins, install them with

yum install nagios-plugins-all

otherwise install them manually

[...]

yum install mariadb-server mariadb

use better module installation instead

yum module install mariadb systemctl enable mariadb && systemctl start mariadb

secure mariadb installation (set root pass, disable its remote access)

mysql_secure_installation

install icinga--mariadb connector

yum install icinga2-ido-mysql

create database, user and tables

mysql -u root -p CREATE DATABASE icinga; # you may create user and grand using same command # CREATE USER icinga@localhost IDENTIFIED BY 'newpass'; # GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY '(newpass)'; FLUSH PRIVILEGES; quit mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql

determine credentials

vi /etc/icinga2/features-available/ido-mysql.conf uncomment and update credentials ln -s /etc/icinga2/features-available/ido-mysql.conf /etc/icinga2/features-enabled/ido-mysql.conf systemctl restart icinga2

better to install using module command and check that it is running

yum install httpd

yum module install httpd systemctl enable httpd && systemctl start httpd netstat -ntap | grep -e 80 -e 443

configure icinga

icinga2 api setup systemctl restart icinga2

set new pass for root API user

vi /etc/icinga2/conf.d/api-users.conf

add another user

object ApiUser "icingaweb2" { password = "newpass" // permissions = [ "status/query", "actions/", "objects/modify/", "objects/query/" ] permissions = [ "" ] } systemctl restart icinga2

check which php version you have with

php -v

you might need to install php7 version:

yum install rh-php71 rh-php71-php-mysqlnd

systemctl enable rh-php71-php-fpm.service && systemctl start rh-php71-php-fpm.service

check for FilesMatch, if using php-fpm

vi /etc/httpd/conf.d/icingaweb2.conf

restart php, if changed needed to apply

systemctl restart rh-php71-php-fpm.service && systemctl status rh-php71-php-fpm.service

generate new token, copy-paste into notepad, you will need it

icingacli setup token create The newly generated setup token is: 51223xxxxxxx0f12

create table in DB for icingaweb2

mysql -u root -p CREATE DATABASE icingaweb2; GRANT ALL ON icingaweb2.* TO icingaweb2@localhost IDENTIFIED BY '(newpass)';

does not exist in repo, comes from EPEL, better is "GraphicsMagick.x86_64 : An ImageMagick fork, offering faster image generation and better quality"

yum install ImageMagick

causes dependecies error

yum install ImageMagick-devel

source /opt/rh/rh-php71/enable

/opt/rh/rh-php71/root/bin/pecl install imagick

server firewall

open firewall, if needed tcp/(80,443)

vi /etc/sysconfig/iptables

##

Icinga welcomes.

##

-A INPUT -m state --state NEW -m tcp -p tcp -s xxx.xxx.xx.xxxx/21 --dport 5665 -j ACCEPT -m comment --comment "Icinga listens for agents." -A INPUT -m state --state NEW -m tcp -p tcp -s xxx.xxx.xx.xx/21 -m multiport --dports 80,443 -j ACCEPT -m comment --comment "Icinga listens for http(s) connections."

reload firewall and check

iptables-restore < /etc/sysconfig/iptables iptables -L -n -v --line-numbers | grep Icinga

github? no github, please.

for github

open firewall rules here

at this point Icingaweb2 should be accessible via browser

https://localhost/icingaweb2

proceed with setup instractions, provided by wizard

provide token generate earlier or, you forgot it already, recall it with:

icingacli setup token show

check that icinga is happy with internal checks

I got:

The PHP module Imagick is missing.

but will work on it in the future.

plan, how authentication will happen on your instance and apply chosen way

local authentication = "database" scenario earlier created)

Authentication Type: Database [next] Resource Name: icingaweb2 Database Type: MySQL Host: localhost Database name: icingaweb2 Username: icingaweb2 Passowrd: (pass)

if you know what are you doing, specify yours, other very advised to use:

Character Set: utf8mb4 [Validate configuration] "The configuration has been successfully validated." [next] Authentication Backend: Backend Name: icingaweb2 [next]

create admin user in icingaweb2

Administration Username: admin Password: (newpass) Repeat password: (repeat newpass) [next]

application configuration left untoched

Show Stacktraces [x] Show Application State Messages [x] User Preference Storage Type: database logging type: syslog logging level: error application prefix: icingaweb2 facility: user [next] [next] [next]

Monitoring Backend Backend Name: icinga Backend Type: IDO [next]

now it is time to tell to IcingaWeb2 where Icinga2 stores its data

Monitoring IDO Resource Resource Name: icinga_ido Database Type: MySQL Host: localhost Port: Database Name: icinga Username: icinga Password: (pass) Character Set: utf8mb4 [validate configuration]

The configuration has been successfully validated.
Validation Log
Connection to icinga as icinga on localhost: successful
have_ssl: DISABLED
protocol_version: 10
version: 10.3.27-MariaDB
version_compile_os: Linux

[next]

how do we going to tell icinga instance what to do

Command Transport Transport Name: icinga2 Transport Type: Icinga 2 API Host: localhost Port: 5665

created earlier

API Username: icingaweb2 API Password: (pass) [validate configuration]

The configuration has been successfully validated.

[next] Protected Custom Variables: pw,pass,community [next] [finish]

Congratulations! Icinga Web 2 has been successfully set up.

[Login to Icinga Web 2]

!! ready !! login with your admin account

#

installing director (adding hosts/services)

#

assuming at this point that firewall is opened towards github servers

iptables-restore < /etc/sysconfig/iptables iptables -L -n -v --line-numbers | grep git 5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443 tcp match-set github dst

easy way:

yum install git

installing required module dependencies first

https://github.com/Icinga/icingaweb2-module-ipl/blob/master/README.md

check for latest release number and adjust MODULE_VERSION variable below:

https://github.com/Icinga/icingaweb2-module-ipl/releases

prepare download directory to avoid mess and keep places clean and tidy

sudo cd mkdir -p downloads/modules4icinga cd downloads/modules4icinga/

check that icingaweb2 modules directory exists and is not empty:

ls -la /usr/share/icingaweb2/modules

create installation script

vi install_icinga_module.sh ---snip---

paste following code below:

#

2020 01 27 + init: this script written to install/update modules for icinga /A

#

MODULES_PATH="/usr/share/icingaweb2/modules"

https://github.com/Icinga/icingaweb2-module-ipl/releases

MODULE_NAME=ipl MODULE_VERSION=v0.5.0 REPO="https://github.com/Icinga/icingaweb2-module-${MODULE_NAME}" rm -rf ${MODULES_PATH}/${MODULE_NAME} git clone ${REPO} "${MODULES_PATH}/${MODULE_NAME}" --branch "${MODULE_VERSION}" icingacli module enable "${MODULE_NAME}"

https://github.com/Icinga/icingaweb2-module-incubator/releases

MODULE_NAME=incubator MODULE_VERSION=v0.6.0 REPO="https://github.com/Icinga/icingaweb2-module-${MODULE_NAME}" rm -rf ${MODULES_PATH}/${MODULE_NAME} git clone ${REPO} "${MODULES_PATH}/${MODULE_NAME}" --branch "${MODULE_VERSION}" icingacli module enable "${MODULE_NAME}"

https://github.com/Icinga/icingaweb2-module-reactbundle/releases

MODULE_NAME=reactbundle MODULE_VERSION=v0.8.0 REPO="https://github.com/Icinga/icingaweb2-module-${MODULE_NAME}" rm -rf ${MODULES_PATH}/${MODULE_NAME} git clone ${REPO} "${MODULES_PATH}/${MODULE_NAME}" --branch "${MODULE_VERSION}" icingacli module enable "${MODULE_NAME}"

https://github.com/Icinga/icingaweb2-module-director/releases

MODULE_NAME=director MODULE_VERSION=v1.8.0 REPO="https://github.com/Icinga/icingaweb2-module-${MODULE_NAME}" rm -rf ${MODULES_PATH}/${MODULE_NAME} git clone ${REPO} "${MODULES_PATH}/${MODULE_NAME}" --branch "${MODULE_VERSION}" icingacli module enable "${MODULE_NAME}"

ls -la ${MODULES_PATH} icingacli module list echo "Done." ---snip---

make script executable and run it (you will need it in the future to update modules)

chmod +x ./install_icinga_module.sh ./install_icinga_module.sh [...] ---snip--- total 4 drwxr-xr-x. 10 root root 130 Jan 27 15:17 . drwxr-xr-x. 7 root root 80 Jan 27 10:58 .. drwxr-xr-x. 11 root root 4096 Jan 27 15:17 director drwxr-xr-x. 6 root root 124 Jan 27 10:58 doc drwxr-xr-x. 6 root root 232 Jan 27 15:17 incubator drwxr-xr-x. 6 root root 205 Jan 27 15:17 ipl drwxr-xr-x. 7 root root 136 Jan 27 10:58 monitoring drwxr-xr-x. 5 root root 169 Jan 27 15:17 reactbundle drwxr-xr-x. 5 root root 71 Jan 27 10:58 setup drwxr-xr-x. 5 root root 70 Jan 27 10:58 translation MODULE VERSION STATE DESCRIPTION director 1.8.0 enabled Director - Config tool for Icinga 2 doc 2.8.2 enabled Documentation module incubator 0.6.0 enabled Incubator provides bleeding-edge libraries ipl v0.5.0 enabled The Icinga PHP library monitoring 2.8.2 enabled Icinga monitoring module reactbundle 0.8.0 enabled ReactPHP-based 3rd party libraries

Done. ---snip---

https://github.com/Icinga/icingaweb2-module-director/blob/master/doc/02-Installation.md

installing module dependencies (repeat until Dependencies resolved. Nothing to do. Complete!)

yum install php-mysqlnd php-curl php-iconv php-pcntl php-process php-sockets php-mbstring php-json

create database for director

mysql -u root -p

add resource (specify character set is lowercase 'utf8', utf8mb4 will not work (for time of writing, 2021 01 27 /A)):

CREATE DATABASE director CHARACTER SET 'utf8'; GRANT ALL ON director.* TO director@localhost IDENTIFIED BY 'newpass'; Icingaweb2, Configuration, Application, Resources, [Create New Resource] Resource Type: SQL Database Resource Name: director Database Type: MySQL Host: localhost Port: Database name: director Username: director Password: director Character set: utf8 [validate configuration]

The configuration has been successfully validated.
Validation Log
Connection to director as director on localhost: successful
have_ssl: DISABLED
protocol_version: 10
version: 10.3.27-MariaDB
version_compile_os: Linux

[save changes]

configure icinga director

icingaweb2, Configuration, Modules, director, Configuration DB resource: director_db [create database schema]

kickstart wizard (if fresh install you do not need to import anything)

endpoint: (hostname), if not sure, use FQDN here hostname: (hostname), if not sure, use FQDN here Port: 5665 API user: icingaweb2 Password: (pass)

configuring daemon

useradd -r -g icingaweb2 -d /var/lib/icingadirector -s /bin/false icingadirector install -d -o icingadirector -g icingaweb2 -m 0750 /var/lib/icingadirector cp "/usr/share/icingaweb2/modules/director/contrib/systemd/icinga-director.service" /etc/systemd/system/ systemctl daemon-reload systemctl enable icinga-director && systemctl start icinga-director && systemctl status icinga-director

check in icinga instance, should be fine now:

https://(host)/icingaweb2/director/health https://(host)/icingaweb2/director/daemon

at this point we need to create master in new zone

firstly empty everything from zones and certs

rm /var/lib/icinga2/certs/* rm -rf /var/lib/icinga2/api/zones/* rm -rf /var/lib/icinga2/api/zones/zones-stage/*

start configuration

icinga2 node wizard ---snip--- Welcome to the Icinga 2 Setup Wizard! We will guide you through all required configuration details. Please specify if this is an agent/satellite setup ('n' installs a master setup) [Y/n]: n Starting the Master setup routine... Please specify the common name (CN) [(hostname)]: (hostname) Reconfiguring Icinga... Checking for existing certificates for common name '(hostname)'... Certificates not yet generated. Running 'api setup' now. Generating master configuration for Icinga 2. 'api' feature already enabled. Master zone name [master]: (new zone name) Default global zones: global-templates director-global Do you want to specify additional global zones? [y/N]: n Please specify the API bind host/port (optional): Bind Host []: Bind Port []: Do you want to disable the inclusion of the conf.d directory [Y/n]: Disabling the inclusion of the conf.d directory... Checking if the api-users.conf file exists... Done. Now restart your Icinga 2 daemon to finish the installation! ----snip--- systemctl restart icinga2

new cert should be generated in

ls -la /var/lib/icinga2/certs

kickstarter to import freshly defined master configuration

icingaweb2, configuration, modules, director, configuration kickstart wizard: endpoint name: (hostname of master) icinga host: localhost port: 5665 API user: icingaweb2 password: (pass) [Run import]

examine that only necessary objects are imported

(clean installation on moment of writing contains about 241 object creations/modifications)

icingaweb2, icinga director, activity log

on last page you should see your freshly zone created

when sure, deploy configuration

icingaweb2, icinga director, activity log, [Deploy 241 pending changes]

you should see new config files appeared in

ls -la /var/lib/icinga2/api/zones

during node setup, ticketsalt should be generated, but

check that it is updated, otherwise generate and modify file

vi /etc/icinga2/constants.conf

during node setup, wizard ask to disable default checks, otherwise

mv /etc/icinga2/conf.d/services.conf /etc/icinga2/conf.d/services.conf.20191021

uncomment and enable, set 'true'

vi /etc/icinga2/features-enabled/api.conf ticket_salt = TicketSalt

enable features

icinga2 feature enable command icinga2 feature enable perfdata

notifications

yum install postfix systemctl enable postfix && systemctl start postfix && systemctl status postfix icinga2 feature enable notification && systemctl restart icinga2

selinux

semanage fcontext -a -t nagios_notification_plugin_exec_t "/data/home/icinga/checks/local(/.*)?" restorecon -R /data/home/icinga/checks/local/

module: reporting

download https://github.com/Icinga/icingaweb2-module-reporting/archive/master.zip upload cd /usr/share/icingaweb2/modules install -d -m 0755 "${ICINGAWEB_MODULEPATH}/reporting" unzip mysql -u root -p CREATE DATABASE reporting; GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON reporting.* TO reporting@localhost IDENTIFIED BY '(pass)';

create template table first, otherwise 1005 error, cause key does not exist

mysql -p -u root reporting < schema/mysql.sql Configuration -> Application -> Resources menu > create new resouce. icingaweb_reporting_db, reporting, reporting, utf8mb4. Configuration -> Modules -> reporting -> Backend, icingaweb_reporting_db cp /usr/share/icingaweb2/modules/reporting/config/systemd/icinga-reporting.service /etc/systemd/system/icinga-reporting.service systemctl enable icinga-reporting.service systemctl start icinga-reporting.service (pdfexport requires https://github.com/Icinga/icingaweb2-module-pdfexport/blob/master/doc/02-Installation.md)

#######################################################################################

script installation

check connectivity

curl -k -s -m 2 https://(host):5665/ >/dev/null && echo "5665 OK" || echo "5665 NOT OK"

(host): add repo to host

yum repolist yum install icinga2 nagios-plugins-all

download host/agent/script, execute ./icinga.sh

icinga2 feature enable command api icinga2 feature disable checker systemctl enable icinga2 && systemctl restart icinga2

console installation from node

(host):/data/home/(you)# icinga2 node wizard Welcome to the Icinga 2 Setup Wizard! We will guide you through all required configuration details. Please specify if this is an agent/satellite setup ('n' installs a master setup) [Y/n]: Y Starting the Agent/Satellite setup routine... Please specify the common name (CN) [(host)]: Please specify the parent endpoint(s) (master or satellite) where this node should connect to: Master/Satellite Common Name (CN from your master/satellite node): (host) Do you want to establish a connection to the parent node from this node? [Y/n]: y Please specify the master/satellite connection information: Master/Satellite endpoint host (IP address or FQDN): (host) Master/Satellite endpoint port [5665]: Add more master/satellite endpoints? [y/N]: n Parent certificate information: Subject: CN = (host) Issuer: CN = Icinga CA Valid From: Sep 29 11:23:06 2019 GMT Valid Until: Sep 25 11:23:06 2034 GMT Fingerprint: 39 60 1B AE D0 93 1E 36 89 4E 5E 04 E1 C5 80 1B 57 CC 0C D6 Is this information correct? [y/N]: y Please specify the request ticket generated on your Icinga 2 master (optional). (Hint: # icinga2 pki ticket --cn '(host)'): 8bc7aa3167870788b8xxx85b8fe1f5310ffbd Please specify the API bind host/port (optional): Bind Host []: Bind Port []: Accept config from parent node? [y/N]: y Accept commands from parent node? [y/N]: y Reconfiguring Icinga... Disabling feature notification. Make sure to restart Icinga 2 for these changes to take effect. Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect. Local zone name [(host)]: Parent zone name [master]: (host) Default global zones: global-templates director-global Do you want to specify additional global zones? [y/N]: n Do you want to disable the inclusion of the conf.d directory [Y/n]: Disabling the inclusion of the conf.d directory... Done.

Now restart your Icinga 2 daemon to finish the installation!

(host):/data/home/(you)# systemctl restart icinga2 icinga2 feature enable command api icinga2 feature disable checker systemctl restart icinga2