Innhold
- 1 Introduksjon
- 2 Komponenter og arkitektur
- 3 Installasjon
- 3.1 Distribusjon av programvare: source, rpm, deb?
- 3.2 Programvare avhengigheter
- 3.3 Installasjon av database
- 3.4 Installasjon av sentral server
- 3.5 Installasjon av distribuert / proxy komponenter
- 3.6 Installasjon av webkonsoll og API
- 3.7 Installasjon av native agenter
- 3.8 Installasjon av SNMP agenter
- 3.9 Installasjon av IPMI agenter
- 3.10 Installasjon av add-ons / plugins
- 4 Konfigurasjon
- 4.1 Konfigurasjon av distribuert overvåking
- 4.2 Konfigurasjon av HA løsning
- 4.3 Konfigurasjonsoversikt
- 4.4 Konfigurasjon av alarmer, triggers, osv.
- 4.5 Webkonsoll konfigurasjon
- 4.6 Intern konfigurasjon (ldap parametere, database, osv)
- 4.7 Konfigurasjon av roller / grupper / tilganger via webkonsoll
- 4.8 Konfigurasjon av roller / grupper / tilganger via API
- 4.9 Auto-discovery
- 4.10 Templates
- 4.11 Import / eksport av konfigurasjon.
- 4.12 SELinux
- 5 Tilgangskontroll
- 6 Sikkerhet
- 6.1 Brukere og rettigheter som trenges under installasjon
- 6.2 Brukere og rettigheter som trenges under innhenting av data
- 6.3 Autentisering mellom komponenter
- 6.4 Kryptering av trafikk mellom komponenter
- 6.5 Kryptering av trafikk under innhenting av data
- 6.6 API tilgangskontroll
- 6.7 Integrasjon mot andre systemer
- 6.8 Aktive / passiv sjekk
- 6.9 Backup
- 7 Datasamling
- 7.1 Passiv sjekk
- 7.2 Via native agenter
- 7.3 Via SNMP
- 7.4 Via IPMI
- 7.5 Via ICMP
- 7.6 Via port sjekk
- 7.7 Via eksterne plugins, ssh, powershell, osv
- 7.8 Via java/JMX
- 7.9 Sjekk av web sider / tjenester / applikasjoner
- 7.10 Sjekk av databaser
- 7.11 Hente data fra andre overvåkingssystemer, Scom, SSCM, vcops
- 7.12 Data fra virtuelle løsninger
- 8 Visualisering / rapportering
- 9 Feilhåndtering
- 10 Vurdering
1 Introduksjon
Icinga er et free og opensource rammeverk for overvåking og lisensiert under GPLv2. Det er to versjoner av Icinga. Icinga 1 er forket av Nagios i 2009 grunnet stor misnøye med måten Nagios Core kodebasen ble styrt og treg innføring av nye funksjonaliteter. Icinga 2 er utviklet i C++ fra bunn av. Icinga 2 er rask, kraftig og enklere å utvide. Icinga 2 er multi-thread basert. Dette gjør at Icinga 2 yter mye bedre enn Icinga 1. Samtidig skalerer Icinga 2 bedre enn Icinga 1.
Både Icinga 1 og Icinga 2 er under stadig utvikling, Icinga community er veldig aktiv og kommer stadig med feilfikser og nye funksjonaliteter.
Nyeste stabil versjonen til Icinga 1 er 1.11, ble sluppet ut 27.aug.2014.
Nyeste stabil versjonen til Icinga 2 er 2.1, ble sluppet ut 29.aug.2014.
Både Icinga 1 og Icinga 2 er kompatibel med Nagios plugins og utvidelser.
Support/kommunikasjonskanaler: blog, wiki, irc, forum, epostlister. Man har mulighet til å ta kontakt med miljøets utviklere gjennom irc kanalen. Ved behov av kommersielt support og kursing så er det flere selskaper (blant annet Netways) som tilbyr det.
Selskaper/organisasjoner som bruker Icinga i produksjon per i dag:
- CERN (3000 enheter, 100000 sjekker),
- Audi (10000+ enheter, 50000 tjenester)
- Muller (10000 enheter, 112000 tjenester)
- SAS automative (6000 enheter, 60000 tjenester)
- Hyves (3500 enheter, 80000 tjenester)
- MCGill University (6000+ enheter, 16000+ tjenester)
- Europian Commission,
Icinga 2 er installert og testet for denne vurderingen.
2 Komponenter og arkitektur
Icinga 2 består av flere komponenter. Komponentene kan enkelt aktiveres og deaktiveres ved behov. Icinga 2 lagrer sine data i en database. Mysql og postgresql er støttet som backend database server. Det finnes en enkel CGI basert web grensesnitt som heter Classic UI. Classic UI ligner på web-grensesnitt som følger med Nagios Core og tilbyr et tradisjonelt utsende. Det finnes en rpm pakke for Classic UI installasjon. Classic UI leser to statusdata filer for å vise status informasjon om maskiner og tjenester. Det er en ineffektiv måte å hente status data pga. disk i/o belasting. Derfor egner ikke Classic UI for miljøer hvor man trenger distribuert overvåking.
Icinga Web grensesnittet derimot er en fritt-stående software, utviklet i Php5/Agavi rammeverk. Icinga Web er et moderne, fleksible og utvidbare web-grensesnitt og kan tilpasses etter behov. Det kreves en database for Icinga Web. Icinga Web kan hente status og ytelses data direkte fra databasen til Icinga2 instans. Icinga Web kan kommunisere med flere Icinga Core instanser så lenge Icinga Core instanser lagrer sine data på samme databasen. På den måten kan man distribuere overvåking til flere instanser og tilrettelegge overvåking av store, komplekse IT miljøer. Selskaper/organisasjoner som bruker Icinga i produksjon bruker Icinga Web som frontend. Icinga Web/Icinga2 skalerer til overvåking av over 10000 enheter og 50000 tjenester. Se på Icinga in action for hvordan Icinga er satt opp i Audi.
SLA rapportering funksjonalitet gis av en tredjeparts applikasjon server som heter JasperServer. Applikasjonen kan integreres med Icinga Web grensesnittet hva. «SOAP provider».
Icinga community har utviklet enda et web-grensesnitt som heter Icinga Web 2. Den er i beta versjon og ikke anbefalt til å tas i bruk i produksjons miljøer enda. Det er et enkel og lettvekt grensesnitt som gir enda bedre muligheter til å utvide. Det er rask og bedre egnet for nettbrett og smart telefoner.
2.1 Icinga 2 komponenter
Kort beskrivelse av komponenter som Icinga 2 består av:
Api: er ansvarlig for kommunikasjonen mellom nodene i en klynge løsning, synker konfigurasjon filene mellom klynge noder, sikrer kommunikasjonen vha. ssl. I tilfellet master noden feiler i en ha løsning, så er det api komponenten på nodene i klyngen som bestemmer en ny master node.
Checker: er ansvarlig for planlegging av aktive sjekker.
Compat, CompatLog: sørger for bakvendt kompatibilitet med Icinga 1, skriver status data object.cache og icinga.log i Icinga 1.x format.
Command: oppretter en command pipe slik at man kan sende kommandoer fra web-grensesnitt og tredjeparts applikasjoner.
Perfdata: ytelse data fra sjekk resultater skrives til filer som kan brukes for integrasjoner mot graphing verktøys som inGraph, PNP4nagios osv.
Statusdata: skriver status data til to filer en for maskiner og en for tjenester. Man kan definere hvor ofte statusdata filene Icinga 2 skal oppdatere. Integrasjon mot Icinga 2 med Statusdata grensesnittet bruker mer CPU ressurser og disk i/o og skalerer ikke så bra. Classic UI bruker disse filene for å vise status om maskiner og tjenester.
Livestatus: skriver ikke status og historiske data til filer. En binær modul som loades med Icinga 2 prosess sørger for at status og ytelse data kan hentes etter forespørsel direkte fra memory via en tcp socket. Integrasjon mot Icinga 2 med Livestatus grensesnittet skalerer mye bedre.
Ido-mysql: gir støtte for mysql server, er ansvarlig for innhenting og oppdatering av databasen.
Ido-pgsql: gir støtte for postgresql server, er ansvarlig for innhenting og oppdatering av databasen.
Mainlog, debuglog, syslog: aktiverer logging.
Graphite: tilrettelegger for Graphite integrasjon, skriver ytelse data til Graphite Carbon Cache tcp socket.
Notification: aktiverer varsling funksjonalitet, må aktiveres på master noden i klyngen.
2.3 Icinga Web komponent oversikt
Kort beskrivelse av Icinga Web komponenter:
Command Control Interface: muliggjør sending av kommandoer (for eks. re-sjekk, aktivering/deaktivering av aktiv/passiv sjekker), sending av varslinger osv. til Icinga2.
Doctrine abstraction layer: brukes for å få tak i overvåking data lagret i IDO databasen.
Rest api: presenterer data samlet fra IDO databasen i JSON og XML format. Tredjepart utvidelser bruker Rest-api for å hente overvåkings data.
2.4 Utvidelser
Det er kun Business Process Addon og inGraph som er testet.
2.4.1 Business process addon
Icinga/Nagios overvåker enkeltkomponenter som applikasjoner, harddisker, databaser eller DNS-servere. Man trenger å overvåke IT tjenester som består av flere av disse enkeltkomponentene. Business Process Addon er et verktøy for å utforme/overvåke IT tjenester.
2.4.2 Lconf
Lconf er en Ldap basert konfigurasjonstyring verktøy for Icinga 1 og Icinga 2.
2.4.3 HeatMap
HeatMap er et graphing verktøy for å gi i sanntid oversikt over temperaturutviklingen i en datasenter.
2.4.4 EventDB
EventDB er et verktøy for å håndtere hendelser baserte data fra som for eksempel SNMP traps, eposter, logfiler osv.
2.4.5 NoMA
NoMA er utviklet for å administrere varslinger, varsling eskalering og administrasjon av kontakter vha. en web grensesnitt.
2.4.6 inGraph
inGraph er et verktøy for graphing som PNP4Nagios, Graphite og NagiosGraph.
2.4.8 SLA Rapportering
SLA rapportering støte i Icinga gis vha. Jasper rapporterings server applikasjonen.
2.5 Plugins
I tillegg til Nagios Plugins, kan det man benytte følgene plugins som er utviklet av Netways:
3 Installasjon
For mer detaljert info om installasjon & konfigurasjon, se på linken.
Web siden til test installasjon. Man kan bruke uio kontoen for å logge på.
3.1 Distribusjon av programvare: source, rpm, deb?
Det finnes en offisielt Icinga repository. Her kan man finne rpm pakker for RHEL 5, 6, og 7 blant annet. Etter registrering av Icinga repositorien i yum.repos.d, kan men enkelt installere Icinga 2, Icinga Classic UI, Icinga Web osv.
3.2 Programvare avhengigheter
3.2.1 Icinga2
Icinga 2 installasjonen er avhengig av «icinga2-ido-pgsql» for database kommunikasjon.
3.2.2 Icinga-web
Httpd, php, php-commond, php-gd, php-ldap, php-pdo, php-pear, php-xml kreves for Icinga-web. Icinga-web installasjonen er avhengig av icinga-web-pgsql for database kommunikasjon.
3.2.3 Ipmi
Ipmi agent installasjon krever perl-ipc-run.
3.2.4 inGraph
inGraph installasjonen krever php, python, SQLAlchemy, python database driver (postgresql-python)
3.3 Installasjon av database
Icinga 2 støtter både mysql og postgresql database servere. Postgresql er blitt valgt.
3.4 Installasjon av sentral server
Etter installasjon av "icinga2" pakken, kan man aktivere/deaktivere komponenter ved å bruke to scripter som følger med installasjonen:
- icinga2-enable-feature
- icinga2-disable-feature
Dagens setup består av en master zone og en satellitt zone (proxy zone):
«ido», «api» og «notification» komponentene må aktiveres i sentral/master noden.
«Checker», «statusdata», «perfdata» «command» og «livestatus» komponentene er aktivert i master noden også ifm. utføring av sjekker og integrasjoner mot andre utvidelser.
3.5 Installasjon av distribuert / proxy komponenter
Etter installasjon av "icinga2" pakken, må "api" komponenten aktiveres på satellitt/proxy noden.
Andre komponentene kan aktiveres på satellitt/proxy noden ved behov.
3.6 Installasjon av webkonsoll og API
Det finnes rpm pakker i Icinga offisiell repository som brukes for å installere web konsollet og api. Installasjon av «icinga-web» og «icinga-web-pgsql» er intuitiv. Icinga-web er installert på master noden i klyngen.
3.7 Installasjon av native agenter
Det finnes native agenter for Linux/Unix, Windows og iOS systemer. Nrpe agenten kan brukes for å overvåke Linux/Unix og iOS systemer. Nsclient++ kan brukes for å overvåke Windows systemer.
3.7.1 NRPE
NRPE agenten installeres på alle maskiner som skal overvåkes. Installasjonen er vha. en rpm pakke. Nrpe agenten kjøres som en tjeneste på maskiner.
På overvåking servere trenger man å installere en Nagios plugins som heter "check_nrpe".
3.7.2 SSH
Eksekvering av kommandoer gjennom ssh, utføres av check_by_ssh Nagios plugin. Det finnes en rpm pakke som kan installeres lett på overvåking servere.
Nagios plugin som trenges for å overvåke lokal ressurser på remote maskiner, må være installert på maskinen som skal overvåkes.
3.7.3 Nsclient++
Nsclient++ er en agent for Windows maskiner og det finnes en msi pakke for installasjon.
3.8 Installasjon av SNMP agenter
Snmp sjekker utføres av «check_snmp» Nagios plugin. Det finnes en rpm pakke som kan installeres lett på overvåking servere.
3.9 Installasjon av IPMI agenter
Det finnes en rpm pakke som heter freeipmi og det er avhengig av perl-IPC-Run.noarch pakken.
3.10 Installasjon av add-ons / plugins
3.10.1 Add-ons
Business process addon
Det finnes ikke en rpm pakke for utvidelsen. Det kreves kompilering fra kildekoden. Icinga community utvikler en nativ Business prosess funksjonalitet i Icinga2. For mer info: https://dev.icinga.org/issues/4633
Graphite
Det finnes rpm pakker for Graphite installasjonen.
inGraph
Det finnes ikke en rpm pakke for inGraph, installeres vha. «python setup.py install».
3.10.2 Plugins
Icinga2 er kompatibel med Nagios plugins. Man kan installere Nagios plugins etter overvåkings behov. Det finnes rpm pakker for Nagios plugins.
4 Konfigurasjon
Icinga 2 benytter konfigurasjonsfiler som Nagios men konfigurasjon av Icinga 2 er objekt basert og regel-drevet. Objektene kan ha skreddersydde attributter som kan brukes for å gruppere, anvende regler, filetere osv.
Man kan bruke maler for å organisere og lettere styre objekter. Man kan definere generiske attributter som kan arves av og overstyres av objekter som importerer disse malene.
Som best-praksis oppretter man først maler for maskiner, tjenester og tjeneste sjekker (CheckCommand) som inneholder generiske attributter. Etterpå kan maskiner/tjenester defineres ved å importere malene og grupperes under maskin, tjeneste grupper.
Nagios konfigurasjon filer er kompatible med Icinga 1 men ikke Icinga 2. Det finnes en migrering script som kan oversette eksisterende Nagios konfigurasjon filer til Icinga 2 konfigurasjon filer. Migrering scriptet er ikke testet.
4.1 Konfigurasjon av distribuert overvåking
Man oppretter en master og en satellitt/proxy zone. Kommunikasjonen mellom nodene i master og satellitt/proxy zonen krypteres i Icinga 2. Kommunikasjonen kan initieres fra satellitt/proxy noden. Jeg opprettet en Certificat Authority (CA) på master noden vha. en script som følger med installasjonen. I et produksjonsmiljø bør man ha CA på en annen server. Etter at CA er opprettet, utsteder man sertifikater for både master noden og satellitt/proxy noden. Api komponenten konfigureres for å sette opp kommunikasjonen.
Man må sørge for at alle noder har samme status derfor kopierer man /var/lib/icinga2/icinga2.state filen fra master serveren til andre noder. Icinga instansen på alle node må stoppes før kopiering av status filen.
Deretter oppretter man oppsettmappestrukturen i master zonen (config master node). Icinga api komponenten tar seg av oppgaven med å synke konfigurasjonsfiler mellom nodene. Man kan kun ha en konfigurasjon master i en zone.
I tillegg til "api" komponenten, må "checker" komponenten aktiveres hvis man skal utføre sjekker vha. satellitt/proxy noden.
For detaljert info om konfigurasjon av distribuert overvåking.
4.2 Konfigurasjon av HA løsning
Man kan definere en master zone med flere noder. Man kan samtidig ha flere proxy zoner med flere noder knyttet til master zonen. I tillegg til "api" komponenten må man ha "ido" komponenten aktivert på alle noder i master zonen. I tilfellet master noden feiler i en ha løsning, så er det "api" komponenten på nodene i master zonen som bestemmer en ny master node. Kommunikasjonen mot databasen gjenopprettes på nye master noden.
HA løsning er ikke testet for denne vurderingen.
4.3 Konfigurasjonsoversikt
"apply" regel:
4.3.1 Regel-drevet konfigurasjon
Som best-practise, defineres først en generisk template for tjenester/maskiner. Man kan etterpå bruke «apply» for å opprette og assosiere tjenester til de relevante maskinene basert på regelsett definert av «assign where», «ignore where», «assign match» og «ignore match» setninger som vist under:
"assign where","ignore where", "assign match" eksempel, "ignore match" eksempel.
4.3.2 Maskin objekt
Maskin objekter kan ha følgende attributer for å definere maskiner:
- display_name,
- address, address6 for (ipv4 og ip6),
- groups,
- vars, (for å definere skreddersydde attributer)
- check_command (påkrevd),
- check_period (i hvilket tidsrom maskinen skal sjekkes),
- max_check_attempts (hvor mange ganger maskinen skal sjekkes før maskinen endrer tilstand til "HARD". Se på Maskin tilstander),
- check_interval (hvor ofte maskinen skal sjekkes når maskinen er i "HARD" tilstand),
- retry_interval (hvor ofte maskinen skal sjekkes når maskinen er i "SOFT" tilstand Se på Maskin tilstander),
- ...
For full oversikt over attributer, se på Maskin objekt.
4.3.3 Tjeneste objekt
Tjeneste objekter kan ha følgende attributer for å definere tjenester:
- display_name,
- host_name (påkrevd, hvilket maskin tjenesten hører til),
- name (påkrevd),
- groups,
- vars, (for å definere skreddersydde attributer)
- check_command (påkrevd),
- check_period (i hvilket tidsrom maskinen skal sjekkes),
- max_check_attempts (hvor mange ganger tjenesten skal sjekkes før tjenesten endrer tilstand til "HARD". Se på Tjeneste tilstander),
- check_interval (hvor ofte tjenesten skal sjekkes når tjenesten er i "HARD" tilstand),
- retry_interval (hvor ofte tjenesten skal sjekkes når tjenesten er i "SOFT" tilstand Se på Tjeneste tilstander),
- ...
For full oversikt over attributer, se på Tjeneste objekt.
4.3.4 CheckCommand objekt
CheckCommand objekter definerer hvilket kommandoer som skal utføres og hvordan de skal utføres på maskiner/tjenester.
Se på CheckCommand objekt for mer informasjon.
4.3.5 TimePeriod objekt
Man kan definere TimePeriod objekter for å definere når maskiner/tjenester sjekkes og varslinger skal sendes.
Les mer om TimePeriod objekt.
4.3.6 ScheduledDowntime objekt
Man kan definere planlagte, gjentagende nedetider vha. ScheduledDowntime objekter. SLA rapportering verkøy skal ta høyde for planlagte nedetider når SLA rapporter beregnes.
Les mer om ScheduledDowntime objekt.
4.3.7 Andre objekter
Det er flere andre objekter som kan brukes for å konfigurere forskjellige aspekter av overvåkingsystemet.
Se på Icinga 2 objekter, for full oversikt.
4.4 Konfigurasjon av alarmer, triggers, osv.
Objekter som brukes for å sette opp "notifications"
- TimePeriod
- Notifications
- User, UserGroups
- Host
- Service
- NotificationCommand
Notification komponenten må være aktivert på master noden i klyngen.
Det er mange måter å sende varslinger som for eks. via. e-post, XMPP, Irc, Twitter osv. Icinga 2 er avhengig av eksterne scripter for å utføre utsendelse av varslinger.
4.5 Webkonsoll konfigurasjon
Konfigurasjonen kan utføres vha. tekst basert konfigurasjonsfiler.
4.6 Intern konfigurasjon (ldap parametere, database, osv)
Database og ldap kan konfigureres vha. en tekst basert konfigurasjonsfil.
For å lese mer, se på database og ldap konfigurasjon.
4.7 Konfigurasjon av roller / grupper / tilganger via webkonsoll
Brukere og grupper må opprettes/administreres i både i Icinga 2 konfigurasjonsfiler og i Icinga Web databasen vha. Icinga Web konsollet.
Man kan bruke api-en til Cerebrum for å importere liste over brukere/grupper som er relevant for tilgangstyring.
Man kan enkelt generere konfigurasjonsfiler for Icinga 2, som inneholder definisjon av brukere og brukergrupper, vha. en egen utviklet script som parser/bearbeider bruker/gruppe lister importert fra Cerebrum.
Samtidig kan man utvikle en annen script som oppretter brukere og brukergrupper automatisk på Icinga Web databasen. Brukermedlemskap til brukergrupper kan håndteres av samme script. Brukergruppene kan brukes for å administrere roller og tilganger.
Man har mulighet til å administrere roller/grupper og tilganger definert i Icinga Web vha. web konsollet manuelt. Det er bedre å bruke egen utviklet scripter som automatiserer administrasjon.
4.8 Konfigurasjon av roller / grupper / tilganger via API
Det finnes ikke noe api for å konfigurere roller og grupper i Icinga 2. Icinga Community har planer om å utvikle an api i fremtiden som gir dette funksjonalitet.
4.9 Auto-discovery
Icinga har ikke innebygd auto-discovery støtte. Icinga community har planer å utviklet funksjonaliteten i fremtiden.
4.10 Templates
Man kan opprette maler for maskiner, tjenester, varslinger og kommandoer. Se på Konfigurasjons oversikt kapittel.
4.11 Import / eksport av konfigurasjon.
Konfigurasjon av Icinga 2 er tekst fil basert. Derfor er det enkelt å importere/eksportere.
Icinga web lagrer webkonsoll-spesifikk oppsett i databasen. Aksess til databasen, integrasjoner mot andre utvideler osv, kontroleres vha. konfigurasjonsfiler.
4.12 SELinux
Man trenger å generere unntaksregler i SElinux for å bøte på problemer med integrasjon mot Business process utvidelsen, kommandoeksekvering fra Icinga Web konsollet osv.
5 Tilgangskontroll
Det er ikke innebygd tilgangskontroll for Icinga 2 konfigurasjonsfiler. Apache & ldap_module kan brukes for autentisering/authorisering og SVN eller git kan brukes for versjon kontrol.
Icinga Web konsollet gir tilgangskontroll mulighet. Tilgangskontroll er basert på
- roller,
- brukergrupper,
- maskiner, tjenester
- maskingrupper, tjenestegrupper,
- regex basert kontroll.
En brukergruppe/rolle kan arve rettigheter som gjelder for overordende brukergrupper. Rettigheter kan anvendes til både brukere og brukergrupper. En bruker kan være medlem av flere grupper.
5.1 Kobling mot ldap/ad for autentisering
Icinga Web kan integreres med Ldap/AD for autentisering. Icinga Web konsollet i testmiljøet bruker uio ldap løsning for autentisering.
5.2 Kobling mot Kerberos for autentisering/Single sign on (SSO)
I tillegg til Ldap autentisering, kan Icinga Web konfigureres til å bruke Microsoft AD/Kerberos for autentisering/SSO.
Følgende kreves for dette oppsettet:
- Apache (med Kerberos module)
- Key Distribution Center (KDC i AD)
- Samba
- Linux maskinen hvor Icinga-Web kjøres må meldes inn i AD.
- Man trenger å opprette en Service Pricipal Name (SPN) og knytte den til enten linux maskinkontoen eller en tjenestekonto i AD opprettet for dette formålet.
Man trenger å opprette en tjenestekonto i AD for REST-API tilgang.
Kerberos autentisering/SSO er ikke testet for denne vurderingen.
Les mer om Kerberos oppsett for autentisering og SSO.
5.3 Kobling mot ldap/ad for autorisering
Ldap integrasjonen kun gir autentisering funksjonalitet, ikke autorisering.
5.4 Grupper av ressurser (maskiner,osv)
Maskiner kan grupperes i maskin grupper i Icinga 2. Disse gruppene er tilgjengelig i Icinga Web for autorisering.
5.5 Grupper av tjenester
Tjenestene kan grupperes i tjeneste grupper i Icinga 2. Disse gruppene er tilgjengelig i Icinga Web for autorisering.
5.6 Grupper av brukere
Man kan opprette brukergrupper både i Icinga 2 og Icinga Web.
Brukergruppene i Icinga Web kan brukes for autorisering.
5.7 Assosiering mellom grupper
I Icinga 2 konfigurasjonen:
Man kan assosiere en tjeneste og maskin grupper vha. regel-drevet konfigurasjon. Man kan ikke assosiere brukergrupper med maskin eller tjeneste grupper.
I Icinga Web konfigurasjonen:
Man kan assosiere brukergrupper med maskin eller tjeneste grupper for autorisering.
6 Sikkerhet
6.1 Brukere og rettigheter som trenges under installasjon
Installasjon av Icinga2 og Icinga Web utføres under root kontekst.
6.2 Brukere og rettigheter som trenges under innhenting av data
Alle sjekker av nettverk tjenester som kjøres på overvåking serveren utføres i icinga bruker kontekst.
NRPE daemon på maskiner som skal overvåkes kjøres på en bruker kontekst som heter "nrpe". Alle sjekker som utføres av NRPE daemon kjøres i nrpe bruker kontekst.
6.3 Autentisering mellom komponenter
PKI basert autentisering mellom api komponenter i Icinga noder i en klyngeløsning.
6.4 Kryptering av trafikk mellom komponenter
Api komponenten i Icinga 2 sørger for at kommunikasjonen mellom Icinga noder er kryptert.
Les mer om CA innstillinger i klynge løsninger.
6.5 Kryptering av trafikk under innhenting av data
Kryptering kan aktiveres når man bruker NRPE / NSCLIENT++ agenter for å hente overvåkings data.
6.6 API tilgangskontroll
Api tilgangskontroll styres fra Icinga Web konsollet. Man oppretter en brukerkonto som gir tilgang til Web api adator. Autentiseringsmetoden for denne kontoen settes til "auth_key" og en nøkkel defineres samtidig. Rettighetene til api brukeren styres på samme måte som en vannlig brukerkonto i Icinga Web.
Se på tilgangskontroll kapittelet. Autorisering vha. "auth_key" i forespørsel eller cookier.
6.7 Integrasjon mot andre systemer
Integrasjon mot andre systemer kan gjennomføres vha.
- REST-API (Icinga Web),
- Perfdata komponent (Icinga 2)
- Statusdata komponent (Icinga 2)
- Livestatus komponent (Icinga 2)
- Graphite komponenet (Icinga 2)
6.8 Aktive / passiv sjekk
Aktive sjekk
NRPE og Nsclient++ har ssl støtte. Icinga 2 støtter også innhenting av data vha. SNMPv3 som er sikrere enn SNMPv2.
Passiv sjekk
NSCA-NG
Nsca-ng bruker TLS kryptering og shared-secret autentisering. Kommunikasjonen er kryptert basert på krypteringskonfigurasjonen i nsca-ng.cfg og send_nsca.cfg. Nsca-ng daemon skal validere og dekryptere dataen og sende kommandoen videre til Icinga 2 command pipe.
6.9 Backup
Dagens backup regimet for databaser og maskiner kan anvendes her også. Konfigurasjonensfiler kan samles/administreres vha. Nvilheim/filloger.
7 Datasamling
7.1 Passiv sjekk
Det finnes to måter å utføre passive sjekker:
- nsca-ng (klient/server applikasjon)
- snmptrap
NSCA-NG
Man installerer en NSCA-NG daemon på en av de overvåkingserver nodene i klynge løsningen og en klient applikasjon, send_nsca på maskinen som skal overvåkes vha. passiv sjekker. NSCA server daemon og klienten autentiserer seg vha. en pre-shared key og trafikken mellom nsca klient og nsca server krypteres vha. TLS.
På klient maskinen kan man fritt utvikle scripter som genererer sjekk resultater i Nagios format, dvs, maskinnavn;tjenestenavn;statuskode;beskrivelse. Sjekk restultanene kan sendes til overvåkingserveren vha. send_nsca klient applikasjonen.
Nsca-ng daemon på overvåking serveren mottar sjekk resultanene og videresender til Icinga 2 gjennom "command pipe" som blir opprettet ved å aktivere command komponenten.
SNMPTRAP
Snmp klienten på maskinen som skal overvåkes konfigureres slik at den sender snmptraper til overvåkingserveren. På overvåkingserveren installerer/konfigurer man snmptrap handler. Trap handler videresender mottatte snmptrap til snmptrap translater. Snmptrap translater bruker en mib database for å oversette snmptraper til Nagios format, maskinnavn;tjenestenavn;statuskode;beskrivelse. Oversatte trap data sendes videre til Icinga 2 gjennom "command pipe" som blir opprettet ved å aktivere command komponenten.
Man må definere maskinen og tjenesten i Icinga 2 for at passiv overvåking skal fungere som det skal.
7.2 Via native agenter
7.2.1 NRPE
Nrpe tjenesten og Nagios plugins må installeres på alle maskiner som skal overvåkes vha. NRPE.
Man må definere i NRPE konfigurasjonsfil hvilket plugin som kan kjøres på maskinen som skal overvåkes vha. NRPE. Icinga 2 "checker" komponenten initierer utføring av sjekker på remote maskin vha. "check_nrpe" plugin installert på overvåking serveren.
Terskel verdiene kan administreres sentralt som vi gjør i dagens Nagios system. Pga. en sikkerhetshull i hvordan nrpe håndterer argumentene som er sendt til remote plugins, må terskel verdiene til sjekker utført av NRPE defineres på maskiner som overvåkes.
For mer info om sikkerhetshullet, se på linken http://seclists.org/fulldisclosure/2014/Apr/240. Man kan tillate kun overvåkingsmaskiner til å utføre sjekker vha. NRPE agent for å bøte på sikkerhet problemet.
Icinga community som nevnt på introduksjon kapittelet utvikler en Icinga 2 agent. Agenten skal ha støtte for kryptering, autentisering og autorisering vha. pki arkitektur. I følge utviklere skal den lanseres sannsynligvis i november i år. Icinga 2 agenten kan brukes i stedet for NRPE for å bøte på sikkerhetsproblemet.
7.2.2 SSH
Icinga Template Library (ITL) har forhåndsdefinerte sjekk maler som kan brukes for å hente tilstand og ytelses data vha. by_ssh plugin. Terskel verdiene kan styres sentralt på overvåking serveren. Sjekker basert på by_ssh er både cpu krevende og ikke skalerbar.
7.2.3 Nsclient++
Konfigurasjonen ligner veldig mye på NRPE. Windows klienten er testet for å hente cpu ytelse, minne forbruk, tjenestesjekk og disk fyllingsdata.
7.3 Via SNMP
Icinga Template Library (ITL) har forhåndsdefinerte sjekk maler som kan brukes for å hente tilstand og ytelses data via. SNMP.
Les mer om icinga snmp sjekk.
7.4 Via IPMI
Ipmi agenten er installert men ikke testet.
7.5 Via ICMP
ICMP sjekker kan enkelt defineres vha. forhåndsdefinerte ping4/ping6 sjekker i ITL.
Les mer om icinga ping sjekk.
7.6 Via port sjekk
Tcp og udp kan sjekkes vha. forhåndsdefinerte sjekker i ITL.
Les mer om icinga tcp port sjekk.
Les mer om icinga udp port sjekk.
7.7 Via eksterne plugins, ssh, powershell, osv
Utføring av sjekker gjennom ssh kan defineres vha. forhåndsdefinerte sjekker i ITL.
Kjøring av powershell scripter kan utføres vha. NSClient++.
7.8 Via java/JMX
Det ble ikke testet. Det finnes mange Nagios plugins som kan brukes for å overvåke JEE server via JMX.
7.9 Sjekk av web sider / tjenester / applikasjoner
Man kan overvåke respons tiden, status, utløpsdato for sertifikater, sjekke inneholde av en side osv.
7.10 Sjekk av databaser
Det ble ikke testet. Det finnes mange Nagios plugins som kan tas i bruk for å sjekke database servere.
7.11 Hente data fra andre overvåkingssystemer, Scom, SSCM, vcops
Integrasjon mot SCOM er ikke testet. Det finnes en "connector" mellom SCOM og Nagios/Icinga.
7.12 Data fra virtuelle løsninger
Icinga kan bruke følgende plugins som er utviklet for Nagios for å overvåke VMware miljøet:
- Check_view_pool
- Check_view_pool_provisions
- Check_vmware_api
- Check_vmware_esx
De to første plugins kan brukes for å overvåke virtuell arbeidsflater.
Check_vmware_api bruker vSphere APi for å overvåke esx hostene og vCenter servere. Man kan overvåke blant annet følgende metrisk for esx hostene, Virtuell maskiner og Datacenter:
cpu, minne, swap, balloning, nettverk, disk io, read/write latency, overordnede host status osv. for en hel liste av metrisk se linken under:
Check_vmware_esx er en fork av check_vmware_api.
I tillegg til det, kan man bruke snmp og ssh for å overvåke esx hostene og vCenter servere.
8 Visualisering / rapportering
I tillegg til Icinga Classic UI, Icinga Web, Icinga Web 2 kan man bruke andre web konsoller som utvikles av andre open-source miljøer som for eksempel:
Icinga Web er installert og testet for denne vurderingen.
Icinga Web nevneverdige egenskaper:
- Live søk
- Icinga logg fil søk
- Filtrering mulighet
- Slideshow/rullerende view mulighet
- Støtte for å sende sammensatt kommandoer til flere hoster/tjenester samtidig. (for eks. aktivere/deaktivere aktiv sjekker, varslinger, "flap detection" osv.)
- Acknowlege med utløpstid.
- Ldap, AD og HTTP basic auth. støtte.
- Tilgangskontroll vha. bruker, maskin, tjenestegrupper og regex baserte regler.
I tillegg til planlagte nedetid oppsett via Icinga 2, kan man enkelt opprette nedetid for flere maskiner og tjenester knyttet til disse maskinene vha. Icinga Web konsollet. Icinga Web har oversikt over planlagte nedetider og nedetider opprettet via web konsollet.
8.1 Varslingsoversikt
Icinga Web konsollet viser tilstander om alle maskiner og tjenester som overvåkes på toppen av siden.
Linker er gruppert i en meny på venstre siden hvor man kan få lett info om
- alle tjeneste/maskin problemer
- tilstand om tjenester/maskiner, tjente grupper/maskin grupper
- historiske data,
- logger ,
Samtidig finnes det linker til installerte utvidelser på menyen
8.2 Detaljerte varslinger
Man kan få mer detaljert info om varslingen som for eks. når sjekken sist utført, ytelse data, om tjenesten er "flapping" osv.
8.3 Grafer / trending
Icinga kan integreres med PNP4Nagios, Graphite, inGraph og NagiosGraph. Under testing ble inGraph installert.
Mer informasjon om integrasjoner mot graphing verktøy kan leses her.
Overvåking av trender kan gjennomføres vha. Graphite. Ytelse data samlet vha. Nagios plugins sendes videre til Graphite gjennom graphite komponenten i Icinga 2. Deretter kan man bruke blant annet innebygte funksjoner i Graphite til å regne ut trender basert på historiske datagrunnlag for ytelsesdata. Man kan også ha beregningslogikken av trender i et eget utviklet script. Resultatet til beregningen kan mates inn til Icinga 2 for videre prosessering.
8.4 Søkemuligheter
I Icinga web konsollet kan man søke etter maskiner, tjenester, maskingrupper og tjeneste grupper.
8.5 Kart funksjonalitet
Icinga Web konsollet har en enkel visning av tilstandskart.
I tillegg til det, kan man installere utvidelser som gir dette funksjonalitet.
Les mer om icinga virtualisering og kart.
8.6 Custom visning
Man har til en vis grad mulighet til å endre visning i web konsollet etter sitt behov. Man kan filterere bort irrelevante maskiner/tjenester i visningsfaner.
8.7 Slideshow muligheter
Icinga Web konsollet har støtte for det. Man kan åpne flere faner som vises i slideshow.
8.8 Tilgang til raw data
Raw data lagres på Icinga 2 databasen. Dessutten, kan ytelse og tilstand data sendes videre til utvidelser som Graphite, inGraph,PNP4Nagios osv. Man kan hente raw data fra både Icinga 2 databasen og databasen til graphing utvidelsene.
Det finnes også andre måter å hente raw data:
- vha. egenutviklet script som henter data fra db.
- vha. livestatus tcp socket.
8.9 Inventar / CMDB
Icinga 2 har ikke inventar / CMDB funksjonalitet.
8.10 Konsoll på mobile enheter
Det finnes flere mobil applikasjoner både for både iOS og Android. De er ikke testet.
I tilleg finnes det en Icinga mobil web grensesnitt som kan konfigureres vha. linken her.
9 Feilhåndtering
9.1 Trigger/Terskel definisjoner
Terskel verdiene til nettverkstjeneste sjekker kan defineres på overvåkingserveren.
Terskel verdiene til aktive sjekker utført av NRPE, by_ssh, SNMP og nsclient++ kan defineres på overvåkingserveren.
Selv om terskel verdiene til sjekker utført av NRPE agent kan defineres på overvåkingserveren sentralt, bør terskel verdiene defineres på maskiner som overvåkes pga. sikkerhetshull nevnt på NRPE kapittelet.
9.2 Triggere som bruker data fra flere kilder før en alarm aktiveres
Se på avhengigheter kapittelet.
9.3 Aggregering av data
Aggregeringslogikk kan defineres i plugins som utfører sjekker. Det finnes ikke en sentral aggregeringslogikk i Icinga 2.
Man kan integrere Icinga 2 mot Graphite ved å aktivere graphite komponenten. Deretter kan man bruke Nagios plugins som for eks. check_graphite, check_graphite.py osv. som er utviklet for å hente tilstand og ytelse data fra Graphite. Disse plugins har aggregeringslogikk. Man kan definere terskel verdier for sjekkene utført av disse plugins og varsle iht. sjekkresultater.
I tillegg til disse plugins, kan man etter behov utvikle sine egne plugins med aggregeringslogikk.
9.4 Avhengigheter
Man kan definere avhengighetsobjekter. Maskin-til-maskin, maskin-til-tjeneste, tjeneste-til-tjeneste og tjeneste-til-maskin avhengigheter kan defineres. Icinga 2 oppretter automatisk en implisitt avhengighet mellom en maskin og tjenester som kjøres på maskinen. Dersom maskinen er nede, sender ikke Icinga unødvendige varsler om tjenestene som kjøres på maskinen.
Maskin-til-maskin avhengigherter er reflektert i tilstandskartet på web grensesnittet.
Her finner man eksempler for avhengighets konfigurasjon.
Her finner man attributer for avhengighets objekt.
9.5 Alvorlighetsgrader
Alvorlighetsgrader er lik Nagios:
- 0 (OK)
- 1 (WARNING)
- 2 (CRITICAL)
- 3 (UNKNOWN)
Maskin og tjeneste tilstander
9.6 Varsling
Varsling håndteres av "Notification" objektet i Icinga 2. "Notification" objektet kan anvendes til maskiner og tjenester.
For mer info om varsling objekt,
9.7 SLA oppfølging
Dette funksjonalitet er avhengig av en tredjeparts (open source) rapportering server som heter JasperReports. Integrasjonen mellom Icinga og JasperReports er avhengig av blant annet en fil som er kun utviklet for mysql database server. Filen definerer en tilgjengelighetsfunksjon for mysql databasen. Derfor kan man ikke ha reporting funksjonalitet så lenge man bruker postgresql som bakend db. Icinga community utvikler en tilsvarende fil for postgresql. Se på utviklings siden.
9.8 Kjøring av kommandoer som svar på alarmer
"EventCommand" objekter defineres for kjøring av kommandoer i tilfellet en maskin eller tjeneste tilstand endrer.
Kommandoer kjøres hvis:
- maskin/tjeneste er i "SOFT" tilstand.
- maskin/tjeneste tilstanden er endret til "HARD" tilstand.
- maskin/tjeneste tilstanden gjenopprettes fra "SOFT/HARD" tilstand til "OK/UP" tilstand.
10 Vurdering
Fordeler
Installasjon/konfigurasjonen av Icigna 2 og Icinga Web er enkelt og kan automatiseres vha. cfengine, puppet osv.
Måten å konfigurere Icinga 2 ligner veldig mye på Nagios konfigurasjonen. Derfor er det enkelt å sette seg inn i. Administrasjon av dagens Nagios konfigurasjon kan enkelt tilpasses/endres i henhold til Icinga 2 konfigurasjon. Man kan tilpasse/skrive om scriptet for Nagios som oppretter maskiner/maskingrupper, tjenester/grupper og kontakter for Icinga 2.
Kryptering av kommunikasjon mellom klynge noder og gjenbruk av Nagios plugins er en fordel. Distribuert overvåking med kryptert kommunikasjon løsning kan tas i bruk i TSD miljøet.
Icinga Web støtter autentisering/sso vha. Kerberos.
NRPE agent og Nagios plugins er allerede installert på alle USIT maskiner som overvåkes. I tillegg til NRPE, utviklet Icinga community en Icinga 2 agent. Agenten skal ha støtte for kryptering, autentisering og autorisering vha. pki arkitektur. I følge utviklere skal den lanseres sannsynligvis i november i år.
Multi-thread basert design lover bedre ytlese.
Modulbasert design gjør det lettere å utvikle/implementere nye funksjonaliteter i løsningen men det kan forårsake konfigurasjonskomplesitet.
Icinga community er veldig aktiv, Icinga 2 og Icinga-Web får stadig nye funksjonaliteter og feilfikser.
Ulemper
Icinga 2 er lansert 16. juni og er ikke moden som Icinga 1 men flere selskaper som brukte Icinga 1 som overvåkingsrammeverk oppgraderte allerede til Icinga 2.
Produktet mangler sentral aggregeringslogikk, logikken må utvikles i plugins.
Produktet mangler sentral administrasjon av brukere også. Bruker administrasjon er to delt som beskrevet i kapittel 4.5. Man kan utvikle scripter for automatisering av bruker administrasjon.
Det er ikke innebygd tilgangskontroll av konfigurasjonsfiler for Icinga 2.
REST-API kan kun brukes for å hente tilstand/ytelsesdata. Man kan ikke administrere konfigurasjonen av Icinga 2/Icinga Web vha REST-API.
Icinga community har planer om utvikle en API som skal ha dette funksjonalitet.