Kaynağa Gözat

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

Michael Honkoop 4 ay önce
ebeveyn
işleme
ed05bab261

+ 22 - 5
plugins/edirectory_monitor/agent_based/edirectory_monitor.py

@@ -5,8 +5,9 @@
 # License: GNU General Public License v2
 
 from typing import Dict
-from datetime import datetime
+import datetime
 import pytz
+from dateutil import tz
 import re
 from cmk.agent_based.v2 import (
     AgentSection,
@@ -28,16 +29,25 @@ non_graphable = [
     "CheckPointThreadIsForced",
 ]
 
+uptime_attributes = [
+    "eDirectoryUpTime",
+]
+
+time_attributes = [
+    "eDirectorySystemCurrTime",
+    "CheckPointThreadStartTime",
+]
+
 def format_partition_agent(value):
     formatted = re.sub('CN=|OU=|O=|T=', '', value).replace("=", " ")
     return formatted
 
 def convert_timestamp(value):
     """convert Zulu time to current time in local timezone"""
-    utc_dt = datetime.strptime(value, "%Y%m%d%H%M%SZ")
+    utc_dt = datetime.datetime.strptime(str(value), "%Y%m%d%H%M%SZ")
     utc = pytz.utc
-    utc_dt = utc.localize(utc_dt)
-    local_tz = pytz.timezone(pytz.timezone('local'))
+    utc_dt = utc_dt.replace(tzinfo=tz.UTC)
+    local_tz = tz.tzlocal()
     local_dt = utc_dt.astimezone(local_tz)
     return local_dt
 
@@ -69,7 +79,14 @@ def check_edirectory_items(item: str, section) -> CheckResult:
     if not data:
         return
     for key, value in data.items():
-        yield Result(state=State(0), summary=f"{key}: {value}", details=f"{key}: {value}")
+        if key in uptime_attributes:
+            uptime = datetime.timedelta(seconds=float(value))
+            yield Result(state=State(0), summary=f"{key}: {uptime}", details=f"{key}: {uptime}")
+        if key in time_attributes:
+            datevalue = convert_timestamp(value)
+            yield Result(state=State(0), summary=f"{key}: {datevalue}", details=f"{key}: {datevalue}")
+        else:
+            yield Result(state=State(0), summary=f"{key}: {value}", details=f"{key}: {value}")
         if key not in non_graphable:
             yield Metric(key, float(value))