浏览代码

Update 'plugins/edirectory_monitor/agent_based/edirectory_monitor_dhost.py'

Michael Honkoop 1 月之前
父节点
当前提交
6cae00fe0b
共有 1 个文件被更改,包括 26 次插入1 次删除
  1. 26 1
      plugins/edirectory_monitor/agent_based/edirectory_monitor_dhost.py

+ 26 - 1
plugins/edirectory_monitor/agent_based/edirectory_monitor_dhost.py

@@ -7,6 +7,7 @@
 # License: GNU General Public License v2
 
 import datetime
+import math
 from typing import Mapping, Any
 from cmk.agent_based.v2 import (
     AgentSection,
@@ -16,6 +17,7 @@ from cmk.agent_based.v2 import (
     State,
     Metric,
     get_value_store,
+    check_levels,
 )
 
 from cmk_addons.plugins.edirectory_monitor.lib import (
@@ -58,7 +60,30 @@ def check_edirectory_items(item: str, params: Mapping[str, Any], section) -> Che
             yield Result(state=State(0), summary=f"{key}: {datevalue}", details=f"{key}: {datevalue}")
         else:
             '''create a default result if above criteria do not apply'''
-            yield Result(state=State(0), summary=f"{key}: {value}", details=f"{key}: {value}")
+            warn, crit = params.get((item.lower()).replace(" ", "_"), {}).get(key, ("fixed", (None, None)))[1]
+            if warn is not None or crit is not None:
+                #print(f"Levels {key} - {warn} - {crit}")
+                if (item_detail + "_" + key) in total_counter_attributes:
+                    previous_value = value_store.get(key, 0)
+                    value_store[key] = value
+                    value_difference = int(value) - int(previous_value)
+                    yield from check_levels(
+                        int(math.ceil(value_difference)),
+                        levels_upper=params.get((item.lower()).replace(" ", "_"), {}).get(key, ("fixed", (None, None))),
+                        label=key,
+                        metric_name=key,
+                        notice_only=True,
+                        )
+                else:
+                    yield from check_levels(
+                        int(value),
+                        levels_upper=params.get((item.lower()).replace(" ", "_"), {}).get(key, ("fixed", (None, None))),
+                        label=key,
+                        metric_name=key,
+                        notice_only=True,
+                        )
+            else:
+                yield Result(state=State(0), notice=f"{key}: {value}", details=f"{key}: {value}")
         if (item_detail + "_" + key) in total_counter_attributes:
             '''create a metric which is the difference between previous check value and current check value'''
             previous_value = value_store.get(key, 0)