Skip to content

API

Co bude potřeba

  1. API účet pro Icingu
    • Poslat (nejlépe digitálně podepsaný e-mail) na icinga-adm@ics.muni.cz
  2. vyšší než defaultní oprávnění do webového rozhraní
    • Poslat seznam uživatelů/skupinu na icinga-adm@ics.muni.cz
    • Přihlášení je vázáno na Jednotné přihlášení UČO/primární heslo
  3. Nástroj pro práci s JSON REST API
    • použít můžeme například curl nebo powershell či ansible
  4. servery a služby, co chci monitorovat
  5. do jakých skupin chci servery a služby zařadit
  6. kdo bude dostávat upozornění na změny stavu serveru
  7. povolit na firewallu přístup z monitoringu
    • adresy:147.251.7.8/29 a 2001:718:801:407:13::/80, NRPE port 5666.
    • V případě použití Icinga agenta port 5665.

Zahlídnání stroje nebo služby

Než začneme

Dokumentace Icingy je k dispozici na adrese https://icinga.com/docs/icinga2/latest/, je dobré mít alespoň základní přehled o kapitolách API, Object Types a ITL.

Dále je důležité seznámit se s pravidly použití.

Příklady zde uvedené budou používat volání API pomocí CLI nástroje curl. Pokud vám tento nástroj nevyhovuje, stejného výsledku dosáhnete jakýmkoliv nástrojem.

Příklady

Ansible:

- uri:
    url: "http://host/api"
    user: "username"
    password: "password"
    method: POST
    return_content: yes
    headers:
      Accept: "application/json"
      Content-Type: "application/json"
    body_format: "json"
    body: {"configure":".*", "write":".*", "read":".*"}

PowerShell:

$url = "https://monitor.ics.muni.cz:5665/v1"
$secpasswd = ConvertTo-SecureString "zde_je_heslo" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("uzivatel_API", $secpasswd)
$stuff = Invoke-RestMethod -Uri $url -Method Get -Credential $mycreds

cURL:

$ curl -i -u username:password -H "content-type:application/json" -XPOST http://host/api -d '{"configure":".*","write":".*","read":".*"}'

Všechny ukázané způsoby jsou ekvivalentní a je jen na vás, který použijete, příklady pro další aplikace jsou vítány. Dále budu v příkladech ukazovat pouze volané URI a posílaná DATA. Jako username a password použijete to, co máte přidělené pro API.

Metody jsou čtyři:

Metoda: Použití
GET Pro získání informací o objektech, volání je read-only, nezmění tedy žádný objekt
POST Modifikuje existující objekt
PUT Vytvoří nový objekt, PUT request musí obsahovat všechny povinné atributy objektu
DELETE Odstraní objekt vytvořený přes API, neobsahuje kontrolu existence objektu

Omezení API

  • Přes API nelze vytvářet úplně vše, co konfigurace Icingy umožňuje. Omezení jsou v případě assign where ... u skupin a apply rules. Více viz. Icinga2 bug tracker

  • Konfiguraci je samozřejmě možné vytvořit jako soubory, tuto možnost ale nepodporujeme. Nicméně je možné toho dosáhnout použitím satelitu.

  • Dále, pokud změníte šablonu, která již byla použita v jiném objektu, tato změna se neprojeví. Je potřeba daný objekt zrušit a znovu vytvořit.

  • U objektů typu Host, Service, User a ekvivalentních není možné měnit později atribut groups. Zde platí to stejné jako u šablon.


POZOR

Při pojmenování objektů používejte vždy malá písmena. Názvy jako check_SSH a check_ssh mohou být za jistých okolností stejné i různé!


URL API

API poslouchá na portu 5665 na stroji monitoring.ics.muni.cz. Konkrétní adresa použitá pro volání API pak může vypadat následovně:

https://monitor.ics.muni.cz:5665/v1/objects/hosts/monitor.ics.muni.cz

Kde hosts je typ objektů, které nás zajímají (například: hosts, services, hostgroups, notifications...) a monitor.ics.muni.cz je jméno daného objektu. Takže například při zavolání uvedené adresy metodou GET získáme veškeré informace o daném objektu.