edirectory_monitor_ldap.py 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. #!/usr/bin/env python3
  2. # -*- encoding: utf-8; py-indent-offset: 4 -*-
  3. # (c) Michael Honkoop <mhonkoop@comsolve.nl>
  4. # License: GNU General Public License v2
  5. """parameters for eDirectory monitor"""
  6. from cmk.rulesets.v1 import Title, Help
  7. from cmk.rulesets.v1.form_specs import (
  8. DictElement,
  9. Dictionary,
  10. InputHint,
  11. Integer,
  12. LevelDirection,
  13. migrate_to_integer_simple_levels,
  14. SimpleLevels,
  15. String,
  16. )
  17. from cmk.rulesets.v1.rule_specs import (
  18. CheckParameters,
  19. Topic,
  20. HostAndItemCondition,
  21. )
  22. def _vaulespec_edirectory_monitor_ldap_bindings() -> Dictionary:
  23. return Dictionary(
  24. title=Title("LDAP Bindings"),
  25. elements={
  26. "bindSecurityErrors": DictElement(
  27. required=False,
  28. parameter_form=SimpleLevels[int](
  29. title=Title("LDAP bind Security errors"),
  30. level_direction=LevelDirection.UPPER,
  31. form_spec_template=Integer(),
  32. migrate=migrate_to_integer_simple_levels,
  33. prefill_fixed_levels=InputHint(value=(0, 5)),
  34. )
  35. ),
  36. "strongAuthBinds": DictElement(
  37. required=False,
  38. parameter_form=SimpleLevels[int](
  39. title=Title("LDAP Strong Auth Bindings"),
  40. level_direction=LevelDirection.UPPER,
  41. form_spec_template=Integer(),
  42. migrate=migrate_to_integer_simple_levels,
  43. prefill_fixed_levels=InputHint(value=(0, 5)),
  44. )
  45. ),
  46. "simpleAuthBinds": DictElement(
  47. required=False,
  48. parameter_form=SimpleLevels[int](
  49. title=Title("LDAP Simple Authenticated Bindings"),
  50. level_direction=LevelDirection.UPPER,
  51. form_spec_template=Integer(),
  52. migrate=migrate_to_integer_simple_levels,
  53. prefill_fixed_levels=InputHint(value=(0, 5)),
  54. )
  55. ),
  56. "Bindings_unAuthBinds": DictElement(
  57. required=False,
  58. parameter_form=SimpleLevels[int](
  59. title=Title("LDAP Unuthenticated Bindings"),
  60. level_direction=LevelDirection.UPPER,
  61. form_spec_template=Integer(),
  62. migrate=migrate_to_integer_simple_levels,
  63. prefill_fixed_levels=InputHint(value=(0, 5)),
  64. )
  65. ),
  66. }
  67. )
  68. def _vaulespec_edirectory_monitor_ldap_errors() -> Dictionary:
  69. return Dictionary(
  70. title=Title("LDAP Errors"),
  71. elements={
  72. "securityErrors": DictElement(
  73. required=False,
  74. parameter_form=SimpleLevels[int](
  75. title=Title("LDAP Security errors"),
  76. level_direction=LevelDirection.UPPER,
  77. form_spec_template=Integer(),
  78. migrate=migrate_to_integer_simple_levels,
  79. prefill_fixed_levels=InputHint(value=(0, 5)),
  80. )
  81. ),
  82. "errors": DictElement(
  83. required=False,
  84. parameter_form=SimpleLevels[int](
  85. title=Title("LDAP errors"),
  86. level_direction=LevelDirection.UPPER,
  87. form_spec_template=Integer(),
  88. migrate=migrate_to_integer_simple_levels,
  89. prefill_fixed_levels=InputHint(value=(0, 5)),
  90. )
  91. ),
  92. }
  93. )
  94. def _vaulespec_edirectory_monitor_ldap_incomingoperations() -> Dictionary:
  95. return Dictionary(
  96. title=Title("LDAP Incoming Operations"),
  97. elements={
  98. "extendedOps": DictElement(
  99. required=False,
  100. parameter_form=SimpleLevels[int](
  101. title=Title("LDAP Extended Operations"),
  102. level_direction=LevelDirection.UPPER,
  103. form_spec_template=Integer(),
  104. migrate=migrate_to_integer_simple_levels,
  105. prefill_fixed_levels=InputHint(value=(0, 5)),
  106. )
  107. ),
  108. "abandonOps": DictElement(
  109. required=False,
  110. parameter_form=SimpleLevels[int](
  111. title=Title("LDAP Abandoned Operations"),
  112. level_direction=LevelDirection.UPPER,
  113. form_spec_template=Integer(),
  114. migrate=migrate_to_integer_simple_levels,
  115. prefill_fixed_levels=InputHint(value=(0, 5)),
  116. )
  117. ),
  118. "wholeSubtreeSearchOps": DictElement(
  119. required=False,
  120. parameter_form=SimpleLevels[int](
  121. title=Title("LDAP Whole Subtree Search Operations"),
  122. level_direction=LevelDirection.UPPER,
  123. form_spec_template=Integer(),
  124. migrate=migrate_to_integer_simple_levels,
  125. prefill_fixed_levels=InputHint(value=(0, 5)),
  126. )
  127. ),
  128. "oneLevelSearchOps": DictElement(
  129. required=False,
  130. parameter_form=SimpleLevels[int](
  131. title=Title("LDAP One level Search Operations"),
  132. level_direction=LevelDirection.UPPER,
  133. form_spec_template=Integer(),
  134. migrate=migrate_to_integer_simple_levels,
  135. prefill_fixed_levels=InputHint(value=(0, 5)),
  136. )
  137. ),
  138. "searchOps": DictElement(
  139. required=False,
  140. parameter_form=SimpleLevels[int](
  141. title=Title("LDAP all Search Operations"),
  142. level_direction=LevelDirection.UPPER,
  143. form_spec_template=Integer(),
  144. migrate=migrate_to_integer_simple_levels,
  145. prefill_fixed_levels=InputHint(value=(0, 5)),
  146. )
  147. ),
  148. "listOps": DictElement(
  149. required=False,
  150. parameter_form=SimpleLevels[int](
  151. title=Title("LDAP list Operations"),
  152. level_direction=LevelDirection.UPPER,
  153. form_spec_template=Integer(),
  154. migrate=migrate_to_integer_simple_levels,
  155. prefill_fixed_levels=InputHint(value=(0, 5)),
  156. )
  157. ),
  158. }
  159. )
  160. def _vaulespec_edirectory_monitor_ldap_trafficvolume() -> Dictionary:
  161. return Dictionary(
  162. title=Title("LDAP Traffic volume"),
  163. elements={
  164. "inBytes": DictElement(
  165. required=False,
  166. parameter_form=SimpleLevels[int](
  167. title=Title("LDAP Traffic bytes in"),
  168. level_direction=LevelDirection.UPPER,
  169. form_spec_template=Integer(),
  170. migrate=migrate_to_integer_simple_levels,
  171. prefill_fixed_levels=InputHint(value=(0, 5)),
  172. )
  173. ),
  174. "outBytes": DictElement(
  175. required=False,
  176. parameter_form=SimpleLevels[int](
  177. title=Title("LDAP Traffic bytes out"),
  178. level_direction=LevelDirection.UPPER,
  179. form_spec_template=Integer(),
  180. migrate=migrate_to_integer_simple_levels,
  181. prefill_fixed_levels=InputHint(value=(0, 5)),
  182. )
  183. ),
  184. }
  185. )
  186. def _valuespec_edirectory_monitor_ldap() -> Dictionary:
  187. return Dictionary(
  188. title=Title("LDAP Service Parameters"),
  189. elements={
  190. "ldap_ldapstatistics_bindings": DictElement(
  191. parameter_form=_vaulespec_edirectory_monitor_ldap_bindings(),
  192. required=False),
  193. "ldap_errors": DictElement(
  194. parameter_form=_vaulespec_edirectory_monitor_ldap_errors(),
  195. required=False),
  196. "ldap_incomingoperations": DictElement(
  197. parameter_form=_vaulespec_edirectory_monitor_ldap_incomingoperations(),
  198. required=False),
  199. "ldap_trafficvolume": DictElement(
  200. parameter_form=_vaulespec_edirectory_monitor_ldap_trafficvolume(),
  201. required=False),
  202. },
  203. )
  204. def _item_spec() -> String:
  205. return String(
  206. help_text=Help("ServiceName")
  207. )
  208. rule_spec_edirectory_monitor_ldap_params = CheckParameters(
  209. name="edirectory_monitor_ldap",
  210. title=Title("eDirectory Monitor LDAP Statistics"),
  211. topic=Topic.APPLICATIONS,
  212. condition=HostAndItemCondition(
  213. item_title=Title("ServiceName"), item_form=_item_spec()
  214. ),
  215. parameter_form=_valuespec_edirectory_monitor_ldap,
  216. create_enforced_service=False,
  217. )