Requisits previs
Pas 1: actualitzeu el sistema
Pas 2: instal·leu els paquets necessaris
Pas 3: configureu la base de dades
Pas 4: inicialitzeu el mestre
Pas 5: inicialitzeu el client
Pas 6: configureu el client
Pas 7: afegiu el client a la configuració mestra
Pas 8: ordres i comprovacions personalitzades
Icinga2 és un sistema de supervisió potent i, quan s'utilitza en un model de client mestre, pot substituir la necessitat de controls de monitoratge basats en NRPE. El model mestre-client és més segur per diverses raons . També permet una supervisió més distribuïda permetent que les comprovacions es modifiquin en un servidor i es propaguin a altres. També ofereix una ubicació centralitzada per als canvis.
Per exemple: suposem que teniu 4 servidors web diferents amb equilibri de càrrega. Si sabeu que hi haurà un pic de càrrega (potser una venda o alguna cosa per a la qual espereu molta activitat), potser voldreu augmentar els nivells en què l'ús elevat de la CPU alerta els administradors del sistema. Si feu servir comprovacions NRPE, haureu d'anar a cada servidor i modificar el /etc/nrpe.d/common_commands.cfgdocument de cadascun d'ells. Al model mestre-client, només podeu modificar les definicions d'amfitrió a la /etc/icinga2/repository.d/hosts/carpeta i, a continuació, tornar a carregar Icinga. Les comprovacions es propagaran a cada servidor i es recolliran automàticament. També podeu afegir comprovacions molt fàcilment modificant els /etc/icinga2/repository.d/services/fitxers, i automàticament es propagaran i seran reconeguts, sempre que els complements existeixin als servidors client.
Requisits previs
- S'anomena una instància de servidor amb Icinga2 i Icingaweb2 ja instal·lada i configurada ( instruccions )
icinga2master.example.com.
- Una nova instància del servidor Vultr CentOS 6 o 7 que voleu supervisar anomenada
icinga2client.example.com.
- Accés Sudo.
Algunes d'aquesta guia reflectiran les instruccions d'instal·lació enumerades anteriorment, però això s'ha de fer a la màquina client i no a la màquina servidor.
Pas 1: actualitzeu el sistema
Afegiu el repositori "ICINGA" al sistema client per instal·lar els paquets Icinga.
sudo cat > /etc/yum.repos.d/ICINGA-release.repo << 'EOF'
[icinga-stable-release]
name=ICINGA (stable release for epel)
baseurl=http://packages.icinga.org/epel/$releasever/release/
enabled=1
gpgcheck=1
gpgkey=http://packages.icinga.org/icinga.key
EOF
Pas 2: instal·leu els paquets necessaris
Instal·leu els paquets necessaris.
# CentOS 6
sudo yum -y install icinga2 mysql-server mysql icinga2-ido-mysql nagios-plugins-disk nagios-plugins-load nagios-plugins-procs nagios-plugins-ssh nagios-plugins-users nagios-plugins-swap nagios-plugins-ping icingacli
# CentOS 7
sudo yum -y install icinga2 mariadb-server mysql icinga2-ido-mysql nagios-plugins-disk nagios-plugins-load nagios-plugins-procs nagios-plugins-ssh nagios-plugins-users nagios-plugins-swap nagios-plugins-ping icingacli
CentOS 7 utilitza MariaDB en comptes de MySQL, de manera que els paquets necessaris són lleugerament diferents. Inicieu els serveis i configureu-los perquè s'iniciïn a l'arrencada.
sudo chkconfig icinga2 on
sudo service icinga2 start
Configureu el servei MySQL perquè s'iniciï a l'arrencada i inicieu-lo ara perquè puguem assegurar-lo.
# CentOS 6
sudo chkconfig mysqld on
sudo service mysqld start
#CentOS 7
sudo systemctl enable mariadb.service
sudo systemctl start mariadb.service
Assegureu la instal·lació de MySQL/MariaDB. Tant CentOS 6 com 7 utilitzen la mateixa comanda.
sudo mysql_secure_installation
Durant el procés, respon les preguntes tal com es mostra:
Enter current password for root (enter for none): Enter
Set root password? [Y/n]: Y
New password: $newRootPassword
Re-enter new password: $newRootPassword
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y
Tingueu en compte $newRootPasswordque ho necessitareu diverses vegades i és un dolor reiniciar-lo.
Pas 3: configureu la base de dades
Heu de crear el icinganom d'usuari i importar l'esquema a la base de dades. Això es fa de la mateixa manera tant a CentOS 6 com a 7.
sudo mysql -u root -p
>CREATE DATABASE icinga;
>GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY '$someIcingaPassword';
>exit
A continuació, importeu l'esquema a la base de dades que acabeu de crear.
sudo mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql
Haureu d'introduir la $newRootPasswordcontrasenya de MySQL/MariaDB que heu utilitzat durant l' mysql_secure_installationordre anterior, no la $someIcingaPasswordque acabeu de crear; aquesta s'utilitzarà més tard.
Habiliteu el idomòdul (base de dades).
sudo icinga2 feature enable ido-mysql
Haureu d'editar el /etc/icinga2/features-enabled/ido-mysql.conffitxer per afegir la informació de la base de dades. Podeu fer-ho amb la següent comanda.
sudo vi /etc/icinga2/features-enabled/ido-mysql.conf
En aquest fitxer, cerqueu les línies comentades (comencen per //).
//user = "icinga"
//password = "icinga"
//host = "localhost"
//database = "icinga"
...i editeu-los amb l'usuari/contrasenya que acabeu de crear.
user = "icinga"
password = "$someIcingaPassword"
host = "localhost"
database = "icinga"
Assegureu-vos de descomentar les línies eliminant les dues barres obliques inicials.
A continuació, reinicieu el servei per recollir els canvis.
sudo service icinga2 restart
Haureu d'afegir una connexió entre el servidor client i el mestre Icinga2 que ja s'ha configurat. Haureu de fer-ho utilitzant Firewalld a CentOS 7 o IPTables a CentOS 6 o 7.
# CentOS 6
sudo vi /etc/sysconfig/iptables
...
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5665 -j ACCEPT
...
#Icinga2 Master
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 5665 -j ACCEPT
sudo iptables restart
# CentOS 7
sudo firewall-cmd --add-port=5665/tcp --permanent
sudo firewall-cmd --reload
Ara, editeu el fitxer hosts per afegir el mestre com a nom de domini local.
sudo vi /etc/hosts
...
$masterIP icinga2master icinga2master.example.com
Pas 4: inicialitzeu el mestre
Aquest pas s'ha de fer al màster Icinga2. Haureu d'iniciar-lo com a mestre i, a continuació, generar una sol·licitud de signatura de certificat que el vostre client utilitzarà per comunicar-se.
sudo icinga2 node wizard
Això executarà l'assistent del node, que farà diverses preguntes. La pantalla es veurà com la següent i s'enumeren les respostes que donareu.
Welcome to the Icinga 2 Setup Wizard!
We'll guide you through all required configuration details.
Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: n
Starting the Master setup routine...
Please specify the common name (CN) [icinga2-master1.localdomain]: icinga2master.example.com
Checking for existing certificates for common name 'icinga2master.example.com'...
Certificates not yet generated. Running 'api setup' now.
information/cli: Generating new CA.
information/base: Writing private key to '/var/lib/icinga2/ca/ca.key'.
information/base: Writing X509 certificate to '/var/lib/icinga2/ca/ca.crt'.
information/cli: Generating new CSR in '/etc/icinga2/pki/icinga2master.example.com.csr'.
information/base: Writing private key to '/etc/icinga2/pki/icinga2master.example.com.key'.
information/base: Writing certificate signing request to '/etc/icinga2/pki/icinga2master.example.com.csr'.
information/cli: Signing CSR with CA and writing certificate to '/etc/icinga2/pki/icinga2master.example.com.crt'.
information/cli: Copying CA certificate to '/etc/icinga2/pki/ca.crt'.
Generating master configuration for Icinga 2.
information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'.
information/cli: Enabling the 'api' feature.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.
information/cli: Dumping config items to file '/etc/icinga2/zones.conf'.
information/cli: Created backup file '/etc/icinga2/zones.conf.orig'.
Please specify the API bind host/port (optional):
Bind Host []: <hit enter>
Bind Port []: <hit enter>
information/cli: Created backup file '/etc/icinga2/features-available/api.conf.orig'.
information/cli: Updating constants.conf.
information/cli: Created backup file '/etc/icinga2/constants.conf.orig'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
Done.
Now restart your Icinga 2 daemon to finish the installation!
A continuació, reinicieu Icinga2 per recollir els canvis.
sudo service icinga2 restart
Ara que és un mestre, podeu utilitzar-lo per generar la cadena de sol·licitud de signatura del certificat.
sudo icinga2 pki ticket --cn icinga2client.example.com
Obtindreu una mica de corda $pkiString. Copieu aquesta cadena, ja que la necessitareu al client.
Pas 5: inicialitzeu el client
Executeu l'assistent de nodes per generar els certificats i connectar-vos al mestre.
sudo icinga2 node wizard
Sortirà una pàgina semblant a l'anterior. Aquesta pàgina es mostra a continuació amb les respostes incloses.
Welcome to the Icinga 2 Setup Wizard!
We'll guide you through all required configuration details.
Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: Y
Starting the Node setup routine...
Please specify the common name (CN) [icinga2client.example.com]:
Please specify the master endpoint(s) this node should connect to:
Master Common Name (CN from your master setup): icinga2master.example.com
Do you want to establish a connection to the master from this node? [Y/n]: Y
Please fill out the master connection information:
Master endpoint host (Your master's IP address or FQDN): icinga2master.example.com
Master endpoint port [5665]: 5665
Add more master endpoints? [y/N]: N
Please specify the master connection for CSR auto-signing (defaults to master endpoint host):
Host [icinga2master.example.com]: icinga2master.example.com
Port [5665]: 5665
information/cli: Created backup file '/etc/icinga2/pki/icinga2client.example.com.key.orig'.
information/cli: Created backup file '/etc/icinga2/pki/icinga2client.example.com.crt.orig'.
information/base: Writing private key to '/etc/icinga2/pki/icinga2client.example.com.key'.
information/base: Writing X509 certificate to '/etc/icinga2/pki/icinga2client.example.com.crt'.
information/cli: Fetching public certificate from master (icinga2master.example.com, 5665):
Certificate information:
Subject: CN = icinga2master.example.com
Issuer: CN = Icinga CA
Valid From: Jan 10 21:08:37 2017 GMT
Valid Until: Jan 7 21:08:37 2032 GMT
Fingerprint: FE 72 AB F3 18 A5 12 E0 0C 5D 94 8B 96 C4 57 3B 00 5C E0 04
Is this information correct? [y/N]: Y
information/cli: Received trusted master certificate.
Please specify the request ticket generated on your Icinga 2 master.
(Hint: # icinga2 pki ticket --cn 'icinga2client.example.com'): $pkiString
information/cli: Requesting certificate with ticket '$pkiString'.
warning/cli: Backup file '/etc/icinga2/pki/icinga2client.example.com.crt.orig' already exists. Skipping backup.
information/cli: Writing signed certificate to file '/etc/icinga2/pki/icinga2client.example.com.crt'.
information/cli: Writing CA certificate to file '/etc/icinga2/pki/ca.crt'.
Please specify the API bind host/port (optional):
Bind Host []: <enter key>
Bind Port []: <enter key>
Accept config from master? [y/N]: Y
Accept commands from master? [y/N]: Y
information/cli: Disabling the Notification feature.
Disabling feature notification. Make sure to restart Icinga 2 for these changes to take effect.
information/cli: Enabling the Apilistener feature.
warning/cli: Feature 'api' already enabled.
information/cli: Created backup file '/etc/icinga2/features-available/api.conf.orig'.
information/cli: Generating local zones.conf.
information/cli: Dumping config items to file '/etc/icinga2/zones.conf'.
information/cli: Created backup file '/etc/icinga2/zones.conf.orig'.
information/cli: Updating constants.conf.
information/cli: Created backup file '/etc/icinga2/constants.conf.orig'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
Done.
Now restart your Icinga 2 daemon to finish the installation!
Continueu i reinicieu Icinga2 per recollir els canvis.
sudo icinga2 restart
És possible que això ja s'hagi fet, però heu d'assegurar-vos que les funcions d'ordre i API estiguin habilitades.
sudo icinga2 feature enable command
sudo icinga2 feature enable api
If they weren't enabled, it will say "feature enabled", so you'll need to restart the Icinga2 daemon. But first, you need to change ownership of the files in the /etc/icinga2 directory, as some of them have the wrong permissions after running the node wizard. They should all have their owner and group set to icinga. Change the permissions by using the following command:
sudo chown -R icinga:icinga /etc/icinga2/
Now, you can restart the Icinga2 daemon.
sudo service icinga2 restart
The client configuration requires editing a few different files.
/etc/icinga2/zones.conf: Contains the endpoints (servers) and zones that contain them. This is how the servers are partitioned. Make sure the client names match the server names.
/etc/icinga2/icinga2.conf: You are accepting commands and configs from the master, so you need to do a minor edit on this file to avoid duplicate command definitions.
First, we're going to modify the zones.conf file to define the server and the zone it's in, as well as creating a "global" zone for command definitions that are universal to ALL servers, instead of unique to each (such as disk checks).
sudo vi /etc/icinga2/zones.conf
object Zone clientZone {
endpoints = [ "icinga2master.example.com" ]
}
object Zone "global-templates" { # Add global templates zone
global = true
}
object Endpoint NodeName {
host = "$icinga2clientIP"
}
object Zone ZoneName {
endpoints = [ NodeName ]
parent = clientZone
}
It is important to know, there can only be 2 nodes per zone at the moment. You can make as many zones as you wish, but if there are more than 2 nodes per zone there is a chance that the Icinga2 service will not work properly. This is not a problem on the client, unless you already have 2 nodes in the zone clientZone, in which case you will need to make another zone name.
Now, make the modification in the /etc/icinga2/icinga2.conf file. You need to comment out the line include_recursive "conf.d".
sudo vi /etc/icinga2/icinga2.conf
...
//include_recursive "conf.d"
...
Verify config to ensure that everything is formatted correctly.
sudo icinga2 daemon -C
Si teniu problemes amb els permisos, és probable que l'element sigui propietat de root:root. Chow to icinga:icingaper resoldre.
sudo chown -R icinga:icinga /etc/icinga2/
Hi ha altres problemes amb les configuracions, generalment la informació que es dóna a partir de la sortida de l' sudo icinga2 daemon -Cordre serà prou detallada per localitzar-les. Abordar tots els problemes potencials que sorgeixin queda fora de l'abast d'aquesta guia.
Si la verificació té èxit, seguiu endavant i torneu a carregar el servei:
sudo service icinga2 restart
Haureu de donar icingapermisos sudo a l' usuari perquè les ordres es puguin executar. Aquests permisos sudo es restringiran al directori de connectors específic. Això només es pot posar al final del fitxer.
sudo vi /etc/sudoers
...
Defaults:icinga !requiretty
icinga ALL=(ALL) NOPASSWD: /usr/lib64/nagios/plugins/
Ara la configuració del client s'ha acabat oficialment. No hauríeu de fer més modificacions, qualsevol comprovació del servei es configurarà al mestre i es propagarà al client. Tanmateix, haureu d'instal·lar els complements addicionals que necessiteu. Els complements també es poden escriure amb Python, Perl, BASH, PHP i altres llenguatges de script.
Pas 7: afegiu el client a la configuració mestra
Haureu de tornar al mestre per configurar el client perquè es pugui connectar. Hi ha uns quants passos que caldrà fer:
- Afegeix la configuració de l'amfitrió a
repository.d.
- Afegiu l'amfitrió a la zona com a punt final.
- Configureu qualsevol comprovació per al client. Això està una mica fora de l'abast d'aquesta guia, només donaré una explicació bàsica dels passos que s'hi fan.
La configuració de l'amfitrió s'introduirà al /etc/icinga2/repository.d/hosts/icinga2client.example.com.conffitxer.
sudo vi /etc/icinga2/repository.d/hosts/icinga2client.example.com.conf
object Host "icinga2client.example.com" {
import "satellite-host"
address = "$icinga2clientIP"
vars.os = "Linux"
}
sudo chown icinga:icinga /etc/icinga2/repository.d/hosts/icinga2client.example.com.conf
Ara l'amfitrió existeix a la configuració del client, però s'ha de posar en una zona. Aquesta zona estarà a la /etc/icinga2/repository.d/zonescarpeta, amb el mateix nom que el nom de la zona per facilitar-ne el seguiment.
sudo vi /etc/icinga2/repository.d/zones/clientZone.conf
object Zone "clientZone" {
endpoints = [ "icinga2client.example.com" ]
parent = "icinga2master.example.com"
}
A continuació, heu d'afegir la global-templateszona.
sudo vi /etc/icinga2/repository.d/zones/global-templates.conf
object Zone "global-templates" {
global = true
}
Finalment, afegiu el punt final del client perquè la matriu de punts finals "clientZone" s'ompli quan s'executi.
sudo vi /etc/icinga2/repository.d/endpoints/icinga2client.example.com.conf
#Change values to match the host you're adding
object Endpoint "icinga2client.example.com" {
host = "$icinga2clientIP"
}
Per assegurar-vos que no hi ha problemes de permisos, aneu endavant i torneu a canviar el propietari/grup.
sudo chown -R icinga:icinga /etc/icinga2
Verifiqueu els canvis de configuració per assegurar-vos que no hi hagi més problemes.
sudo icinga2 daemon -C
Si la verificació té èxit, continueu amb la recàrrega.
sudo service icinga2 restart
Si visiteu el vostre lloc web d'Icinga2, veureu que el servidor esdevé accessible.
Pas 8: ordres i comprovacions personalitzades
És possible que trobeu errors sobre "ordre no trobat" o "comprovació no definida". Aquí és on entra en joc la zona de plantilles globals. Haureu de copiar la configuració en /etc/icinga2/conf.d/fitxers i posar-los en /etc/icinga2/zones.d/global-templates/fitxers. Per exemple, per crear una ordre "check_software", hauríeu de fer el següent.
sudo mkdir /etc/icinga2/zones.d/global-templates
sudo vi /etc/icinga2/zones.d/global-templates/commands.conf
object CheckCommand "check_software" {
import "plugin-check-command"
command = [ "/usr/bin/sudo", PluginDir + "/software_service_check.sh" ]
}
El software_service_check.shfitxer haurà d'existir a la /usr/lib64/nagios/pluginscarpeta del client .
A continuació, afegiu la comprovació del servei al /etc/icinga2/repository.d/hosts/services.conffitxer.
sudo vi /etc/icinga2/repository.d/hosts/services/services.conf
apply Service "Check Software Service" {
import "mail-service"
check_command = "check_software" # This check command is the same name as the one you defined in global-templates/commands.conf
assign where host.vars.client_endpoint # This will apply to every client server. If you need it to be more restrictive, you should look into custom variables
}
Haureu de tornar a canviar els permisos.
sudo chown -R icinga:icinga /etc/icinga2
A continuació, torneu a verificar la configuració.
sudo icinga2 daemon -C
Finalment, si té èxit, torneu a carregar:
sudo service icinga2 restart
Felicitats! Ara feu servir Icinga2 en un model de client mestre i ara podeu evitar haver d'utilitzar les comprovacions NRPE insegures!