Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Icinga Camp Belgrade - Icinga 2 Apify Them All

2,508 views

Published on

Diving into the Icinga 2 API feature and its possibilities.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Icinga Camp Belgrade - Icinga 2 Apify Them All

  1. 1. www.icinga.org #icingacamp – Belgrade – 09/24/2016 ICINGA 2 – APIFY THEM ALL
  2. 2. •  Michael Friedrich •  Icinga 2 Developer & Community Lead •  Senior Developer @NETWAYS •  ~7 years #icingalove •  @dnsmichi
  3. 3. ICINGA2 - API
  4. 4. •  HTTP with RESTful Url Schema •  ApiUser config object •  X.509 and/or Basic Auth
  5. 5. ApiUser Object # vim /etc/icinga2/conf.d/api-users.conf object ApiUser "root" { password = "icinga” permissions = [ "*" ] }
  6. 6. ApiUser Permissions permissions = [ { permission = "objects/query/Host" filter = {{ regex("^Linux", host.vars.os) }} }, { permission = "objects/query/Service" filter = {{ regex("^Linux", service.vars.os) }} } ]
  7. 7. •  create, modify and delete objects •  retrieve information and run actions •  subscribe to events •  manage configuration packages
  8. 8. •  Configuration management •  New standard config API •  Support for Packages and Stages •  Support for Zones •  Used by the Icinga Director
  9. 9. •  Event Streams •  Based on Types and Filters CheckResult, StateChange, Notification, Acknowledgement*, Comment*, Downtime* •  Example /v1/events?queue=camp&types=CheckResult
  10. 10. •  Status, Objects, Actions and Events •  Simple filter •  services?service=localhost!ping6 •  Advanced filter •  type=Service&filter=service.name==%22ping6%22 •  (Hint: assign where expressions)
  11. 11. Demo
  12. 12. API CLIENTS
  13. 13. Icinga Studio
  14. 14. Icinga2 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%" ]
  15. 15. Icinga 2 Dashing
  16. 16. Icinga Director
  17. 17. Bitbar for OSX
  18. 18. Paw for MacOS
  19. 19. ICINGA 2 API – COMMUNITY
  20. 20. •  Libraries •  python-icinga2api: https://pypi.python.org/pypi/python-icinga2api •  Management •  Foreman Smart Proxy: https://github.com/theforeman/smart_proxy_monitoring •  Status •  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
  21. 21. •  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
  22. 22. •  Articles •  http://engineering.laterooms.com/taking-the-badger-to-icingard/ •  https://issues.geant.net/jira/browse/PSCMON-111 •  https://www.unixe.de/icinga2-dashing/
  23. 23. ICINGA 2 API – WHAT’S NEXT?
  24. 24. •  Libraries •  Foreman, Puppet/Ansible/Chef Hook? •  Elastic/Logstash integration? •  Nagstamon, NagVis, …? •  Send a PR: https://github.com/Icinga/ icinga2-api-examples
  25. 25. CONCLUSION
  26. 26. •  Download Icinga 2 •  Play with the Vagrant boxes •  Check the API docs •  Share your ideas & API clients
  27. 27. THANK YOU! www.icinga.org dev.icinga.org git.icinga.org @icinga /icinga +icinga

×