29
www.icinga.org #icingacamp – San Diego – 10/18/2016 ICINGA 2 – APIFY THEM ALL

Icinga Camp San Diego 2016 - Apify them all

  • Upload
    icinga

  • View
    52

  • Download
    0

Embed Size (px)

Citation preview

www.icinga.org

#icingacamp – San Diego – 10/18/2016

ICINGA 2 – APIFY THEM ALL

• Michael Friedrich

• Icinga 2 Developer & Community Lead

• Senior Developer @NETWAYS

• 7+ years #icingalove

• @dnsmichi

ICINGA 2 - API

• HTTP with RESTful Url Schema

• ApiUser config object

• X.509 and/or Basic Auth

ApiUser Object

object ApiUser "root" {

password = "icinga”

permissions = [ "*" ]

}

ApiUser Permissions

permissions = [

{

permission = "objects/query/Host"

filter = {{ regex("^Linux", host.vars.os) }}

},

{

permission = "objects/query/Service"

filter = {{ regex("^Linux", host.vars.os) }}

}

]

• create, modify and delete objects

• query objects and status

• run actions

• subscribe to events

• manage configuration packages

• Status, Objects, Actions and Events

• Simple filterservices?service=localhost!ping6

• Advanced filtertype=Service&filter=service.name==%22ping6%22

(Hint: assign where expressions)

• Configuration management

• New standard config API

• Support for Packages and Stages

• No more SSH transport, all HTTP

• Used by the Icinga Director

• Event Streams• Based on types

CheckResult, StateChange, Notification, Acknowledgement*, Comment*, Downtime*

• Use filtersExample: Receive all check results where the state is not OK.

$ curl -k -s -u root:icinga -H 'Accept: application/json' -X POST \'https://192.168.33.5:5665/v1/events' \

-d '{ "queue": "mine", "types": [ "CheckResult" ], "filter":

"event.check_result.state != 0" }'

Demo

API CLIENTS

Icinga Studio

Icinga 2 console

# ICINGA2_API_PASSWORD=icinga icinga2 console --connect 'https://root@localhost:5665/' --eval'get_host(NodeName).last_check_result.command' | python -m json.tool

["/usr/lib64/nagios/plugins/check_ping","-H","127.0.0.1","-c","5000,100%","-w","3000,80%"

]

Icinga 2 Dashing

Icinga Director

Bitbar for OSX

aNag for Android

Programmatic examples: Event Streams

Paw for MacOS

ICINGA 2 API – COMMUNITY

• Libraries

• python-icinga2api: https://pypi.python.org/pypi/python-icinga2api

• go-icinga2: https://github.com/xert/go-icinga2

• Management

• Foreman Smart Proxy: https://github.com/theforeman/smart_proxy_monitoring

• Terraform Provider: https://github.com/lrsmith/terraform-provider-icinga2

• Status

• Grafana Plugin: https://github.com/tegud/grafana-icinga2api

• aNag on Android: https://damien.degois.info/android/aNag/summary

• BitBar OSX: https://getbitbar.com/plugins/Dev/Icinga2/icinga2.24m.py

• Event Streams

• Logstash input: https://github.com/bobapple/logstash-input-icinga_eventstream

• Flapjack events: https://github.com/sol1/flapjack-icinga2

• Actions

• Lita handler: https://github.com/tuxmea/lita-icinga2

• Sakuli Forwarder: http://sakuli.readthedocs.io/en/dev/forwarder-icinga2api/

• mqttwarn: https://github.com/jpmens/mqttwarn#icinga2

• OpsGenie actions: https://www.opsgenie.com/docs/integrations/icinga2-integration

ICINGA 2 API – WHAT’S NEXT?

• More libraries

• Elastic Beats integration

• Puppet/Ansible/Chef/Salt Hook

• Nagstamon, NagVis, …

• Send a PR: https://github.com/Icinga/icinga2-api-examples

CONCLUSION

• Download Icinga 2

• Play with the Vagrant boxes

• Check the API docs

• Share your ideas & API clients

THANK YOU!www.icinga.org

dev.icinga.org

git.icinga.org

@icinga

/icinga

+icinga