add missing routeros tools from dinotools
This commit is contained in:
parent
e4b6fed5f2
commit
60c4f1870f
35 changed files with 5085 additions and 1 deletions
81
py/libs/check_routeros/routeros_check/check/system_power.py
Normal file
81
py/libs/check_routeros/routeros_check/check/system_power.py
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
# SPDX-FileCopyrightText: PhiBo DinoTools (2021)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import click
|
||||
import nagiosplugin
|
||||
|
||||
from ..cli import cli
|
||||
from ..helper import logger, RouterOSVersion
|
||||
from ..resource import RouterOSCheckResource
|
||||
|
||||
|
||||
class SystemPowerResource(RouterOSCheckResource):
|
||||
name = "Power"
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
cmd_options,
|
||||
check: nagiosplugin.Check,
|
||||
):
|
||||
super().__init__(cmd_options=cmd_options)
|
||||
|
||||
self._check = check
|
||||
|
||||
self._routeros_metric_values = [
|
||||
{"name": "power-consumption", "type": float},
|
||||
]
|
||||
|
||||
def probe(self):
|
||||
logger.info("Fetching data ...")
|
||||
call = self.api.path(
|
||||
"/system/health"
|
||||
)
|
||||
if self.routeros_version < RouterOSVersion("7"):
|
||||
call = call.select(
|
||||
*self.get_routeros_select_keys()
|
||||
)
|
||||
api_result_items = tuple(call)
|
||||
api_result_items = self._convert_v6_list_to_v7(api_result_items)
|
||||
else:
|
||||
api_result_items = tuple(call)
|
||||
|
||||
result_metrics = self.get_routeros_metrics(api_result_items)
|
||||
if len(result_metrics) == 0:
|
||||
self._check.results.add(
|
||||
nagiosplugin.Result(
|
||||
nagiosplugin.state.Unknown,
|
||||
hint="Power consumption not found."
|
||||
)
|
||||
)
|
||||
return result_metrics
|
||||
|
||||
|
||||
@cli.command("system.power")
|
||||
@click.option(
|
||||
"--warning",
|
||||
help="Warning threshold for total power consumption",
|
||||
)
|
||||
@click.option(
|
||||
"--critical",
|
||||
help="Critical threshold for total power consumption",
|
||||
)
|
||||
@click.pass_context
|
||||
@nagiosplugin.guarded
|
||||
def system_power(ctx, warning, critical):
|
||||
"""Check the total power consumption of a device. This might not be available on all devices"""
|
||||
check = nagiosplugin.Check()
|
||||
|
||||
check.add(
|
||||
SystemPowerResource(
|
||||
cmd_options=ctx.obj,
|
||||
check=check,
|
||||
),
|
||||
nagiosplugin.ScalarContext(
|
||||
"power-consumption",
|
||||
warning=warning,
|
||||
critical=critical,
|
||||
fmt_metric="Power consumption {value}W",
|
||||
),
|
||||
)
|
||||
|
||||
check.main(verbose=ctx.obj["verbose"])
|
||||
Loading…
Add table
Add a link
Reference in a new issue