edirectory_monitor.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/usr/bin/env python3
  2. # -*- encoding: utf-8; py-indent-offset: 4 -*-
  3. # License: GNU General Public License v2
  4. from typing import Dict
  5. from cmk.agent_based.v2 import (
  6. AgentSection,
  7. CheckPlugin,
  8. CheckResult,
  9. DiscoveryResult,
  10. Result,
  11. Service,
  12. State,
  13. )
  14. monitor_data= Dict[str, object]
  15. def parse_ldap_data(string_table) -> monitor_data:
  16. """parse one lines of data to dictionary"""
  17. parsed = {}
  18. for line in string_table:
  19. item = line[0]
  20. parsed.setdefault(item, {})
  21. for _count, data in enumerate(line[1:]):
  22. key, value = data.split("=")
  23. parsed[item].setdefault(key, value)
  24. return parsed
  25. def discover_edirectory_items(section: monitor_data) -> DiscoveryResult:
  26. '''discover one item per key'''
  27. for key, data in section.items():
  28. yield Service(item=key)
  29. agent_section_edirectory_monitor = AgentSection(
  30. name="edirectory_monitor",
  31. parse_function=parse_ldap_data,
  32. )
  33. check_plugin_edirectory_monitor = CheckPlugin(
  34. name="edirectory_monitor",
  35. service_name="%s",
  36. discovery_function=discover_edirectory_items,
  37. check_function=parse_ldap_data,
  38. )