123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #!/usr/bin/env python3
- '''functions used by multiple parts of the plugin'''
- # -*- encoding: utf-8; py-indent-offset: 4 -*-
- # (c) Michael Honkoop <mhonkoop@comsolve.nl>
- # License: GNU General Public License v2
- import re
- import pytz
- import datetime
- from dateutil import tz
- from cmk.agent_based.v2 import (
- DiscoveryResult,
- Service,
- )
- uptime_attributes = [
- "Status_eDirectoryUpTime",
- ]
- time_attributes = [
- "Status_eDirectorySystemCurrTime",
- "CheckPointThreadData_CheckPointThreadStartTime",
- ]
- time_attributes_ignored = [
- "BackGroundProcInterval",
- "CheckPointThreadData_CheckPointThreadForceStartTime",
- "CheckPointThreadData_CheckPointThreadStartTime",
- ]
- non_graphable_attributes = [
- "Status_eDirectorySystemCurrTime",
- "Status_eDirectoryUpTime",
- "Status_eDirectoryAgentVersion",
- "CheckPointThreadData_CheckPointThreadStartTime",
- "CheckPointThreadData_CheckPointThreadForceStartTime",
- "CheckPointThreadData_CheckPointThreadIsForced",
- "Size_CurrentTransactionID",
- ]
- total_counter_attributes = [
- "TrafficVolume_inBytes",
- "TrafficVolume_outBytes",
- "Errors_securityErrors",
- "Errors_errors",
- "Bindings_simpleAuthBinds",
- "Bindings_unAuthBinds",
- "Bindings_bindSecurityErrors",
- "Bindings_strongAuthBinds",
- "IncomingOperations_extendedOps",
- "IncomingOperations_abandonOps",
- "IncomingOperations_wholeSubtreeSearchOps",
- "IncomingOperations_oneLevelSearchOps",
- "IncomingOperations_searchOps",
- "IncomingOperations_listOps",
- "IncomingOperations_modifyRDNOps",
- "IncomingOperations_modifyEntryOps",
- "IncomingOperations_removeEntryOps",
- "IncomingOperations_addEntryOps",
- "IncomingOperations_compareOps",
- "IncomingOperations_readOps",
- "IncomingOperations_inOps",
- "OutgoingOperations_chainings",
- "CacheFaultLooks_Total",
- "Hits_Total",
- "Hits_BlockCache",
- "Hits_EntryCache",
- "HitLooks_Total",
- "HitLooks_BlockCache",
- "HitLooks_EntryCache",
- ]
- def format_partition_agent(value):
- """strip unwanted data from Agent Partition data"""
- formatted = re.sub('CN=|OU=|O=|T=', '', value).replace("=", " ").replace(" ", "").split("#")
- return formatted
- def convert_timestamp(value):
- """convert Zulu time to current time in local timezone"""
- utc_dt = datetime.datetime.strptime(str(value), "%Y%m%d%H%M%SZ")
- utc = pytz.utc
- utc_dt = utc_dt.replace(tzinfo=tz.UTC)
- local_tz = tz.tzlocal()
- local_dt = utc_dt.astimezone(local_tz)
- return local_dt
- def parse_ldap_data(string_table):
- """parse one lines of data to dictionary"""
- parsed = {}
- for line in string_table:
- item = line[0]
- parsed.setdefault(item, {})
- for _count, data in enumerate(line[1:]):
- if item == "Agent Partition":
- key, value=format_partition_agent(data)
- else:
- key, value=data.split("=")
- parsed[item].setdefault(key, value)
- return parsed
- def discover_edirectory_items(section) -> DiscoveryResult:
- '''discover one item per key'''
- for key, data in section.items():
- yield Service(item=key)
|