Разбор JSON с помощью подключаемого модуля Nagios

Я собираюсь использовать подключаемый модуль JSON Nagios Дрю Керриган на GitHub (drewkerrigan / nagios-http-json) для отслеживания вывода REST API, но я изо всех сил пытаюсь понять синтаксис запроса.

Вот образец JSON, который возвращается, когда я нажимаю на веб-API:

{"Checks":[
{"description":"can read interconnect 0910", 
"result":"passed"},
{"description":"can read interconnect 1011", 
"result":"passed"},
{"description":"can read linknode 1112", 
"result":"passed"},
{"description":"can read linknode 1213", 
"result":"passed"},
{"description":"can read dbnode 1314", 
"result":"passed"},
{"description":"can read dbnode 1415", 
"result":"passed"},
{"description":"can read dbnode 1516", 
"result":"passed"},
{"description":"can read dbnode 1617", 
"result":"passed"},
{"description":"can read dbnode 1718", 
"result":"passed"},
{"description":"can read main table", 
"result":"passed"},
{"description":"can read secondary table", 
"result":"passed"},
{"description":"can read postcode table", 
"result":"passed"},
{"description":"can read/write to docs folder", 
"result":"passed"},
{"description":"can read/write to config folder", 
"result":"passed"},
{"description":"la integration enabled", 
"result":"passed"},
{"description":"webservice password", 
"result":"passed"},
{"description":"can authenticate in largedb", 
"result":"passed"},
{"description":"can import locales", 
"result":"passed"}
]}

В плагине Дрю есть переключатель проверки равенства:

-q [KEY_VALUE_LIST [KEY_VALUE_LIST ...]], --key_equals [KEY_VALUE_LIST [KEY_VALUE_LIST ...]]
                        Checks equality of these keys and values
                        (key[>alias],value key2,value2) to determine status.
                        Multiple key values can be delimited with colon
                        (key,value1:value2). Return warning if equality check
                        fails

и Дрю приводит примеры того, как структурировать запрос для различных синтаксисов ключ / значение, но я не могу понять это правильно, и я получаю ошибки python, которые, как я ожидаю, связаны с тем, что мой синтаксис запроса не отражает структуру JSON.

Может ли кто-нибудь помочь мне с примером для проверки, скажем, "может ли" читать основную таблицу " «пройдено».

1
задан 16 August 2017 в 21:35
1 ответ

Плагин Дрю не закодирован для обработки этого конкретного формата JSON, поэтому я взломал небольшое исправление, чтобы взять наши данные JSON и преобразовать их в более удобная для плагинов структура (простые пары ключ: значение) - я не мог изменить формат JSON, который создается нашим приложением, поскольку он используется где-то еще, и слишком много может сломаться. В основном программном блоке:

[SNIP]
else:
    debugPrint(args.debug, 'DEBUG: In expected loop')
    jsondata = response.read()
    data = json.loads(jsondata)
    # Modify the data structure to a format more friendly to the plugin
    newD={}
    for item in data["Checks"]:
            newD[item.get("description")]=item.get("result")
    data = newD
    # End of modification
    debugPrint(args.debug, 'json:')
    debugPrint(args.debug, data, True)
    # Apply rules to returned JSON data
    processor = JsonRuleProcessor(data, args)
[SNIP]
1
ответ дан 3 December 2019 в 23:26

Теги

Похожие вопросы