Ero sivun ”Icinga2” versioiden välillä
(108 välissä olevaa versiota samalta käyttäjältä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
− | Icinga2 on Nagios | + | Icinga2 on [[Nagios4|Nagioksesta]] forkattu versio . Icinga2 sisältää paljon uusia ominaisuuksia ja paremman webympäristön ja valmiin mahdollisuus esimerkiksi Graphite pluginiin. Icinga käyttää samoja plugineita kuin nagios joten tällä voi monitoroida samoja palveluja kuin Nagioksella. Ohjeita joihinkin muokattuihin [[Nagios-plugin|plugineihin]]. |
− | + | Järjestelmän vaatimukset täältä: https://wiki.icinga.org/display/howtos/System+Requirements | |
− | Asenna vaaditut paketit | + | Icinga vaatii lisäksi verkosta portin 80 (HTTP), 443 (HTTPS) ja 5665 (Icinga2) että ovat auki palomuurista Icingaan. |
+ | |||
+ | Icinga2 mahdollistaa myös suuremman jakeluympäristön, masterin, satelite ja clientin. | ||
+ | |||
+ | [[File:icinga2_distributed_roles.png|400px]] | ||
+ | |||
+ | == Masterin asennus ja konfigurointi == | ||
+ | |||
+ | Asenna vaaditut paketit. MySQL:n tilalla voit käyttää myös [[MariaDB]]:tä. | ||
+ | |||
+ | <syntaxhighlight lang="shell"> | ||
+ | sudo apt-get install apache2 libapache2-mod-php php5 php5-json php5-gd php5-imagick php5-mysql php5-intl mysql-server mysql-client mailutils | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Paketit Ubuntu 16.04 ja uudemmille käyttöjärjestelmille | ||
− | sudo apt-get install apache2 mysql-server mysql-client | + | sudo apt-get install apache2 libapache2-mod-php php7.0 php-json php7.0-gd php-imagick php7.0-mysql php7.0-intl mysql-server mysql-client mailutils |
Lisää APT key | Lisää APT key | ||
Rivi 11: | Rivi 25: | ||
wget -O - http://packages.icinga.org/icinga.key | apt-key add - | wget -O - http://packages.icinga.org/icinga.key | apt-key add - | ||
− | Lisää | + | Lisää source.listiin /etc/apt/source.list): |
− | + | Ubuntu: http://packages.icinga.org/ubuntu/ | |
− | |||
− | |||
− | |||
− | + | Debian: http://packages.icinga.org/debian/ | |
− | + | Asenna sitten Icinga paketti | |
− | |||
− | |||
− | |||
− | aptitude update | + | sudo aptitude update |
+ | sudo aptitude install icinga2 icingaweb2 | ||
− | Asenna IDO MySQL moduuli | + | Asenna IDO MySQL moduuli ja ota moduuli käyttöön |
− | apt-get install icinga2-ido-mysql | + | sudo apt-get install icinga2-ido-mysql |
icinga2 feature enable ido-mysql | icinga2 feature enable ido-mysql | ||
Rivi 37: | Rivi 46: | ||
service icinga2 restart | service icinga2 restart | ||
− | Muuta oikeudet /etc/icingaweb2 hakemistoon | + | Muuta oikeudet /etc/icingaweb2 hakemistoon (tämä on bugi asennusohjelmassa mutta tällä fiksaa sen) |
chown www-data:www-data -R /etc/icingaweb2 | chown www-data:www-data -R /etc/icingaweb2 | ||
Rivi 46: | Rivi 55: | ||
addgroup --system icingaweb2 | addgroup --system icingaweb2 | ||
+ | |||
+ | === MySQL konfigurointi === | ||
+ | |||
+ | Luo tietokanta icinga2:lle seuraavasti: | ||
+ | |||
+ | * Tietokanta icingaweb2:lle | ||
+ | * Tietokanta icinga2ido:lle. | ||
+ | |||
+ | Kirjaudu tietokantaan ja luo tietokanta icingaweb2:lle ja icinga2:lle sekä icinga2ido:lle. | ||
+ | <pre> | ||
+ | mysql -u root -p | ||
+ | CREATE DATABASE icingaweb2; | ||
+ | CREATE DATABASE icinga2ido; | ||
+ | CREATE USER 'icinga2'@'localhost' IDENTIFIED BY 'password'; | ||
+ | GRANT ALL PRIVILEGES ON icingaweb2.* TO ‘icinga2’@'localhost’; | ||
+ | GRANT ALL PRIVILEGES ON icinga2ido.* TO 'icinga2'@'localhost'; | ||
+ | FLUSH PRIVILEGES; | ||
+ | exit; | ||
+ | </pre> | ||
+ | |||
+ | Importtaa tietokanta icinga2 ido:lle tai käytä dpkg-reconfigure icinga2-ido-mysql | ||
+ | |||
+ | mysql -u root -p icinga2 < /usr/share/icinga2-ido-mysql/schema/mysql.sql | ||
+ | |||
+ | === PHP === | ||
+ | |||
+ | Konfiguroi PHP:lla aikavyöhyke muuttamalla /etc/php5/apache2/php.ini tai /etc/php/7.0/apache2/php.ini tiedostosta: | ||
+ | |||
+ | date.timezone = "Europe/Helsinki" | ||
+ | |||
+ | Vaihtoehtoisesti voit lisätä sen suoraan Apachen virtualhost konfiguraatioon | ||
+ | |||
+ | <pre> | ||
+ | <IfModule php7_module> | ||
+ | php_admin_value date.timezone = "Europe/Helsinki" | ||
+ | </IfModule> | ||
+ | <IfModule php5_module> | ||
+ | php_admin_value date.timezone = "Europe/Helsinki" | ||
+ | </IfModule> | ||
+ | </pre> | ||
+ | |||
+ | === Webinstaller === | ||
Jatka asennusta webympäristössä, http://palvelimen-ip/icingaweb2 | Jatka asennusta webympäristössä, http://palvelimen-ip/icingaweb2 | ||
+ | |||
+ | Ensiksi sinun pitää luoda tokeni, luo se terminaalissa komennolla | ||
+ | |||
+ | sudo icingacli setup token create | ||
+ | |||
+ | ja sitten kopioi se webbiin. | ||
+ | |||
+ | Seuraavalla sivulla lista virheistä joita pitäisi fiksaiolla jos ei ole vielä tehty. Varmista että paketit on asennettu. | ||
+ | |||
+ | Tämän jälkeen tulee tietokanta icinga2:lle. Kirjoita tietokantapalvelimesi asetukset. Vahvista asetukset ja valitse NEXT. | ||
+ | |||
+ | === Apache2 (valinnainen) === | ||
+ | |||
+ | Apache2:n konfigurointi niin että icingaweb2 vastaa suoraan DocumentRoottina. Tässä esimerkki Virtual Hosti jonka voit tehdä /etc/apache2/sites-available hakemiston alle ja ottaa käyttöön | ||
+ | |||
+ | <syntaxhighlight lang="apache"> | ||
+ | <Virtualhost *:80> | ||
+ | ServerAdmin [email protected] | ||
+ | ServerName icinga.example.org | ||
+ | |||
+ | DocumentRoot /usr/share/icingaweb2/public | ||
+ | |||
+ | <Directory "/usr/share/icingaweb2/public"> | ||
+ | Options SymLinksIfOwnerMatch | ||
+ | AllowOverride None | ||
+ | |||
+ | <IfModule mod_authz_core.c> | ||
+ | # Apache 2.4 | ||
+ | <RequireAll> | ||
+ | Require all granted | ||
+ | </RequireAll> | ||
+ | </IfModule> | ||
+ | |||
+ | <IfModule !mod_authz_core.c> | ||
+ | # Apache 2.2 | ||
+ | Order allow,deny | ||
+ | Allow from all | ||
+ | </IfModule> | ||
+ | |||
+ | SetEnv ICINGAWEB_CONFIGDIR "/etc/icingaweb2" | ||
+ | |||
+ | EnableSendfile Off | ||
+ | |||
+ | <IfModule mod_rewrite.c> | ||
+ | RewriteEngine on | ||
+ | RewriteBase / | ||
+ | RewriteCond %{REQUEST_FILENAME} -s [OR] | ||
+ | RewriteCond %{REQUEST_FILENAME} -l [OR] | ||
+ | RewriteCond %{REQUEST_FILENAME} -d | ||
+ | RewriteRule ^.*$ - [NC,L] | ||
+ | RewriteRule ^.*$ index.php [NC,L] | ||
+ | </IfModule> | ||
+ | |||
+ | <IfModule !mod_rewrite.c> | ||
+ | DirectoryIndex error_norewrite.html | ||
+ | ErrorDocument 404 /error_norewrite.html | ||
+ | </IfModule> | ||
+ | </Directory> | ||
+ | </Virtualhost> | ||
+ | </syntaxhighlight> | ||
== Konfigurointi == | == Konfigurointi == | ||
− | === Linux Client konfigurointi === | + | === Rakenne === |
+ | |||
+ | Tiedostojen sijainnit palvelimella kun asennetaan Debian paketista. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Sijainti !! Selitys | ||
+ | |- | ||
+ | | /etc/icinga2 || Icinga2 konfigurointi tiedostot | ||
+ | |- | ||
+ | | /etc/init.d/icinga2|| Icinga2 init scripti | ||
+ | |- | ||
+ | | /usr/sbin/icinga2 || Icinga2 binäärit | ||
+ | |- | ||
+ | | /usr/share/doc/icinga2 || Icinga2 dokumentaatio | ||
+ | |- | ||
+ | | /var/run/icinga2 || PDI tiedosto | ||
+ | |- | ||
+ | |/var/lib/icinga2 || Icinga2 state tiedosto, klusteri lokit, paikallinen CA ja konfigurointitiedostot | ||
+ | |- | ||
+ | |/var/log/icinga2 || Icinga2 lokit | ||
+ | |- | ||
+ | |/usr/lib/nagios/plugins || Pluginien sijainti | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | === Masteri monitoroinnin konfigurointi === | ||
+ | |||
+ | Konfiguroi masteri ennen clienttien konfigurointia. Tämä luo juuri sertifikaatit masterille. | ||
+ | |||
+ | Käynnistä konfigurointi wizardi | ||
+ | |||
+ | icinga2 node wizard | ||
+ | |||
+ | Toimi asennus wizardin mukaisesti | ||
+ | |||
+ | <pre> | ||
+ | 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 specifiy the common name (CN) [icinga.example.org]: | ||
+ | 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: Initializing serial file in '/var/lib/icinga2/ca/serial.txt'. | ||
+ | information/cli: Generating new CSR in '/etc/icinga2/pki/icinga.example.org.csr'. | ||
+ | information/base: Writing private key to '/etc/icinga2/pki/icinga.example.org.key'. | ||
+ | information/base: Writing certificate signing request to '/etc/icinga2/pki/icinga.example.org.csr'. | ||
+ | information/cli: Signing CSR with CA and writing certificate to '/etc/icinga2/pki/icinga.example.org.crt'. | ||
+ | information/cli: Copying CA certificate to '/etc/icinga2/pki/ca.crt'. | ||
+ | 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 []: | ||
+ | Bind Port []: | ||
+ | information/cli: Enabling the APIlistener feature. | ||
+ | Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect. | ||
+ | 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'. | ||
+ | Please edit the constants.conf file '/etc/icinga2/constants.conf' and set a secure 'TicketSalt' constant. | ||
+ | Done. | ||
+ | |||
+ | Now restart your Icinga 2 daemon to finish the installation! | ||
+ | </pre> | ||
+ | |||
+ | Käynnistä icinga2 uudelleen | ||
+ | |||
+ | sudo service icinga2 restart | ||
+ | |||
+ | |||
+ | === Ilmoitusasetukset === | ||
+ | |||
+ | Icinga tukee Nagioksen tavoin sähköposti-ilmoituksia ja voit konfiguroida kohde osoitteen. Sähköposti-ilmoitukset lähetetään mailutils paketin avulla, varmistathan että sinulla on tämä asennettu. | ||
+ | |||
+ | sudo nano /etc/icinga2/conf.d/users.conf | ||
+ | |||
+ | Muuta tiedostosta sähköposti-osoite vastaamaan omaasi. | ||
+ | |||
+ | <pre> | ||
+ | object User "icingaadmin" { | ||
+ | import "generic-user" | ||
+ | |||
+ | display_name = "Icinga 2 Admin" | ||
+ | groups = [ "icingaadmins" ] | ||
+ | |||
+ | email = "root@localhost" | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Muutosten jälkeen käynnistä Icinga2 uudelleen | ||
+ | |||
+ | |||
+ | ==== Poista käytöstä ilmoitusten toisto ==== | ||
+ | |||
+ | Muokkaa /etc/icinga2/conf.d/notifications.conf tiedostosta interval riviä. | ||
+ | |||
+ | interval = 0 | ||
+ | |||
+ | Interval = 0 tarkoittaa ettei notifikaatioita toisteta. | ||
+ | |||
+ | Toistaminen tapahtuu määrittämällä interval arvoksi aikaväli. Esimerkiksi 5min välein | ||
+ | |||
+ | interval = 5m | ||
+ | |||
+ | |||
+ | |||
+ | ==== Poista käytöstä ping ilmoitukset (optional) ==== | ||
+ | |||
+ | Poista turhat ping ilmoitukset ettei tartte meiliboxia kokoajan tyhjentää turhista ilmoituksista | ||
+ | |||
+ | Avaa /etc/icinga2/conf.d/notifications.conf tiedosto ja lisää "apply Notification "mail-import" to Service" sulkeiden sisälle 'assign where host.vars.notification.mail' jälkeen: | ||
+ | |||
+ | ignore where match("*ping*", service.name) | ||
+ | |||
+ | === Käyttäjähallinta ja oikeuksien hallinta Icingassa === | ||
+ | |||
+ | Tässä esimerkissä tehdään käyttäjä "asiakas" jolle sallitaan pääsy vain hänen palvelimille. Jokainen palvelin on merkittävä siis hänelle että näkee icingaweb2:ssa. | ||
+ | |||
+ | Luo HostGroup käyttäjälle esimerkiksi "asiakas". | ||
+ | |||
+ | sudo nano /ect/icinga2/conf.d/groups.conf | ||
+ | |||
+ | |||
+ | Lisää tiedostoon: | ||
+ | |||
+ | <pre> | ||
+ | object HostGroup "asiakas" { | ||
+ | display_name = "Asiakkaan laitteet" | ||
+ | |||
+ | assign where host.vars.owner == "asiakas" | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Lisää sitten jokaiseen "asiakkaan" omistamalle hostiin parametri | ||
+ | |||
+ | vars.owner = "asiakas" | ||
+ | |||
+ | Mene sitten graafiseen icingawebbiin Configuration -> Authentication | ||
+ | |||
+ | Luo käyttäjätili "asiakas" ja liitä se "asiakas" ryhmään. (Luo siis ryhmäkin) | ||
+ | |||
+ | Luo Role nimellä "asiakas" ja määritä siihen rooliin "monitoring/filter/objects" kohtaan | ||
+ | |||
+ | hostgroup_name=asiakas | ||
+ | |||
+ | Tallenna, kirjaudu ulos, käynnistä icinga2 uudelleen ja testaa toimivuus | ||
+ | |||
+ | === Custom Pluginien lisääminen === | ||
+ | |||
+ | Lataa pluginit aina clientin ja masterin nagios-plugin hakemistoon ensin. Oletuksena hakemiston sijainti on /usr/lib/nagios/plugins . | ||
+ | |||
+ | Lisää /etc/icinga2/conf/commands.conf tiedostoon rivit joka määrittää pluginin. Alla esimerkkin' check_diskstat plugin. Lisää tämä alla oleva masterille sekä clienteille. | ||
+ | |||
+ | <pre> | ||
+ | object CheckCommand "check_diskstat" { | ||
+ | import "plugin-check-command" | ||
+ | command = [ PluginDir + "/check_diskstat" ] //constants.conf -> const PluginDir | ||
+ | arguments = { | ||
+ | "-d" = "$diskstat_name$" | ||
+ | "-W" = "$diskstat_warn$" | ||
+ | "-C" = "$diskstat_crit$" | ||
+ | |||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | ja tämän jälkeen /etc/icinga2/conf/services.conf tiedostoon miten tämä jaetaan hosteille. Tässä esimerkissä 'assing' kaikeille etä hosteille sekä niissä tulee olla Linux. Tämä määritetään vain masterille. | ||
+ | |||
+ | <pre> | ||
+ | |||
+ | apply Service "diskstat" { | ||
+ | import "generic-service" | ||
+ | check_command = "check_diskstat" | ||
+ | command_endpoint = host.vars.remote_client | ||
+ | |||
+ | assign where host.vars.remote_client && host.vars.os == "Linux" | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Varmista että kaikki on nyt oikein ja käynnistä Icinga2 uudelleen | ||
+ | |||
+ | sudo service icinga2 restart | ||
+ | |||
+ | Debug nyt jos tuli virhettä tai ei näy oikein Icingassa. | ||
+ | |||
+ | == Client asennus ja konfigurointi == | ||
+ | |||
+ | Tämä ohje yksinkertaisuudessa ohjeistaa miten liitetään icinga2 masteriin. | ||
+ | |||
+ | [[File:icinga2_distributed_scenarios_master_clients.png|400px]] | ||
+ | |||
+ | === Linux === | ||
+ | |||
* master on icinga master palvelin jonne data tallennetaan. Tätä osoite on icinga.example.org ja IP: 172.16.1.10 | * master on icinga master palvelin jonne data tallennetaan. Tätä osoite on icinga.example.org ja IP: 172.16.1.10 | ||
* clienttinä on client1.example.org ja IP: 172.16.1.9 | * clienttinä on client1.example.org ja IP: 172.16.1.9 | ||
− | + | Mene clientille | |
+ | |||
+ | Lisää APT key | ||
+ | |||
+ | wget -O - http://packages.icinga.org/icinga.key | sudo apt-key add - | ||
+ | |||
− | + | Lisää source.listiin: | |
− | + | Ubuntu: http://packages.icinga.org/ubuntu/ | |
− | + | Debian: http://packages.icinga.org/debian/ | |
− | |||
− | icinga2 node wizard | + | sudo aptitude update && aptitude install icinga2 |
+ | |||
+ | Käynnistä asennusvelho | ||
+ | |||
+ | sudo icinga2 node wizard | ||
Noden asennusvelho kyselee tiettyjä asetuksia ja vastaa seuraavasti | Noden asennusvelho kyselee tiettyjä asetuksia ja vastaa seuraavasti | ||
Rivi 99: | Rivi 415: | ||
</pre> | </pre> | ||
− | Tämän jälkeen | + | Sama vaihe suoraa komentorivillä. Kopioi masterilta sertifikaatti /etc/icinga2/pki/icinga.example.org serttifikaatti /opt/icinga.crt asiakas palvelimelle. |
+ | |||
+ | icinga2 node setup --ticket XXXX --endpoint icinga.example.org --zone client_name --master_host 172.16.1.10 --listen 5665 --trustedcert /opt/icinga.crt | ||
+ | |||
+ | Tämän jälkeen lisää masterin konfiguraatioon: | ||
sudo nano /etc/icinga2/zones.conf | sudo nano /etc/icinga2/zones.conf | ||
Rivi 113: | Rivi 433: | ||
parent = NodeName | parent = NodeName | ||
} | } | ||
− | /pre> | + | </pre> |
− | Avaa lisäksi /etc/icinga2/conf.d/hosts.conf | + | Avaa lisäksi /etc/icinga2/conf.d/hosts.conf tiedosto masterista |
ja lisää konfiguraatioon | ja lisää konfiguraatioon | ||
Rivi 130: | Rivi 450: | ||
vars.remote_client = "client1.example.org" | vars.remote_client = "client1.example.org" | ||
− | /* host specific check arguments */ | + | /* host specific check arguments, optional */ |
vars.users_wgreater = 10 | vars.users_wgreater = 10 | ||
vars.users_cgreater = 20 | vars.users_cgreater = 20 | ||
Rivi 136: | Rivi 456: | ||
</pre> | </pre> | ||
− | + | Lisää service tiedostoon masterille "assign where host.vars.remote_client", katso esimerkki alla | |
sudo nano /etc/icinga2/conf.d/services.conf | sudo nano /etc/icinga2/conf.d/services.conf | ||
Rivi 156: | Rivi 476: | ||
</pre> | </pre> | ||
− | Käynnistä icinga2 uudelleen | + | Käynnistä icinga2 uudelleen, masteri ja clientti. |
sudo service icinga2 restart | sudo service icinga2 restart | ||
+ | |||
+ | === Windows === | ||
+ | |||
+ | Lisää icinga2.conf tiedostoon Windows Pluginit. Tämä includettaa /usr/share/icinga2/include/command-plugins-windows.conf tiedoston. | ||
+ | |||
+ | <pre> | ||
+ | include <windows-plugins> | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | 1. Asenna Icinga2 Windows client: http://packages.icinga.org/windows/ . Käyttäessä MSI pakettia asenna ensin päivitys Windowssille: https://support.microsoft.com/en-us/kb/2999226 | ||
+ | |||
+ | 2. Luo vastaava tiketti kuin Linuxille masterilla. | ||
+ | |||
+ | icinga2 pki ticket --cn 'windows.example.org' | ||
+ | |||
+ | 3. Windows:silla asetukset: | ||
+ | |||
+ | <pre> | ||
+ | Instance name: Windows isäntänimi | ||
+ | Setup Ticket: Tiketti jonka kopioit masterilta | ||
+ | </pre> | ||
+ | |||
+ | 4. Lisää EndPoint valitsemalla 'Add' | ||
+ | |||
+ | <pre> | ||
+ | Instance Name: masterin isäntänimi joka on sertifikaatin CN | ||
+ | Täppää "Connect to this endpoint' | ||
+ | Host: Masterin IP/Hostname | ||
+ | Port: 5665 (Default) | ||
+ | |||
+ | 5. Täppää sitten vielä | ||
+ | |||
+ | <pre> | ||
+ | Accept commands from master | ||
+ | Accept config updates from master | ||
+ | </pre> | ||
+ | |||
+ | 6. Valitse NEXT. | ||
+ | |||
+ | 7. Vahvista sertifikaatti. Subject pitää olla sama kuin EndPointin Instance Name. Muuten tulee virheitä. | ||
+ | |||
+ | 8. Määritä masterille nyt zone ja host asetukset ja käynnistä masteri uudelleen. | ||
+ | |||
+ | Lähde ohjeesta poiketen sinun ei tarvitse asentaa NSClient++ sillä Icinga2 client osaa nuo kaiken oletuksena. Voit toki käyttää tätäkin halutessasi. | ||
+ | |||
+ | Lähde: http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/icinga2-client | ||
+ | |||
+ | === Monitorointi yli SSH:n === | ||
+ | |||
+ | Icingalla voit monitoroida vaihtoehtoisesti yli SSH:n jos et halua asentaa Icingan omaa clienttia asiakaspalvelimelle. | ||
+ | |||
+ | 1. Sinun tulee ensin asentaa [[Ssh#Autentikointi_avainpareilla|SSH avaimet]] oikein. Eli privaattivain masterille ja public avain asiakaspalvelimelle niin että pystyt kirjautumaan [email protected] testaamalla ilman mitään virheitä. | ||
+ | |||
+ | |||
+ | 2. Testaa ajamalla käsin komennot sieltä mistä haluat monitoroida. Korvaa server.local palvelimesi osoitteella ja -l käyttäjänimelläsi. Tämä pitäisi tulostaa suoraan prosessien määrän kuten ajaisit paikallisella koneella. | ||
+ | |||
+ | /usr/lib/nagios/plugins/check_by_ssh -H server.local -C "/usr/lib/nagios/plugins/check_procs " -l username | ||
+ | |||
+ | 3. Konfiguroi masterille service | ||
+ | |||
+ | <pre> | ||
+ | apply Service for (check_by_ssh => config in host.vars.by_ssh) { | ||
+ | import "generic-service" | ||
+ | check_command = "by_ssh" | ||
+ | |||
+ | vars += config | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Lisää tämä vielä masterille hosts.conf | ||
+ | |||
+ | <pre> | ||
+ | vars.by_ssh["procs"] = { | ||
+ | by_ssh_command = "/usr/lib/nagios/plugins/check_procs" | ||
+ | by_ssh_logname = "username" | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | 4. Käynnistä icinga2 uudelleen ja testaa | ||
== Lisämoduulit == | == Lisämoduulit == | ||
Rivi 166: | Rivi 566: | ||
Asenna seuraavat moduulit | Asenna seuraavat moduulit | ||
− | sudo apt-get install python-django python- | + | sudo apt-get update |
+ | sudo apt-get install graphite-web graphite-carbon | ||
+ | |||
+ | Asenna MySQL | ||
+ | |||
+ | sudo apt-get install mysql-server mysql-client | ||
+ | |||
+ | Asenna Python paketteja | ||
+ | |||
+ | sudo apt-get install python-django | ||
+ | sudo apt-get install python-whisper python-cairo python-django-tagging | ||
+ | sudo apt install python-pip | ||
+ | sudo pip install PyMySQL | ||
+ | |||
+ | Luo MySQL:ään | ||
+ | |||
+ | * Tietokanta graphite:lle täysillä oikeuksilla | ||
+ | * Käyttäjätunnus ja salasana | ||
+ | |||
+ | Konfiguroi Graphite Web sovellus | ||
+ | |||
+ | Avaa Graphite web sovelluksen konfigurointi tiedosto | ||
+ | |||
+ | sudo nano /etc/graphite/local_settings.py | ||
+ | |||
+ | Luo secret_key jota käytetään hashinä. Poista kommentti ja määritä siihen pitkä hash. Muuta hash. | ||
+ | |||
+ | SECRET_KEY = '<changethis>' | ||
+ | |||
+ | Seuraavaksi määritetään aikavyöhyke oikein. Tämä on tärkeä olla oikein koska sitä käytetään grafiikan ajoituksissa | ||
+ | |||
+ | TIME_ZONE = 'Europe/Helsinki' | ||
+ | |||
+ | Lisäksi haluamme konfiguroida todennuksen tallentaakseen graphic dataa. Kun synkronoidaan tietokantaan, luomme käyttäjän mutta täytyy ottaa käyttöön todennus | ||
+ | |||
+ | USE_REMOTE_USER_AUTHENTICATION = True | ||
+ | |||
+ | Nyt on aika konfiguroida tietokanta-asetukset. | ||
+ | |||
+ | <pre> | ||
+ | DATABASES = { | ||
+ | 'default': { | ||
+ | 'NAME': 'graphite', | ||
+ | 'ENGINE': 'django.db.backends.mysql', | ||
+ | 'USER': 'graphite', | ||
+ | 'PASSWORD': 'databasepassword', | ||
+ | 'HOST': 'localhost', | ||
+ | 'PORT': '3306' | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Tallenna ja sulje. | ||
+ | |||
+ | Seuraavaksi synkronoidaan tiedot tietokantaan | ||
+ | |||
+ | sudo graphite-manage syncdb | ||
+ | |||
+ | Sinulta kysellään superkäyttäjän luomista. Luo käyttäjä jolla pääset kirjautumaan selaimella. Tällä voit tallentaa grafiikoita ja muokata näkymää. | ||
+ | |||
+ | Nyt kun tietokanta on konfiguroitu, tulee konfiguroida carbon, Graphite tallennus ohjelman | ||
+ | |||
+ | sudo nano /etc/default/graphite-carbon | ||
+ | |||
+ | Täälä on vain yksi parametri joka pitää ottaa käyttöön | ||
+ | |||
+ | CARBON_CACHE_ENABLED=true | ||
+ | |||
+ | Sulje ja tallenna. Seuraavaksi avaa Carbonin konfigurointi tiedosto | ||
+ | |||
+ | sudo nano /etc/carbon/carbon.conf | ||
+ | |||
+ | Jossa tehdään pieni muutos | ||
+ | |||
+ | ENABLE_LOGROTATION = True | ||
+ | |||
+ | Kun kaikki on valmista voit käynnistää Carbon palvelun | ||
+ | |||
+ | sudo service carbon-cache start | ||
+ | |||
+ | Web interfacea varten sinun tulee asentaa Apacheen wsgi moduulin | ||
+ | |||
+ | sudo apt-get install apache2 libapache2-mod-wsgi | ||
+ | |||
+ | Kopioi oletuskonfiguraatio | ||
+ | |||
+ | sudo cp /usr/share/graphite-web/apache2-graphite.conf /etc/apache2/sites-available | ||
+ | |||
+ | Ota se käyttöön | ||
+ | |||
+ | sudo a2ensite apache2-graphite | ||
+ | |||
+ | * Suositus konfiguroida Apacheen autentikointi graphitea varten. Graphite ei oletuksena sisällä autentikointia. Tämän voi toteuttaa helposti Apachella. | ||
+ | * /var/.graphite tiedostoon kirjaa salasanant htpasswd komennolla | ||
+ | |||
+ | <pre> | ||
+ | AuthUserFile /var/.graphite | ||
+ | AuthName "Anna kirjautumisen tiedot" | ||
+ | AuthType Basic | ||
+ | require valid-user | ||
+ | </pre> | ||
+ | |||
+ | Lataa Apache2 konfiguraatio uudelleen | ||
+ | |||
+ | sudo service apache2 reload | ||
+ | |||
+ | --- | ||
+ | |||
+ | Ota sitten käyttöön Icingassa graphite moduuli | ||
+ | |||
+ | sudo icinga2 feature enable graphite | ||
+ | |||
+ | Käynnistä Icinga uudelleen. | ||
+ | |||
+ | ==== Graphite ja Icingaweb2 moduulin asennus ja konfigurointi ==== | ||
+ | |||
+ | Lataa Icingaweb2-module-graphite moduuli | ||
+ | |||
+ | git clone https://github.com/Icinga/icingaweb2-module-graphite.git | ||
+ | |||
+ | Kopioi tämä /usr/share/icingaweb2/modules hakemiston alle. | ||
+ | |||
+ | Luo konfiguraatiolle hakemistolle ja kopioi esimerkiksi konfiguraatio | ||
+ | |||
+ | sudo mkdir -p /etc/icingaweb2/modules/graphite | ||
+ | cd icingaweb2-module-graphit | ||
+ | sudo cp -rv sample-config/icinga2/* /etc/icingaweb2/modules/graphite | ||
+ | |||
+ | Muuta oikeudet | ||
+ | |||
+ | sudo chown -R root:icingaweb2 /etc/icingaweb2/modules/graphite | ||
+ | sudo chmod -R 2755 /etc/icingaweb2/modules/graphite | ||
+ | |||
+ | Muokkaa /etc/icingaweb2/modules/graphite/config.ini tiedostossa web_uri:ksi graphite host | ||
+ | |||
+ | <pre> | ||
+ | [graphite] | ||
+ | web_url = http://my.graphite.web | ||
+ | </pre> | ||
+ | |||
+ | === Icingaweb2 Director === | ||
+ | |||
+ | Icinga2 Director on graafinen hallinta Icingalle. Tämä on aika uusi plugini icingaweb2:lle joten käytä varoen. | ||
+ | |||
+ | Huomaa! | ||
+ | * Ensinnäkin, Director ei kirjoita mitään /etc/icinga2 hakemistoon kuten olet konfiguroinut. Tänne tallennat manuaaliset konfiguraatiot ja vaatimukset että saat icinga2:n toimimaan directorin kanssa. Director käyttää siis Icinga2 API:a konfiguroidessaan. | ||
+ | |||
+ | Vaatimukset | ||
+ | |||
+ | * Icinga2 (> = 2.4.3) | ||
+ | * Icinga Web 2 (> 2.2.0) | ||
+ | * Tietokanta, [[Mysql|MySQL]] tai [[PostgreSQL]] | ||
+ | * PHP5-curl / PHP7.0-curl | ||
+ | |||
+ | |||
+ | Asennus | ||
+ | |||
+ | cd /tmp | ||
+ | git clone https://github.com/Icinga/icingaweb2-module-director.git | ||
+ | mv icingaweb2-module-director /usr/share/icingaweb2/modules/director | ||
+ | |||
+ | Luo tietokanta (esim MySQL) | ||
+ | |||
+ | <pre> | ||
+ | mysql -e "CREATE DATABASE director CHARACTER SET 'utf8'; | ||
+ | GRANT ALL ON director.* TO director@localhost IDENTIFIED BY 'some-password';" | ||
+ | </pre> | ||
+ | |||
+ | Päivittäminen, git, sekä tietokanta | ||
+ | |||
+ | cd /usr/share/icingaweb2/modules/director | ||
+ | git pull | ||
+ | icingacli director migration run --verbose | ||
+ | |||
+ | === Dashing-Icinga2 === | ||
+ | |||
+ | Dashing-icinga on näppärä dashboardi Icingalle joka sopii hyvin TV:seen näytettynä. | ||
+ | |||
+ | Projektin osoite: https://github.com/Icinga/dashing-icinga2 | ||
+ | |||
+ | Asenna vaaditut paketit | ||
+ | |||
+ | sudo apt-get install gems ruby | ||
+ | |||
+ | Asennna gemsillä bundler ja dashing | ||
+ | |||
+ | <pre> | ||
+ | sudo gem install bundler | ||
+ | sudo gem install dashing | ||
+ | </pre> | ||
+ | |||
+ | Lataa gitti | ||
+ | |||
+ | cd /opt | ||
+ | git clone https://github.com/Icinga/dashing-icinga2.git | ||
+ | |||
+ | Konfiguroi Icinga2 | ||
+ | |||
+ | sudo nano /etc/icinga2/conf.d/api-users.conf | ||
+ | |||
+ | Määrittämällä dashingille käyttäjätili ja oikeudet lukea API:n kautta tietoja | ||
+ | |||
+ | <pre> | ||
+ | object ApiUser "dashing" { | ||
+ | password = "icinga2ondashingr0xx" | ||
+ | permissions = [ "status/query", "objects/query/*" ] | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Konfiguroi icinga2:n osoite | ||
+ | |||
+ | sudo nano /opt/dashing-icinga2/jobs/icinga2.rb | ||
+ | |||
+ | Määritä tiedostosta seuraavat kohdat: | ||
+ | |||
+ | <pre> | ||
+ | $api_url_base = "https://localhost:5665" | ||
+ | $api_username = "dashing" | ||
+ | $api_password = "password" | ||
+ | </pre> | ||
+ | |||
+ | Asenna vaaditut ruby gems järjestelmään | ||
+ | |||
+ | bundle install --system | ||
+ | |||
+ | Käynnistä dashing | ||
+ | |||
+ | ./restart-dashing | ||
+ | |||
+ | == Kustomoidut ilmoitukset == | ||
+ | |||
+ | Icingaan voit lisätä notifikaatioita erilaisiin palveluihin, kuten Slack, Telegram jne... | ||
+ | |||
+ | === Telegram === | ||
+ | |||
+ | Ohje: http://metz.gehn.net/2016/01/monitoring-notifications-via-telegram/ | ||
+ | |||
+ | == Hajautettu asennus == | ||
+ | |||
+ | Icinga2 on mahdollista hajauttaa useille eri palvelimille esimerkiksi kuormantasauksen takia tai siksi että viive monitorointikohteita on paljon. | ||
+ | |||
+ | [[File:icinga2_distributed_roles.png|400px]] | ||
+ | |||
+ | |||
+ | Satellite monitorointi kuten yllä olevassa kuvassa näyttää että voisi olla useita eri kohteita joissa Icingan monitorointi joka lähettää edelleen masterille. | ||
+ | |||
+ | Käytämme tässä esimerkissä | ||
+ | |||
+ | <pre> | ||
+ | Masterina icinga2a:ta | 192.168.1.2 | ||
+ | Satellitena icinga2b:tä | 192.168.1.3 | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | === Asenna ja konfiguroi Masteri === | ||
+ | |||
+ | Aloita asennus tämän ohjeen mukaan: [[Icinga2#Masterin_asennus_ja_konfigurointi|Masterin asennus]] | ||
+ | |||
+ | Kun asennus suoritettu niin palaa takaisint tähän kohtaan | ||
+ | |||
+ | Editoi /etc/icinga2/zones.conf tiedosto | ||
+ | |||
+ | <pre> | ||
+ | |||
+ | object Endpoint "icinga2a" { | ||
+ | host = "192.168.1.2" | ||
+ | } | ||
+ | |||
+ | object Endpoint "icinga2b" { | ||
+ | host = "192.168.1.3" | ||
+ | } | ||
+ | |||
+ | object Zone "icinga2a" { | ||
+ | endpoints = [ "icinga2a" ] | ||
+ | } | ||
+ | |||
+ | object Zone "icinga2b" { | ||
+ | endpoints = [ "icinga2b" ] | ||
+ | parent = "icinga2a" | ||
+ | } | ||
+ | |||
+ | /* | ||
+ | * Global zone for templates | ||
+ | */ | ||
+ | object Zone "global-templates" { | ||
+ | global = true | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Luo hakemistot masterille | ||
+ | |||
+ | <pre> | ||
+ | sudo mkdir /etc/icinga2/zones.d/icinga2a | ||
+ | sudo mkdir /etc/icinga2/zones.d/icinga2b | ||
+ | sudo mkdir /etc/icinga2/zones.d/global-templates | ||
+ | </pre> | ||
+ | |||
+ | Kopioi hostsit omalle hakemistoon zones.d alle | ||
+ | |||
+ | sudo mv /etc/icinga2/conf.d/hosts.conf /etc/icinga2/zones.d/icinga2a/ | ||
+ | |||
+ | Kopioi sitten loput global-templates hakemistoon | ||
+ | |||
+ | sudo mv /etc/icinga2/conf.d/* /etc/icinga2/zones.d/global-templates | ||
+ | |||
+ | Luo sitten satellite hosteille hakemistot | ||
+ | |||
+ | sudo nano /etc/icinga2/zones.d/icinga2b/hosts.conf | ||
+ | |||
+ | Luo seuraavaksi cluster hakemisto /etc/icinga2 hakemiston alle | ||
+ | |||
+ | sudo mkdir /etc/icinga2/cluster | ||
+ | |||
+ | Luo hakemistoon icinga2a.conf tiedosto | ||
+ | |||
+ | <pre> | ||
+ | /* | ||
+ | * cluster health checks | ||
+ | * icinga2a as master node [x] | ||
+ | * icinga2b as a Satellite node | ||
+ | */ | ||
+ | |||
+ | |||
+ | object Host "icinga2a" { | ||
+ | display_name = "Health Checks on icinga2a" | ||
+ | address = "192.168.1.2" | ||
+ | check_command = "hostalive" | ||
+ | } | ||
+ | object Host "icinga2b" { | ||
+ | display_name = "icinga2b" | ||
+ | address = "192.168.1.3" | ||
+ | check_command = "hostalive" | ||
+ | } | ||
+ | |||
+ | |||
+ | object Service "cluster" { | ||
+ | check_command = "cluster" | ||
+ | check_interval = 5s | ||
+ | retry_interval = 1s | ||
+ | host_name = "icinga2a" | ||
+ | } | ||
+ | |||
+ | object Service "icinga" { | ||
+ | check_command = "icinga" | ||
+ | max_check_attempts = 3 | ||
+ | check_interval = 60s | ||
+ | retry_interval = 30s | ||
+ | host_name = "icinga2a" | ||
+ | } | ||
+ | /* check if checker zone is connected */ | ||
+ | object Service "cluster-zone-checker" { | ||
+ | check_command = "cluster-zone" | ||
+ | check_interval = 5s | ||
+ | retry_interval = 1s | ||
+ | vars.cluster_zone = "icinga2b" | ||
+ | host_name = "icinga2a" | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Muokkaa /etc/icinga2/icinga2.conf tiedostosta ja kommentoi seuraava rivi | ||
+ | |||
+ | # include_recursive "conf.d" | ||
+ | |||
+ | Tarkista konfiguraatio ja lataa uudelleen ne | ||
+ | |||
+ | <pre> | ||
+ | sudo service icinga2 checkconfig | ||
+ | sudo service icinga2 reload | ||
+ | </pre> | ||
+ | |||
+ | Varmista palomuurista että kaikki icinga satellitet voi kuunnella TCP 5665 porttia. | ||
+ | |||
+ | ==== Toinen masteri (HA) ==== | ||
+ | |||
+ | ''Vielä kokeellinen... | ||
+ | '' | ||
+ | |||
+ | Asenna masteri kuten ensimmäisenkin masterin [[Icinga2#Masterin_asennus_ja_konfigurointi|Masterin asennus]] | ||
+ | |||
+ | === Satellite asennus ja konfigurointi === | ||
+ | |||
+ | Asenna ensin tämän ohjeen mukaan [[Icinga2#Client_asennus_ja_konfigurointi|icinga2]] ilman että teet muutoksia masterin tiedostoihin. Palaa sitten tänne ohjeeseen takaisin. | ||
+ | |||
+ | Varmista että /etc/icinga2/features-enabled/api.conf tiedostossa on... (Lisää ja käynnistä icinga2 uudelleen jos ei ole) | ||
+ | |||
+ | <pre> | ||
+ | accept_config = true | ||
+ | accept_commands = true | ||
+ | </pre> | ||
+ | |||
+ | Tämä hakee zone nimesi ja global-templatet master palvelimelta. | ||
+ | |||
+ | Varmista constrants.conf tiedostossa että on oikea satellite nimi. | ||
+ | |||
+ | Tarkista seuraavaksi /etc/icinga2/zones.conf tiedostossa on oikein konfiguraatio | ||
+ | |||
+ | <pre> | ||
+ | object Endpoint "icinga2a" { | ||
+ | host = "192.168.1.2" | ||
+ | port = "" | ||
+ | } | ||
+ | object Zone "master" { | ||
+ | endpoints = [ "icinga2a" ] | ||
+ | } | ||
+ | object Endpoint "icinga2b" { | ||
+ | } | ||
+ | object Zone "icinga2b" { | ||
+ | //this is the local node = "icinga2b" | ||
+ | endpoints = [ "icinga2b" ] | ||
+ | parent = "master" | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Lisää alla oleva lisäksi tähän tiedostoon | ||
+ | |||
+ | <pre> | ||
+ | |||
+ | /* | ||
+ | * Global zone for templates | ||
+ | */ | ||
+ | object Zone "global-templates" { | ||
+ | global = true | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Luo /etc/icinga2/cluster/icinga2b.conf tiedosto icinga2b palvelimelle ja lisää tiedostoon | ||
+ | |||
+ | <pre> | ||
+ | object Host "icinga2b" { | ||
+ | display_name = "Health Checks on icinga2b" | ||
+ | address = "192.168.1.3" | ||
+ | check_command = "hostalive" | ||
+ | } | ||
+ | object Service "cluster" { | ||
+ | check_command = "cluster" | ||
+ | check_interval = 5s | ||
+ | retry_interval = 1s | ||
+ | host_name = "icinga2b" | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Avaa /etc/icinga2/icinga2.conf tiedosto ja kommentoi conf.d include pois ja lisää cluster directory | ||
+ | |||
+ | <pre> | ||
+ | # include_recursive "conf.d" | ||
+ | include_recursive "cluster" | ||
+ | </pre> | ||
+ | |||
+ | Pysäytä icinga2 | ||
+ | |||
+ | sudo service icinga2 stop | ||
+ | |||
+ | Määritä hakemiston käyttöoikeus icinga2:n käyttäjätilille joka meillä nagios | ||
+ | |||
+ | sudo chown -R nagios:nagios /etc/icinga2 | ||
+ | |||
+ | Palaa takaisin master palvelimelle ja kopioi icinga2.state hakemisto ja siirrä se satellite palvelimille | ||
+ | |||
+ | scp /var/lib/icinga2/icinga2.state <username>@192.168.1.3:/home/<username> | ||
+ | |||
+ | Palaa nyt satellitelle ja siirrä icinga2.state tiedosto /var/lib/icinga2 hakemistoon | ||
+ | |||
+ | sudo mv /home/<username>/icinga2.state /var/lib/icinga2/ | ||
+ | |||
+ | Käynnistä satellitessa icinga2 | ||
+ | |||
+ | sudo service icinga2 start | ||
+ | |||
+ | === Tarkista toiminta === | ||
+ | |||
+ | Tarkistetan että synkronointi toimii masterilta satelliten välillä. | ||
+ | |||
+ | Tarkista synkronoinnin tila lokeista /var/log/icinga/icinga2.log | ||
+ | |||
+ | Satellitesta tiedostot global-templates hakemistosta pitäisi tulla /var/lib/icinga2/api/zones/global-templates hakemistoon satellitelle. | ||
+ | |||
+ | |||
+ | '''Jos sait virheilmoituksen, ole hyvä ja TARKISTA kaikki konfiguraatiot että ovat täysin samanlain, isot ja pienkirjaimet mukaan lukien.''' | ||
+ | |||
+ | === Käyttäminen === | ||
+ | |||
+ | Erilaisia käyttöohjeita oman kokemukseni mukaan. Nämä ovat yksi tapa käyttää tätä icingaa joten ole yhteydessä jos keksit jonkin paremman :) | ||
+ | |||
+ | ==== Clientin lisäys nyt satelliteen ==== | ||
+ | |||
+ | Tämä ohjeella käytät satellite icinga2 palvelinta monitoiressa clienttia. | ||
+ | |||
+ | |||
+ | Liitä clientti normaalisti masteriin [[Icinga2#Client_asennus_ja_konfigurointi|ohjeen mukaisesti]] | ||
+ | |||
+ | Jätä kuitenkin zoneiden masterille tekemiseen ja palaa tähän ohjeeseen. | ||
+ | |||
+ | Luo zonet masteriin ja satelliteen (siihen mikä monitoroi riittää), /etc/icinga2/zones.conf tiedostoon kuten tekisit sen masterille, kuitenkin niin että parent on satellite. Esimerkki: | ||
+ | |||
+ | <pre> | ||
+ | ... | ||
+ | object Endpoint "icinga2client" { | ||
+ | host = "192.168.1.4" | ||
+ | } | ||
+ | |||
+ | object Zone "icinga2client" { | ||
+ | endpoints = [ "icinga2client" ] | ||
+ | parent = "icinga2b" | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Mene masteterille ja sieltä avaa seuraava tiedosto | ||
+ | |||
+ | sudo nano /etc/icinga2/zones.d/icinga2b/hosts.conf | ||
+ | |||
+ | ja lisää tiedot palvelimesta | ||
+ | |||
+ | <pre> | ||
+ | object Host "icinga2client" { | ||
+ | import "generic-host" | ||
+ | |||
+ | address = "192.168.1.4" | ||
+ | vars.os = "Linux" | ||
+ | |||
+ | vars.remote_client = "icinga2client" | ||
+ | |||
+ | /* host specific check arguments */ | ||
+ | vars.users_wgreater = 10 | ||
+ | vars.users_cgreater = 20 | ||
+ | |||
+ | /* Define notification mail attributes for notification apply rules in `notifications.conf`. */ | ||
+ | vars.notification["mail"] = { | ||
+ | /* The UserGroup `icingaadmins` is defined in `users.conf`. */ | ||
+ | groups = [ "icingaadmins" ] | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Tallenna ja käynnistä icinga2 molemmista palvelimista uudelleen. | ||
+ | |||
+ | == Troubleshooting == | ||
+ | |||
+ | critical/icinga-app: Another instance of Icinga already running with PID | ||
+ | |||
+ | * Asenna 2 2.4.10 tai uudempi versio korjaa tämän ongelman | ||
+ | |||
+ | === Distribution ongelmat === | ||
+ | |||
+ | Jos satellite ei suostu enään käynnistymään konfiguroinnin takia uudelleen, poista kaikki tiedostot seuraavista hakemistoista satellitesta. Uudelleenkäynnistyksen jälkeen se lataa uudelleen tiedostot masterilta. | ||
+ | |||
+ | sudo rm -R /var/lib/icinga2/api/zones/global-templates/_etc/ | ||
+ | sudo rm -R /var/lib/icinga2/api/zones/icingab/_etc/* | ||
+ | sudo service icinga2 restart | ||
+ | |||
+ | == Lähteitä ja linkkejä ohjeisiin == | ||
− | + | https://wiki.icinga.org/display/howtos/Icinga2+Distributed+Cluster+Install+with+CentOS+6 | |
− | + | https://www.olindata.com/blog/2015/03/monitoring-remote-systems-icinga-2 | |
− | + | http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/plugin-check-commands | |
− | + | http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/distributed-monitoring | |
− | + | [[Luokka:Linux|Icinga2]] |
Nykyinen versio 4. kesäkuuta 2017 kello 12.37
Icinga2 on Nagioksesta forkattu versio . Icinga2 sisältää paljon uusia ominaisuuksia ja paremman webympäristön ja valmiin mahdollisuus esimerkiksi Graphite pluginiin. Icinga käyttää samoja plugineita kuin nagios joten tällä voi monitoroida samoja palveluja kuin Nagioksella. Ohjeita joihinkin muokattuihin plugineihin.
Järjestelmän vaatimukset täältä: https://wiki.icinga.org/display/howtos/System+Requirements
Icinga vaatii lisäksi verkosta portin 80 (HTTP), 443 (HTTPS) ja 5665 (Icinga2) että ovat auki palomuurista Icingaan.
Icinga2 mahdollistaa myös suuremman jakeluympäristön, masterin, satelite ja clientin.
Sisällysluettelo
Masterin asennus ja konfigurointi
Asenna vaaditut paketit. MySQL:n tilalla voit käyttää myös MariaDB:tä.
sudo apt-get install apache2 libapache2-mod-php php5 php5-json php5-gd php5-imagick php5-mysql php5-intl mysql-server mysql-client mailutils
Paketit Ubuntu 16.04 ja uudemmille käyttöjärjestelmille
sudo apt-get install apache2 libapache2-mod-php php7.0 php-json php7.0-gd php-imagick php7.0-mysql php7.0-intl mysql-server mysql-client mailutils
Lisää APT key
wget -O - http://packages.icinga.org/icinga.key | apt-key add -
Lisää source.listiin /etc/apt/source.list):
Ubuntu: http://packages.icinga.org/ubuntu/
Debian: http://packages.icinga.org/debian/
Asenna sitten Icinga paketti
sudo aptitude update sudo aptitude install icinga2 icingaweb2
Asenna IDO MySQL moduuli ja ota moduuli käyttöön
sudo apt-get install icinga2-ido-mysql
icinga2 feature enable ido-mysql
Käynnistä Icinga2 uudelleen kun moduuli on otettu käyttöön
service icinga2 restart
Muuta oikeudet /etc/icingaweb2 hakemistoon (tämä on bugi asennusohjelmassa mutta tällä fiksaa sen)
chown www-data:www-data -R /etc/icingaweb2
usermod -a -G icingaweb2 www-data
Konfiguroi webympäristö
addgroup --system icingaweb2
MySQL konfigurointi
Luo tietokanta icinga2:lle seuraavasti:
- Tietokanta icingaweb2:lle
- Tietokanta icinga2ido:lle.
Kirjaudu tietokantaan ja luo tietokanta icingaweb2:lle ja icinga2:lle sekä icinga2ido:lle.
mysql -u root -p CREATE DATABASE icingaweb2; CREATE DATABASE icinga2ido; CREATE USER 'icinga2'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON icingaweb2.* TO ‘icinga2’@'localhost’; GRANT ALL PRIVILEGES ON icinga2ido.* TO 'icinga2'@'localhost'; FLUSH PRIVILEGES; exit;
Importtaa tietokanta icinga2 ido:lle tai käytä dpkg-reconfigure icinga2-ido-mysql
mysql -u root -p icinga2 < /usr/share/icinga2-ido-mysql/schema/mysql.sql
PHP
Konfiguroi PHP:lla aikavyöhyke muuttamalla /etc/php5/apache2/php.ini tai /etc/php/7.0/apache2/php.ini tiedostosta:
date.timezone = "Europe/Helsinki"
Vaihtoehtoisesti voit lisätä sen suoraan Apachen virtualhost konfiguraatioon
<IfModule php7_module> php_admin_value date.timezone = "Europe/Helsinki" </IfModule> <IfModule php5_module> php_admin_value date.timezone = "Europe/Helsinki" </IfModule>
Webinstaller
Jatka asennusta webympäristössä, http://palvelimen-ip/icingaweb2
Ensiksi sinun pitää luoda tokeni, luo se terminaalissa komennolla
sudo icingacli setup token create
ja sitten kopioi se webbiin.
Seuraavalla sivulla lista virheistä joita pitäisi fiksaiolla jos ei ole vielä tehty. Varmista että paketit on asennettu.
Tämän jälkeen tulee tietokanta icinga2:lle. Kirjoita tietokantapalvelimesi asetukset. Vahvista asetukset ja valitse NEXT.
Apache2 (valinnainen)
Apache2:n konfigurointi niin että icingaweb2 vastaa suoraan DocumentRoottina. Tässä esimerkki Virtual Hosti jonka voit tehdä /etc/apache2/sites-available hakemiston alle ja ottaa käyttöön
<Virtualhost *:80>
ServerAdmin [email protected]
ServerName icinga.example.org
DocumentRoot /usr/share/icingaweb2/public
<Directory "/usr/share/icingaweb2/public">
Options SymLinksIfOwnerMatch
AllowOverride None
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAll>
Require all granted
</RequireAll>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order allow,deny
Allow from all
</IfModule>
SetEnv ICINGAWEB_CONFIGDIR "/etc/icingaweb2"
EnableSendfile Off
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
</IfModule>
<IfModule !mod_rewrite.c>
DirectoryIndex error_norewrite.html
ErrorDocument 404 /error_norewrite.html
</IfModule>
</Directory>
</Virtualhost>
Konfigurointi
Rakenne
Tiedostojen sijainnit palvelimella kun asennetaan Debian paketista.
Sijainti | Selitys |
---|---|
/etc/icinga2 | Icinga2 konfigurointi tiedostot |
/etc/init.d/icinga2 | Icinga2 init scripti |
/usr/sbin/icinga2 | Icinga2 binäärit |
/usr/share/doc/icinga2 | Icinga2 dokumentaatio |
/var/run/icinga2 | PDI tiedosto |
/var/lib/icinga2 | Icinga2 state tiedosto, klusteri lokit, paikallinen CA ja konfigurointitiedostot |
/var/log/icinga2 | Icinga2 lokit |
/usr/lib/nagios/plugins | Pluginien sijainti |
Masteri monitoroinnin konfigurointi
Konfiguroi masteri ennen clienttien konfigurointia. Tämä luo juuri sertifikaatit masterille.
Käynnistä konfigurointi wizardi
icinga2 node wizard
Toimi asennus wizardin mukaisesti
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 specifiy the common name (CN) [icinga.example.org]: 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: Initializing serial file in '/var/lib/icinga2/ca/serial.txt'. information/cli: Generating new CSR in '/etc/icinga2/pki/icinga.example.org.csr'. information/base: Writing private key to '/etc/icinga2/pki/icinga.example.org.key'. information/base: Writing certificate signing request to '/etc/icinga2/pki/icinga.example.org.csr'. information/cli: Signing CSR with CA and writing certificate to '/etc/icinga2/pki/icinga.example.org.crt'. information/cli: Copying CA certificate to '/etc/icinga2/pki/ca.crt'. 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 []: Bind Port []: information/cli: Enabling the APIlistener feature. Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect. 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'. Please edit the constants.conf file '/etc/icinga2/constants.conf' and set a secure 'TicketSalt' constant. Done. Now restart your Icinga 2 daemon to finish the installation!
Käynnistä icinga2 uudelleen
sudo service icinga2 restart
Ilmoitusasetukset
Icinga tukee Nagioksen tavoin sähköposti-ilmoituksia ja voit konfiguroida kohde osoitteen. Sähköposti-ilmoitukset lähetetään mailutils paketin avulla, varmistathan että sinulla on tämä asennettu.
sudo nano /etc/icinga2/conf.d/users.conf
Muuta tiedostosta sähköposti-osoite vastaamaan omaasi.
object User "icingaadmin" { import "generic-user" display_name = "Icinga 2 Admin" groups = [ "icingaadmins" ] email = "root@localhost" }
Muutosten jälkeen käynnistä Icinga2 uudelleen
Poista käytöstä ilmoitusten toisto
Muokkaa /etc/icinga2/conf.d/notifications.conf tiedostosta interval riviä.
interval = 0
Interval = 0 tarkoittaa ettei notifikaatioita toisteta.
Toistaminen tapahtuu määrittämällä interval arvoksi aikaväli. Esimerkiksi 5min välein
interval = 5m
Poista käytöstä ping ilmoitukset (optional)
Poista turhat ping ilmoitukset ettei tartte meiliboxia kokoajan tyhjentää turhista ilmoituksista
Avaa /etc/icinga2/conf.d/notifications.conf tiedosto ja lisää "apply Notification "mail-import" to Service" sulkeiden sisälle 'assign where host.vars.notification.mail' jälkeen:
ignore where match("*ping*", service.name)
Käyttäjähallinta ja oikeuksien hallinta Icingassa
Tässä esimerkissä tehdään käyttäjä "asiakas" jolle sallitaan pääsy vain hänen palvelimille. Jokainen palvelin on merkittävä siis hänelle että näkee icingaweb2:ssa.
Luo HostGroup käyttäjälle esimerkiksi "asiakas".
sudo nano /ect/icinga2/conf.d/groups.conf
Lisää tiedostoon:
object HostGroup "asiakas" { display_name = "Asiakkaan laitteet" assign where host.vars.owner == "asiakas" }
Lisää sitten jokaiseen "asiakkaan" omistamalle hostiin parametri
vars.owner = "asiakas"
Mene sitten graafiseen icingawebbiin Configuration -> Authentication
Luo käyttäjätili "asiakas" ja liitä se "asiakas" ryhmään. (Luo siis ryhmäkin)
Luo Role nimellä "asiakas" ja määritä siihen rooliin "monitoring/filter/objects" kohtaan
hostgroup_name=asiakas
Tallenna, kirjaudu ulos, käynnistä icinga2 uudelleen ja testaa toimivuus
Custom Pluginien lisääminen
Lataa pluginit aina clientin ja masterin nagios-plugin hakemistoon ensin. Oletuksena hakemiston sijainti on /usr/lib/nagios/plugins .
Lisää /etc/icinga2/conf/commands.conf tiedostoon rivit joka määrittää pluginin. Alla esimerkkin' check_diskstat plugin. Lisää tämä alla oleva masterille sekä clienteille.
object CheckCommand "check_diskstat" { import "plugin-check-command" command = [ PluginDir + "/check_diskstat" ] //constants.conf -> const PluginDir arguments = { "-d" = "$diskstat_name$" "-W" = "$diskstat_warn$" "-C" = "$diskstat_crit$" } }
ja tämän jälkeen /etc/icinga2/conf/services.conf tiedostoon miten tämä jaetaan hosteille. Tässä esimerkissä 'assing' kaikeille etä hosteille sekä niissä tulee olla Linux. Tämä määritetään vain masterille.
apply Service "diskstat" { import "generic-service" check_command = "check_diskstat" command_endpoint = host.vars.remote_client assign where host.vars.remote_client && host.vars.os == "Linux" }
Varmista että kaikki on nyt oikein ja käynnistä Icinga2 uudelleen
sudo service icinga2 restart
Debug nyt jos tuli virhettä tai ei näy oikein Icingassa.
Client asennus ja konfigurointi
Tämä ohje yksinkertaisuudessa ohjeistaa miten liitetään icinga2 masteriin.
Linux
- master on icinga master palvelin jonne data tallennetaan. Tätä osoite on icinga.example.org ja IP: 172.16.1.10
- clienttinä on client1.example.org ja IP: 172.16.1.9
Mene clientille
Lisää APT key
wget -O - http://packages.icinga.org/icinga.key | sudo apt-key add -
Lisää source.listiin:
Ubuntu: http://packages.icinga.org/ubuntu/
Debian: http://packages.icinga.org/debian/
sudo aptitude update && aptitude install icinga2
Käynnistä asennusvelho
sudo icinga2 node wizard
Noden asennusvelho kyselee tiettyjä asetuksia ja vastaa seuraavasti
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 specifiy the common name (CN) [client1.example.org]: Please specify the master endpoint(s) this node should connect to: Master Common Name (CN from your master setup): icinga.example.org 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): 172.16.1.10 Master endpoint port [5665]: Add more master endpoints? [y/N]: n Please specify the master connection for CSR auto-signing (defaults to master endpoint host): Host [172.16.1.10]: Port [5665]:
- Tämän jälkeen kopioi masterin luoma tikettikoodi
Please specify the request ticket generated on your Icinga 2 master. (Hint: # icinga2 pki ticket --cn 'client1.example.org'):
Sama vaihe suoraa komentorivillä. Kopioi masterilta sertifikaatti /etc/icinga2/pki/icinga.example.org serttifikaatti /opt/icinga.crt asiakas palvelimelle.
icinga2 node setup --ticket XXXX --endpoint icinga.example.org --zone client_name --master_host 172.16.1.10 --listen 5665 --trustedcert /opt/icinga.crt
Tämän jälkeen lisää masterin konfiguraatioon:
sudo nano /etc/icinga2/zones.conf
object Endpoint "client1.example.org" { host = "172.16.1.9" } object Zone "client1.example.org" { endpoints = [ "client1.example.org" ] parent = NodeName }
Avaa lisäksi /etc/icinga2/conf.d/hosts.conf tiedosto masterista
ja lisää konfiguraatioon
object Host "client1.example.org" { import "generic-host" address = "172.16.1.9" address6 = "::1" vars.os = "Linux" vars.remote_client = "client1.example.org" /* host specific check arguments, optional */ vars.users_wgreater = 10 vars.users_cgreater = 20 }
Lisää service tiedostoon masterille "assign where host.vars.remote_client", katso esimerkki alla
sudo nano /etc/icinga2/conf.d/services.conf
apply Service "users" { import "generic-service" check_command = "users" command_endpoint = host.vars.remote_client /* override (remote) command arguments with host settings */ vars.users_wgreater = host.vars.users_wgreater vars.users_cgreater = host.vars.users_cgreater /* assign where a remote client is set */ assign where host.vars.remote_client }
Käynnistä icinga2 uudelleen, masteri ja clientti.
sudo service icinga2 restart
Windows
Lisää icinga2.conf tiedostoon Windows Pluginit. Tämä includettaa /usr/share/icinga2/include/command-plugins-windows.conf tiedoston.
include <windows-plugins>
1. Asenna Icinga2 Windows client: http://packages.icinga.org/windows/ . Käyttäessä MSI pakettia asenna ensin päivitys Windowssille: https://support.microsoft.com/en-us/kb/2999226
2. Luo vastaava tiketti kuin Linuxille masterilla.
icinga2 pki ticket --cn 'windows.example.org'
3. Windows:silla asetukset:
Instance name: Windows isäntänimi Setup Ticket: Tiketti jonka kopioit masterilta
4. Lisää EndPoint valitsemalla 'Add'
Instance Name: masterin isäntänimi joka on sertifikaatin CN Täppää "Connect to this endpoint' Host: Masterin IP/Hostname Port: 5665 (Default) 5. Täppää sitten vielä <pre> Accept commands from master Accept config updates from master
6. Valitse NEXT.
7. Vahvista sertifikaatti. Subject pitää olla sama kuin EndPointin Instance Name. Muuten tulee virheitä.
8. Määritä masterille nyt zone ja host asetukset ja käynnistä masteri uudelleen.
Lähde ohjeesta poiketen sinun ei tarvitse asentaa NSClient++ sillä Icinga2 client osaa nuo kaiken oletuksena. Voit toki käyttää tätäkin halutessasi.
Lähde: http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/icinga2-client
Monitorointi yli SSH:n
Icingalla voit monitoroida vaihtoehtoisesti yli SSH:n jos et halua asentaa Icingan omaa clienttia asiakaspalvelimelle.
1. Sinun tulee ensin asentaa SSH avaimet oikein. Eli privaattivain masterille ja public avain asiakaspalvelimelle niin että pystyt kirjautumaan [email protected] testaamalla ilman mitään virheitä.
2. Testaa ajamalla käsin komennot sieltä mistä haluat monitoroida. Korvaa server.local palvelimesi osoitteella ja -l käyttäjänimelläsi. Tämä pitäisi tulostaa suoraan prosessien määrän kuten ajaisit paikallisella koneella.
/usr/lib/nagios/plugins/check_by_ssh -H server.local -C "/usr/lib/nagios/plugins/check_procs " -l username
3. Konfiguroi masterille service
apply Service for (check_by_ssh => config in host.vars.by_ssh) { import "generic-service" check_command = "by_ssh" vars += config }
Lisää tämä vielä masterille hosts.conf
vars.by_ssh["procs"] = { by_ssh_command = "/usr/lib/nagios/plugins/check_procs" by_ssh_logname = "username" }
4. Käynnistä icinga2 uudelleen ja testaa
Lisämoduulit
Graphite Icinga2:een
Asenna seuraavat moduulit
sudo apt-get update sudo apt-get install graphite-web graphite-carbon
Asenna MySQL
sudo apt-get install mysql-server mysql-client
Asenna Python paketteja
sudo apt-get install python-django sudo apt-get install python-whisper python-cairo python-django-tagging sudo apt install python-pip sudo pip install PyMySQL
Luo MySQL:ään
- Tietokanta graphite:lle täysillä oikeuksilla
- Käyttäjätunnus ja salasana
Konfiguroi Graphite Web sovellus
Avaa Graphite web sovelluksen konfigurointi tiedosto
sudo nano /etc/graphite/local_settings.py
Luo secret_key jota käytetään hashinä. Poista kommentti ja määritä siihen pitkä hash. Muuta hash.
SECRET_KEY = '<changethis>'
Seuraavaksi määritetään aikavyöhyke oikein. Tämä on tärkeä olla oikein koska sitä käytetään grafiikan ajoituksissa
TIME_ZONE = 'Europe/Helsinki'
Lisäksi haluamme konfiguroida todennuksen tallentaakseen graphic dataa. Kun synkronoidaan tietokantaan, luomme käyttäjän mutta täytyy ottaa käyttöön todennus
USE_REMOTE_USER_AUTHENTICATION = True
Nyt on aika konfiguroida tietokanta-asetukset.
DATABASES = { 'default': { 'NAME': 'graphite', 'ENGINE': 'django.db.backends.mysql', 'USER': 'graphite', 'PASSWORD': 'databasepassword', 'HOST': 'localhost', 'PORT': '3306' } }
Tallenna ja sulje.
Seuraavaksi synkronoidaan tiedot tietokantaan
sudo graphite-manage syncdb
Sinulta kysellään superkäyttäjän luomista. Luo käyttäjä jolla pääset kirjautumaan selaimella. Tällä voit tallentaa grafiikoita ja muokata näkymää.
Nyt kun tietokanta on konfiguroitu, tulee konfiguroida carbon, Graphite tallennus ohjelman
sudo nano /etc/default/graphite-carbon
Täälä on vain yksi parametri joka pitää ottaa käyttöön
CARBON_CACHE_ENABLED=true
Sulje ja tallenna. Seuraavaksi avaa Carbonin konfigurointi tiedosto
sudo nano /etc/carbon/carbon.conf
Jossa tehdään pieni muutos
ENABLE_LOGROTATION = True
Kun kaikki on valmista voit käynnistää Carbon palvelun
sudo service carbon-cache start
Web interfacea varten sinun tulee asentaa Apacheen wsgi moduulin
sudo apt-get install apache2 libapache2-mod-wsgi
Kopioi oletuskonfiguraatio
sudo cp /usr/share/graphite-web/apache2-graphite.conf /etc/apache2/sites-available
Ota se käyttöön
sudo a2ensite apache2-graphite
- Suositus konfiguroida Apacheen autentikointi graphitea varten. Graphite ei oletuksena sisällä autentikointia. Tämän voi toteuttaa helposti Apachella.
- /var/.graphite tiedostoon kirjaa salasanant htpasswd komennolla
AuthUserFile /var/.graphite AuthName "Anna kirjautumisen tiedot" AuthType Basic require valid-user
Lataa Apache2 konfiguraatio uudelleen
sudo service apache2 reload
---
Ota sitten käyttöön Icingassa graphite moduuli
sudo icinga2 feature enable graphite
Käynnistä Icinga uudelleen.
Graphite ja Icingaweb2 moduulin asennus ja konfigurointi
Lataa Icingaweb2-module-graphite moduuli
git clone https://github.com/Icinga/icingaweb2-module-graphite.git
Kopioi tämä /usr/share/icingaweb2/modules hakemiston alle.
Luo konfiguraatiolle hakemistolle ja kopioi esimerkiksi konfiguraatio
sudo mkdir -p /etc/icingaweb2/modules/graphite cd icingaweb2-module-graphit sudo cp -rv sample-config/icinga2/* /etc/icingaweb2/modules/graphite
Muuta oikeudet
sudo chown -R root:icingaweb2 /etc/icingaweb2/modules/graphite sudo chmod -R 2755 /etc/icingaweb2/modules/graphite
Muokkaa /etc/icingaweb2/modules/graphite/config.ini tiedostossa web_uri:ksi graphite host
[graphite] web_url = http://my.graphite.web
Icingaweb2 Director
Icinga2 Director on graafinen hallinta Icingalle. Tämä on aika uusi plugini icingaweb2:lle joten käytä varoen.
Huomaa!
- Ensinnäkin, Director ei kirjoita mitään /etc/icinga2 hakemistoon kuten olet konfiguroinut. Tänne tallennat manuaaliset konfiguraatiot ja vaatimukset että saat icinga2:n toimimaan directorin kanssa. Director käyttää siis Icinga2 API:a konfiguroidessaan.
Vaatimukset
- Icinga2 (> = 2.4.3)
- Icinga Web 2 (> 2.2.0)
- Tietokanta, MySQL tai PostgreSQL
- PHP5-curl / PHP7.0-curl
Asennus
cd /tmp git clone https://github.com/Icinga/icingaweb2-module-director.git mv icingaweb2-module-director /usr/share/icingaweb2/modules/director
Luo tietokanta (esim MySQL)
mysql -e "CREATE DATABASE director CHARACTER SET 'utf8'; GRANT ALL ON director.* TO director@localhost IDENTIFIED BY 'some-password';"
Päivittäminen, git, sekä tietokanta
cd /usr/share/icingaweb2/modules/director git pull icingacli director migration run --verbose
Dashing-Icinga2
Dashing-icinga on näppärä dashboardi Icingalle joka sopii hyvin TV:seen näytettynä.
Projektin osoite: https://github.com/Icinga/dashing-icinga2
Asenna vaaditut paketit
sudo apt-get install gems ruby
Asennna gemsillä bundler ja dashing
sudo gem install bundler sudo gem install dashing
Lataa gitti
cd /opt git clone https://github.com/Icinga/dashing-icinga2.git
Konfiguroi Icinga2
sudo nano /etc/icinga2/conf.d/api-users.conf
Määrittämällä dashingille käyttäjätili ja oikeudet lukea API:n kautta tietoja
object ApiUser "dashing" { password = "icinga2ondashingr0xx" permissions = [ "status/query", "objects/query/*" ] }
Konfiguroi icinga2:n osoite
sudo nano /opt/dashing-icinga2/jobs/icinga2.rb
Määritä tiedostosta seuraavat kohdat:
$api_url_base = "https://localhost:5665" $api_username = "dashing" $api_password = "password"
Asenna vaaditut ruby gems järjestelmään
bundle install --system
Käynnistä dashing
./restart-dashing
Kustomoidut ilmoitukset
Icingaan voit lisätä notifikaatioita erilaisiin palveluihin, kuten Slack, Telegram jne...
Telegram
Ohje: http://metz.gehn.net/2016/01/monitoring-notifications-via-telegram/
Hajautettu asennus
Icinga2 on mahdollista hajauttaa useille eri palvelimille esimerkiksi kuormantasauksen takia tai siksi että viive monitorointikohteita on paljon.
Satellite monitorointi kuten yllä olevassa kuvassa näyttää että voisi olla useita eri kohteita joissa Icingan monitorointi joka lähettää edelleen masterille.
Käytämme tässä esimerkissä
Masterina icinga2a:ta | 192.168.1.2 Satellitena icinga2b:tä | 192.168.1.3
Asenna ja konfiguroi Masteri
Aloita asennus tämän ohjeen mukaan: Masterin asennus
Kun asennus suoritettu niin palaa takaisint tähän kohtaan
Editoi /etc/icinga2/zones.conf tiedosto
object Endpoint "icinga2a" { host = "192.168.1.2" } object Endpoint "icinga2b" { host = "192.168.1.3" } object Zone "icinga2a" { endpoints = [ "icinga2a" ] } object Zone "icinga2b" { endpoints = [ "icinga2b" ] parent = "icinga2a" } /* * Global zone for templates */ object Zone "global-templates" { global = true }
Luo hakemistot masterille
sudo mkdir /etc/icinga2/zones.d/icinga2a sudo mkdir /etc/icinga2/zones.d/icinga2b sudo mkdir /etc/icinga2/zones.d/global-templates
Kopioi hostsit omalle hakemistoon zones.d alle
sudo mv /etc/icinga2/conf.d/hosts.conf /etc/icinga2/zones.d/icinga2a/
Kopioi sitten loput global-templates hakemistoon
sudo mv /etc/icinga2/conf.d/* /etc/icinga2/zones.d/global-templates
Luo sitten satellite hosteille hakemistot
sudo nano /etc/icinga2/zones.d/icinga2b/hosts.conf
Luo seuraavaksi cluster hakemisto /etc/icinga2 hakemiston alle
sudo mkdir /etc/icinga2/cluster
Luo hakemistoon icinga2a.conf tiedosto
/* * cluster health checks * icinga2a as master node [x] * icinga2b as a Satellite node */ object Host "icinga2a" { display_name = "Health Checks on icinga2a" address = "192.168.1.2" check_command = "hostalive" } object Host "icinga2b" { display_name = "icinga2b" address = "192.168.1.3" check_command = "hostalive" } object Service "cluster" { check_command = "cluster" check_interval = 5s retry_interval = 1s host_name = "icinga2a" } object Service "icinga" { check_command = "icinga" max_check_attempts = 3 check_interval = 60s retry_interval = 30s host_name = "icinga2a" } /* check if checker zone is connected */ object Service "cluster-zone-checker" { check_command = "cluster-zone" check_interval = 5s retry_interval = 1s vars.cluster_zone = "icinga2b" host_name = "icinga2a" }
Muokkaa /etc/icinga2/icinga2.conf tiedostosta ja kommentoi seuraava rivi
# include_recursive "conf.d"
Tarkista konfiguraatio ja lataa uudelleen ne
sudo service icinga2 checkconfig sudo service icinga2 reload
Varmista palomuurista että kaikki icinga satellitet voi kuunnella TCP 5665 porttia.
Toinen masteri (HA)
Vielä kokeellinen...
Asenna masteri kuten ensimmäisenkin masterin Masterin asennus
Satellite asennus ja konfigurointi
Asenna ensin tämän ohjeen mukaan icinga2 ilman että teet muutoksia masterin tiedostoihin. Palaa sitten tänne ohjeeseen takaisin.
Varmista että /etc/icinga2/features-enabled/api.conf tiedostossa on... (Lisää ja käynnistä icinga2 uudelleen jos ei ole)
accept_config = true accept_commands = true
Tämä hakee zone nimesi ja global-templatet master palvelimelta.
Varmista constrants.conf tiedostossa että on oikea satellite nimi.
Tarkista seuraavaksi /etc/icinga2/zones.conf tiedostossa on oikein konfiguraatio
object Endpoint "icinga2a" { host = "192.168.1.2" port = "" } object Zone "master" { endpoints = [ "icinga2a" ] } object Endpoint "icinga2b" { } object Zone "icinga2b" { //this is the local node = "icinga2b" endpoints = [ "icinga2b" ] parent = "master" }
Lisää alla oleva lisäksi tähän tiedostoon
/* * Global zone for templates */ object Zone "global-templates" { global = true }
Luo /etc/icinga2/cluster/icinga2b.conf tiedosto icinga2b palvelimelle ja lisää tiedostoon
object Host "icinga2b" { display_name = "Health Checks on icinga2b" address = "192.168.1.3" check_command = "hostalive" } object Service "cluster" { check_command = "cluster" check_interval = 5s retry_interval = 1s host_name = "icinga2b" }
Avaa /etc/icinga2/icinga2.conf tiedosto ja kommentoi conf.d include pois ja lisää cluster directory
# include_recursive "conf.d" include_recursive "cluster"
Pysäytä icinga2
sudo service icinga2 stop
Määritä hakemiston käyttöoikeus icinga2:n käyttäjätilille joka meillä nagios
sudo chown -R nagios:nagios /etc/icinga2
Palaa takaisin master palvelimelle ja kopioi icinga2.state hakemisto ja siirrä se satellite palvelimille
scp /var/lib/icinga2/icinga2.state <username>@192.168.1.3:/home/<username>
Palaa nyt satellitelle ja siirrä icinga2.state tiedosto /var/lib/icinga2 hakemistoon
sudo mv /home/<username>/icinga2.state /var/lib/icinga2/
Käynnistä satellitessa icinga2
sudo service icinga2 start
Tarkista toiminta
Tarkistetan että synkronointi toimii masterilta satelliten välillä.
Tarkista synkronoinnin tila lokeista /var/log/icinga/icinga2.log
Satellitesta tiedostot global-templates hakemistosta pitäisi tulla /var/lib/icinga2/api/zones/global-templates hakemistoon satellitelle.
Jos sait virheilmoituksen, ole hyvä ja TARKISTA kaikki konfiguraatiot että ovat täysin samanlain, isot ja pienkirjaimet mukaan lukien.
Käyttäminen
Erilaisia käyttöohjeita oman kokemukseni mukaan. Nämä ovat yksi tapa käyttää tätä icingaa joten ole yhteydessä jos keksit jonkin paremman :)
Clientin lisäys nyt satelliteen
Tämä ohjeella käytät satellite icinga2 palvelinta monitoiressa clienttia.
Liitä clientti normaalisti masteriin ohjeen mukaisesti
Jätä kuitenkin zoneiden masterille tekemiseen ja palaa tähän ohjeeseen.
Luo zonet masteriin ja satelliteen (siihen mikä monitoroi riittää), /etc/icinga2/zones.conf tiedostoon kuten tekisit sen masterille, kuitenkin niin että parent on satellite. Esimerkki:
... object Endpoint "icinga2client" { host = "192.168.1.4" } object Zone "icinga2client" { endpoints = [ "icinga2client" ] parent = "icinga2b" }
Mene masteterille ja sieltä avaa seuraava tiedosto
sudo nano /etc/icinga2/zones.d/icinga2b/hosts.conf
ja lisää tiedot palvelimesta
object Host "icinga2client" { import "generic-host" address = "192.168.1.4" vars.os = "Linux" vars.remote_client = "icinga2client" /* host specific check arguments */ vars.users_wgreater = 10 vars.users_cgreater = 20 /* Define notification mail attributes for notification apply rules in `notifications.conf`. */ vars.notification["mail"] = { /* The UserGroup `icingaadmins` is defined in `users.conf`. */ groups = [ "icingaadmins" ] } }
Tallenna ja käynnistä icinga2 molemmista palvelimista uudelleen.
Troubleshooting
critical/icinga-app: Another instance of Icinga already running with PID
- Asenna 2 2.4.10 tai uudempi versio korjaa tämän ongelman
Distribution ongelmat
Jos satellite ei suostu enään käynnistymään konfiguroinnin takia uudelleen, poista kaikki tiedostot seuraavista hakemistoista satellitesta. Uudelleenkäynnistyksen jälkeen se lataa uudelleen tiedostot masterilta.
sudo rm -R /var/lib/icinga2/api/zones/global-templates/_etc/ sudo rm -R /var/lib/icinga2/api/zones/icingab/_etc/* sudo service icinga2 restart
Lähteitä ja linkkejä ohjeisiin
https://wiki.icinga.org/display/howtos/Icinga2+Distributed+Cluster+Install+with+CentOS+6
https://www.olindata.com/blog/2015/03/monitoring-remote-systems-icinga-2
http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/plugin-check-commands
http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/distributed-monitoring