#!/usr/bin/env python3
# -*- encoding: utf-8; py-indent-offset: 4 -*-
from .agent_based_api.v1 import register, render, Result, Metric, State, check_levels, ServiceLabel, Service
#<<<_vss_writers>>>
#Task_Scheduler_Writer {d61d61c8-d73a-4eee-8cdd-f6f9786b7124} {1bddd48e-5052-49db-9b07-b96f96727e6b} Stable No_error
#VSS_Metadata_Store_Writer {75dfb225-e2e4-4d39-9ac9-ffaff65ddf06} {088e7a7d-09a8-4cc6-a609-ad90e75ddc93} Stable No_error
#$line.Writer_name.replace("'","") $line.Writer_Id, $line.Writer_Instance_Id, $line.State.split("_")[1], $line.Last_error
##Posible States
# Stable = OK
# Failed = CRIT
# Unstable = WARN
# In-Progress = OK
# Waiting_for_Completion = OK
# (Might add new states later if needed) # ESC-15-04-2022
def __vss_writers_name(line):
return line[0]
def parse__vss_writers(string_table):
section = {}
for line in string_table:
name = str(line[0])
section[name] = {
'id': str(line[1])
}
section[name]['writername'] = str(line[0])
section[name]['instanceid'] = str(line[2])
section[name]['state'] = str(line[3])
section[name]['lasterror'] = str(line[4])
return section
register.agent_section(
name="_vss_writers",
parse_function=parse__vss_writers,
)
def discover__vss_writers(section):
for name, data in section.items():
yield Service(item=name)
def check__vss_writers(item, params, section):
if item in section:
data = section[item]
if data['state'] == "Stable":
yield Result(state=State.OK, summary="%s has a %s state, Last error is: %s. Writer ID: %s. Writer Instance ID: %s." % (data['writername'],data['state'],data['lasterror'],data['id'],data['instanceid']))
elif data['state'] == "In-Progress":
yield Result(state=State.OK, summary="%s has a %s state, Last error is: %s. Writer ID: %s. Writer Instance ID: %s." % (data['writername'],data['state'],data['lasterror'],data['id'],data['instanceid']))
elif data['state'] == "Waiting_for_Completion":
yield Result(state=State.OK, summary="%s has a %s state, Last error is: %s. Writer ID: %s. Writer Instance ID: %s." % (data['writername'],data['state'],data['lasterror'],data['id'],data['instanceid']))
elif data['state'] == "Unstable":
yield Result(state=State.WARN, summary="%s has a %s state, Last error is: %s. Writer ID: %s. Writer Instance ID: %s." % (data['writername'],data['state'],data['lasterror'],data['id'],data['instanceid']))
elif data['state'] == "Failed":
yield Result(state=State.CRIT, summary="%s has a %s state, Last error is: %s. Writer ID: %s. Writer Instance ID: %s." % (data['writername'],data['state'],data['lasterror'],data['id'],data['instanceid']))
else:
yield Result(state=State.UNKNOWN, summary="%s has a %s state, Last error is: %s. Writer ID: %s. Writer Instance ID: %s. Please Add Current state to check file" % (data['writername'],data['state'],data['lasterror'],data['id'],data['instanceid']))
register.check_plugin(
name="_vss_writers",
service_name="VSS Writer: %s",
discovery_function=discover__vss_writers,
check_function=check__vss_writers,
check_default_parameters={
},
check_ruleset_name="_vss_writers",
)