|
@@ -5,8 +5,9 @@
|
|
# License: GNU General Public License v2
|
|
# License: GNU General Public License v2
|
|
|
|
|
|
from typing import Dict
|
|
from typing import Dict
|
|
-from datetime import datetime
|
|
|
|
|
|
+import datetime
|
|
import pytz
|
|
import pytz
|
|
|
|
+from dateutil import tz
|
|
import re
|
|
import re
|
|
from cmk.agent_based.v2 import (
|
|
from cmk.agent_based.v2 import (
|
|
AgentSection,
|
|
AgentSection,
|
|
@@ -28,16 +29,25 @@ non_graphable = [
|
|
"CheckPointThreadIsForced",
|
|
"CheckPointThreadIsForced",
|
|
]
|
|
]
|
|
|
|
|
|
|
|
+uptime_attributes = [
|
|
|
|
+ "eDirectoryUpTime",
|
|
|
|
+]
|
|
|
|
+
|
|
|
|
+time_attributes = [
|
|
|
|
+ "eDirectorySystemCurrTime",
|
|
|
|
+ "CheckPointThreadStartTime",
|
|
|
|
+]
|
|
|
|
+
|
|
def format_partition_agent(value):
|
|
def format_partition_agent(value):
|
|
formatted = re.sub('CN=|OU=|O=|T=', '', value).replace("=", " ")
|
|
formatted = re.sub('CN=|OU=|O=|T=', '', value).replace("=", " ")
|
|
return formatted
|
|
return formatted
|
|
|
|
|
|
def convert_timestamp(value):
|
|
def convert_timestamp(value):
|
|
"""convert Zulu time to current time in local timezone"""
|
|
"""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 = 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)
|
|
local_dt = utc_dt.astimezone(local_tz)
|
|
return local_dt
|
|
return local_dt
|
|
|
|
|
|
@@ -69,7 +79,14 @@ def check_edirectory_items(item: str, section) -> CheckResult:
|
|
if not data:
|
|
if not data:
|
|
return
|
|
return
|
|
for key, value in data.items():
|
|
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:
|
|
if key not in non_graphable:
|
|
yield Metric(key, float(value))
|
|
yield Metric(key, float(value))
|
|
|
|
|