У меня есть проверка nagiosplugin, которая получает версию пакета, используя соль (из-за сетевой архитектуры), а затем сравнивает ее с версией, указанной в аргументе, используя метод salt.pkg_version_cmp.
Я могу вернуть результат этой проверки (-1 | 0 | 1) в метрике и отобразить строку состояния.
Но я хочу добавить актуальную версию пакета в строке состояния, и я не знаю, как вернуть ее с помощью функции nagiosplugin class |, а не с помощью глобальной переменной.
Вот мой нагиосплугин.Ресурс класс:
class CheckSaltPkgVersion(nagiosplugin.Resource):
def __init__(self, args):
self.package = args.package
self.rule = args.rule
self.target = args.vm
def salt_pkg_version(self):
sa = getSaltAdapter()
version = sa.exec_function([{
'client': 'local',
'tgt': self.target,
'fun': 'pkg.version',
'arg': [self.package]
}])
compare = sa.exec_function([{
'client': 'local',
'tgt': self.target,
'fun': 'pkg.version_cmp',
'arg': [version['return'][0][self.target], self.rule]
}])
# depending of compare and version, mist return smth between 0 and 4
return compare['return'][0][self.target]
def probe(self):
"""Runs"""
yield nagiosplugin.Metric(self.package,
self.salt_pkg_version(),
context='salt_pkg_version_compare')
Вот мой нагиосплугин. Резюме (основное)
class VersionSummary(nagiosplugin.Summary):
def ok(self, results):
return ("ok")
def problem(self, results):
return("warning")
Я бы хотел получить Сводку наподобие этой (игнорируя условную проверку Неизвестно / Предупреждение / Критическое):
class VersionSummary(nagiosplugin.Summary):
def ok(self, results):
return 'the package %s is in version %s' % (results.first_significant.metric.name, version)
def problem(self, results):
return 'the package %s is in version %s which is less that %s' % (results.first_significant.metric.name, version, rule)
Я искал, но единственное, что я нашел, было следующее: Нагиосплугин: как показать другой fmt_metric в зависимости от значения? и он делает 2 проверки (сначала в основном, затем во втором в сводке чтобы получить информацию)
Не похоже, что класс Metric (https://pythonhosted.org/nagiosplugin/api/intermediate.html#module-nagiosplugin.metric) может нести значение, отличное от значения.