Mainos / Advertisement:

Icinga2

From Taisto
Jump to navigation Jump to search

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.

Icinga2 distributed roles.png

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 = "[email protected]"
}

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.

Icinga2 distributed scenarios master clients.png

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 [email protected] 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.

Icinga2 distributed roles.png


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

Mainos / Advertisement: