Collection of CheckMK checks (see https://checkmk.com/). All checks and plugins are provided as is. Absolutely no warranty. Send any comments to thl-cmk[at]outlook[dot]com

Skip to content
Snippets Groups Projects
Commit 115e6153 authored by thl-cmk's avatar thl-cmk :flag_na:
Browse files

update project

parent 7b69da2b
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# License: GNU General Public License v2
#
# Author: thl-cmk[at]outlook[dot]com
# URL : https://thl-cmk.hopto.org
# Date : 2016-08-01
#
# monitor Juniper Networks craft alarms
#
# sample snmpwalk
# .1.3.6.1.4.1.2636.3.4.2.1.0 = INTEGER: 2
# .1.3.6.1.4.1.2636.3.4.2.2.1.0 = INTEGER: 2
# .1.3.6.1.4.1.2636.3.4.2.2.2.0 = Gauge32: 0
# .1.3.6.1.4.1.2636.3.4.2.2.3.0 = 0
# .1.3.6.1.4.1.2636.3.4.2.3.1.0 = INTEGER: 2
# .1.3.6.1.4.1.2636.3.4.2.3.2.0 = Gauge32: 0
# .1.3.6.1.4.1.2636.3.4.2.3.3.0 = 0
#
# sample string_table
# [[['2']], [['2', '0', '0', '2', '0', '0']]]
#
# sample section
# JuniperAlarms(
# alarm_relay_mode=2,
# yellow_alarm=JuniperAlarm(state=2, count=0, last_change=0),
# red_alarm=JuniperAlarm(state=2, count=0, last_change=0)
# )
#
from dataclasses import dataclass
from typing import Optional, List
from cmk.base.plugins.agent_based.agent_based_api.v1 import (
register,
Service,
Result,
State,
SNMPTree,
startswith,
)
from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
DiscoveryResult,
CheckResult,
StringTable,
)
@dataclass
class JuniperAlarm:
# state: int
count: int
# last_change: int
@dataclass
class JuniperAlarms:
alarm_relay_mode: int
yellow_alarm: JuniperAlarm
red_alarm: JuniperAlarm
_juniper_alarm_relay_mode= {
1: 'other',
2: 'pass on',
3: 'cut off',
}
_juniper_alarm_state = {
1: 'other',
2: 'off',
3: 'on',
}
def parse_juniper_craft_alarms(string_table: List[StringTable]) -> Optional[JuniperAlarms]:
alarm_relay_mode, alarms = string_table
yellow_count, red_count = alarms[0]
return JuniperAlarms(
alarm_relay_mode=int(alarm_relay_mode[0][0]),
yellow_alarm=JuniperAlarm(
# state=int(yellow_state),
count=int(yellow_count),
# last_change=int(yellow_last_change)
),
red_alarm=JuniperAlarm(
# state=int(red_state),
count=int(red_count),
# last_change=int(red_last_change)
)
)
def discovery_juniper_craft_alarms(section: JuniperAlarms) -> DiscoveryResult:
yield Service()
def check_juniper_craft_alarms(params, section: JuniperAlarms) -> CheckResult:
if section.alarm_relay_mode != 2 and params['warn_not_pass_om']:
yield Result(
state=State.WARN,
summary=f'Alarm relay mode: {_juniper_alarm_relay_mode.get(section.alarm_relay_mode)}')
else:
yield Result(
state=State.OK,
summary=f'Alarm relay mode: {_juniper_alarm_relay_mode.get(section.alarm_relay_mode)}')
if section.yellow_alarm.count > params['count_yellow']:
yield Result(state=State.WARN, notice=f'Yellow alarm count: {section.yellow_alarm.count}')
else:
yield Result(state=State.OK, summary=f'Yellow alarm count: {section.yellow_alarm.count}')
if section.red_alarm.count > params['count_red']:
yield Result(state=State.CRIT, notice=f'Red alarm count: {section.red_alarm.count}')
else:
yield Result(state=State.OK, summary=f'Red alarm count: {section.red_alarm.count}')
register.snmp_section(
name='juniper_craft_alarms',
parse_function=parse_juniper_craft_alarms,
fetch=[
SNMPTree(
base='.1.3.6.1.4.1.2636.3.4.2', # JUNIPER-ALARM-MIB::jnxCraftAlarms
oids=[
'1', # jnxAlarmRelayMode
]
),
SNMPTree(
base='.1.3.6.1.4.1.2636.3.4.2', # JUNIPER-ALARM-MIB::jnxCraftAlarms
oids=[
# '2.1', # jnxYellowAlarmState
'2.2', # jnxYellowAlarmCount
# '2.3', # jnxYellowAlarmLastChange
# '3.1', # jnxRedAlarmState
'3.2', # jnxRedAlarmCount
# '3.3', # jnxRedAlarmLastChange
]
)
],
detect=startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.2636.1.1.1'),
)
register.check_plugin(
name='juniper_craft_alarms',
service_name='Chassis Alarm',
discovery_function=discovery_juniper_craft_alarms,
check_function=check_juniper_craft_alarms,
check_ruleset_name='juniper_craft_alarms',
check_default_parameters={
'count_yellow': 0,
'count_red': 0,
'warn_not_pass_om': True,
}
)
File added
{'author': 'thl-cmk[at]outlook[dot]com',
'description': 'Monitor Juniper Networks Chassis alarm\n'
'\n'
'The check is based on the JUNIPER-ALARM-MIB\n'
'\n'
'WARN: if # of yellow alerts > 0\n'
'CRIT: if # of red alerts > 0\n'
'WARN: if alarm relay mode not pass om\n',
'download_url': 'https://thl-cmk.hopto.org',
'files': {'agent_based': ['juniper_craft_alarm.py']},
'name': 'juniper_craft_alarm',
'num_files': 1,
'title': 'Juniper (Craft) alarm',
'version': '20220606_v0.0.1',
'version.min_required': '2.0.0',
'version.packaged': '2021.09.20',
'version.usable_until': None}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment