Icinga2
Icinga2 on Nagioksen tapainen OpenSource monitorintiohjelma. 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.
Järjestelmän vaatimukset täältä: https://wiki.icinga.org/display/howtos/System+Requirements
Icinga vaatii lisäksi verkosta portin 80, 443 (HTTP) ja 5665 (Icinga2) että ovat auki palomuurista Icingaan.
Sisällysluettelo
Masterin asennus ja konfigurointi
Asenna vaaditut paketit
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”
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.
Konfigurointi
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)
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
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
Luo masterilla ensin avain asiakkaan CN:n eli domain nimellä
icinga2 pki ticket --cn 'client1.example.org'
Kopioi tulostuva generoitu avain talteen.
Mene clientille
Lisää APT key
wget -O - http://packages.icinga.org/icinga.key | apt-key add -
Lisää source.listiin:
Ubuntu: http://packages.icinga.org/ubuntu/
Debian: http://packages.icinga.org/debian/
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'):
Tämän jälkeen muuta masterin konfiguraatiota:
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
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 }
Tällä mahdollistat palveluiden haun etä icingasta.
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
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
mkdir -p /etc/icingaweb2/modules/graphite cp -rv sample-config/icinga2/* /etc/icingaweb2/modules/graphite
Muuta oikeudet
chown -R root:icingaweb2 /etc/icingaweb2/modules/graphite 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
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