Előfeltételek
1. lépés: Frissítse a rendszert
2. lépés: Telepítse a szükséges csomagokat
3. lépés: Állítsa be az adatbázist
4. lépés: Inicializálja a mestert
5. lépés: Inicializálja az ügyfelet
6. lépés: Konfigurálja a klienst
7. lépés: Ügyfél hozzáadása a fő konfigurációhoz
8. lépés: Egyéni parancsok és ellenőrzések
Az Icinga2 egy hatékony felügyeleti rendszer, és mester-kliens modellben használva helyettesítheti az NRPE-alapú felügyeleti ellenőrzések szükségességét. A fő-kliens modell több okból is biztonságosabb . Lehetővé teszi továbbá az elosztottabb megfigyelést azáltal, hogy lehetővé teszi az ellenőrzések módosítását az egyik kiszolgálón, és továbbítja a többire. Ezenkívül egy központi helyet biztosít a változtatásokhoz.
Például: Tegyük fel, hogy 4 különböző terheléselosztású webszerverrel rendelkezik. Ha tudja, hogy terhelési kiugrás várható (esetleg kiárusítás vagy valami, amihez sok tevékenységet vár), érdemes lehet növelni azt a szintet, amelyen a magas CPU-használat figyelmezteti a rendszeradminisztrátorokat. Ha NRPE-ellenőrzéseket használ, minden kiszolgálóra fel kell lépnie, és mindegyiken módosítania kell a /etc/nrpe.d/common_commands.cfgdokumentumot. A fő-kliens modellben egyszerűen módosíthatja a gazdagép definícióit a /etc/icinga2/repository.d/hosts/mappában, majd újratöltheti az Icingát. A csekkek minden szerverre eljutnak, és automatikusan felveszik őket. A /etc/icinga2/repository.d/services/fájlok módosításával nagyon egyszerűen hozzáadhat ellenőrzéseket , amelyek automatikusan terjednek és felismerhetők lesznek, amíg a beépülő modulok léteznek az ügyfélkiszolgálókon.
Előfeltételek
- Az Icinga2 és Icingaweb2 már telepített és konfigurált ( utasítások ) nevű kiszolgálópéldánya
icinga2master.example.com.
- Egy friss Vultr CentOS 6 vagy 7 kiszolgálópéldány, amelyet figyelni szeretne a névvel
icinga2client.example.com.
- Sudo hozzáférés.
Az útmutató egy része tükrözi a fent felsorolt telepítési utasításokat, de ezt a kliens gépen kell megtenni, nem a kiszolgáló gépen.
1. lépés: Frissítse a rendszert
Az Icinga csomagok telepítéséhez adja hozzá az „ICINGA” tárat az ügyfélrendszerhez.
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
2. lépés: Telepítse a szükséges csomagokat
Telepítse a szükséges csomagokat.
# 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
A CentOS 7 a MariaDB-t használja a MySQL helyett, így a szükséges csomagok kissé eltérnek. Indítsa el a szolgáltatásokat, és állítsa be őket a rendszerindításkor.
sudo chkconfig icinga2 on
sudo service icinga2 start
Állítsa be a MySQL szolgáltatást, hogy elinduljon rendszerindításkor, és indítsa el most, hogy biztonságossá tegyük.
# CentOS 6
sudo chkconfig mysqld on
sudo service mysqld start
#CentOS 7
sudo systemctl enable mariadb.service
sudo systemctl start mariadb.service
Biztosítsa a MySQL/MariaDB telepítést. A CentOS 6 és 7 is ugyanazt a parancsot használja.
sudo mysql_secure_installation
A folyamat során válaszoljon az alábbi kérdésekre:
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
Jegyezze fel, $newRootPasswordhogy többször is szüksége lesz rá, és fájdalmas az alaphelyzetbe állítás.
3. lépés: Állítsa be az adatbázist
Létre kell hoznia a icingafelhasználónevet, és importálnia kell a sémát az adatbázisba. Ez ugyanúgy történik a CentOS 6 és 7 rendszeren.
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
Ezután importálja a sémát az imént létrehozott adatbázisba.
sudo mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql
A fenti parancs $newRootPasswordsorán használt MySQL/MariaDB jelszót kell megadnia mysql_secure_installation, nem az $someIcingaPasswordimént létrehozott jelszót – a későbbiekben használatos.
Engedélyezze az ido(adatbázis) modult.
sudo icinga2 feature enable ido-mysql
Az /etc/icinga2/features-enabled/ido-mysql.confadatbázis információinak hozzáadásához módosítania kell a fájlt. Ezt a következő paranccsal teheti meg.
sudo vi /etc/icinga2/features-enabled/ido-mysql.conf
Ebben a fájlban keresse meg a megjegyzésekkel ellátott sorokat (kezdje a jellel //).
//user = "icinga"
//password = "icinga"
//host = "localhost"
//database = "icinga"
...és szerkessze őket az imént létrehozott felhasználó/jelszó használatával.
user = "icinga"
password = "$someIcingaPassword"
host = "localhost"
database = "icinga"
Ügyeljen arra, hogy a kezdeti két perjel eltávolításával törölje a sorok megjegyzéseit.
Ezután indítsa újra a szolgáltatást a módosítások elfogadásához.
sudo service icinga2 restart
Hozzá kell adnia egy kapcsolatot az ügyfélkiszolgáló és a már konfigurált Icinga2 mester között. Ezt meg kell tennie a Firewall használatával a CentOS 7 rendszeren, vagy az IPTables használatával a CentOS 6 vagy 7 rendszeren.
# 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
Most szerkessze a hosts fájlt, és adja hozzá a mestert helyi tartománynévként.
sudo vi /etc/hosts
...
$masterIP icinga2master icinga2master.example.com
4. lépés: Inicializálja a mestert
Ezt a lépést az Icinga2 masteren kell elvégezni. Inicializálnia kell főként, majd létre kell hoznia egy tanúsítvány-aláírási kérelmet, amelyet az ügyfél a kommunikációhoz fog használni.
sudo icinga2 node wizard
Ez elindítja a csomópont varázslót, amely számos kérdést tesz fel. A képernyő a következőképpen fog kinézni, és az Ön által adott válaszok listája.
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!
Ezután indítsa újra az Icinga2-t a módosítások elfogadásához.
sudo service icinga2 restart
Most, hogy ez egy mester, használhatja a tanúsítvány-aláíró kérés karakterláncának létrehozására.
sudo icinga2 pki ticket --cn icinga2client.example.com
Kapsz egy kis húrt $pkiString. Másolja ki ezt a karakterláncot, mert szüksége lesz rá a kliensben.
5. lépés: Inicializálja az ügyfelet
Futtassa a csomópont varázslót a tanúsítványok generálásához és a főhöz való csatlakozáshoz.
sudo icinga2 node wizard
A fentihez hasonló oldallal fog megjelenni. Ez az oldal az alábbiakban látható a válaszokkal együtt.
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!
Folytassa, és indítsa újra az Icinga2-t a módosítások átvételéhez.
sudo icinga2 restart
Lehet, hogy ez már megtörtént, de gondoskodnia kell arról, hogy a parancs- és API-funkciók engedélyezve legyenek.
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
If you get permissions problems, it's likely because the item is owned by root:root. Chown to icinga:icinga to resolve.
sudo chown -R icinga:icinga /etc/icinga2/
There are other issues with the configs, generally the information given from the output of the sudo icinga2 daemon -C command will be verbose enough to track them down. Addressing every potential issue that arises is outside the scope of this guide.
If the verification succeeds, go ahead and reload the service:
sudo service icinga2 restart
You'll need to give the icinga user sudo permissions so that the commands can be run. These sudo permissions will be restricted to the specific plugin directory. This can just be put at the end of the file.
sudo vi /etc/sudoers
...
Defaults:icinga !requiretty
icinga ALL=(ALL) NOPASSWD: /usr/lib64/nagios/plugins/
Most a kliens konfigurációja hivatalosan is befejeződött. Nem kell további módosításokat végrehajtania, az esetleges szolgáltatás-ellenőrzések a mesteren lesznek konfigurálva, és eljutnak a kliensig. Telepítenie kell azonban minden további beépülő modult, amelyre szüksége lehet. A beépülő modulok python, perl, BASH, PHP és más szkriptnyelvek használatával is írhatók.
7. lépés: Ügyfél hozzáadása a fő konfigurációhoz
Vissza kell térnie a mesterhez, hogy beállítsa a klienst, hogy csatlakoztatható legyen. Néhány lépést meg kell tenni:
- Adja hozzá a gazdagép konfigurációját a következőhöz
repository.d.
- Gazda hozzáadása a zónához végpontként.
- Konfigurálja az ellenőrzéseket az ügyfél számára. Ez kissé kívül esik az útmutató hatókörén, csak egy alapvető magyarázatot adok az érintett lépésekre.
A gazdagép konfigurációja bekerül a /etc/icinga2/repository.d/hosts/icinga2client.example.com.conffájlba.
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
A gazdagép most már létezik a kliens konfigurációjában, de zónába kell helyezni. Ez a zóna a /etc/icinga2/repository.d/zonesmappában lesz, ugyanazzal a névvel, mint a zóna neve, hogy könnyebb legyen nyomon követni.
sudo vi /etc/icinga2/repository.d/zones/clientZone.conf
object Zone "clientZone" {
endpoints = [ "icinga2client.example.com" ]
parent = "icinga2master.example.com"
}
Ezután hozzá kell adnia a global-templateszónát.
sudo vi /etc/icinga2/repository.d/zones/global-templates.conf
object Zone "global-templates" {
global = true
}
Végül adja hozzá az ügyfélvégpontot, hogy a "clientZone" végpontok tömbje futás közben fel legyen töltve.
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"
}
Annak érdekében, hogy megbizonyosodjon arról, hogy nincsenek engedélyekkel kapcsolatos problémák, folytassa újra a tulajdonos/csoport módosításával.
sudo chown -R icinga:icinga /etc/icinga2
Ellenőrizze a konfigurációs módosításokat, hogy megbizonyosodjon arról, hogy nincs több probléma.
sudo icinga2 daemon -C
Ha az ellenőrzés sikeres, folytassa az újratöltéssel.
sudo service icinga2 restart
Ha felkeresi Icinga2 webhelyét, látni fogja, hogy a szerver elérhetővé válik.
8. lépés: Egyéni parancsok és ellenőrzések
Előfordulhat, hogy a "parancs nem található" vagy az "ellenőrzés nincs megadva" hibaüzenetet kaphat. Itt jön képbe a globális sablonok zóna. A konfigurációt /etc/icinga2/conf.d/fájlokba kell másolnia, és fájlokba kell helyeznie /etc/icinga2/zones.d/global-templates/. Például egy "check_software" parancs létrehozásához a következőket kell tennie.
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" ]
}
A software_service_check.shfájlnak léteznie kell /usr/lib64/nagios/pluginsa kliens mappájában .
Ezután adja hozzá a szolgáltatás ellenőrzését a /etc/icinga2/repository.d/hosts/services.conffájlhoz.
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
}
Ismét módosítania kell az engedélyeket.
sudo chown -R icinga:icinga /etc/icinga2
Ezután ellenőrizze újra a konfigurációt.
sudo icinga2 daemon -C
Végül, ha sikerült, töltse be újra:
sudo service icinga2 restart
Gratulálunk! Jelenleg az Icinga2-t fő-kliens modellben használja, és elkerülheti a nem biztonságos NRPE-ellenőrzések használatát!