Ad Widget

Collapse

Zabbix API и элементы данных

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Константин
    Junior Member
    • Sep 2020
    • 7

    #1

    Zabbix API и элементы данных

    Доброе время суток.

    Сломал голову, над элементарной(на первый взгляд задачей). Есть шаблон с правилом обнаружения примонтированных дисков(все по документации, здесь все ОК). Соответсвенно есть элементы данных, которые созданы для списка хостов на которые назначен шаблон с правилом обнаружения.
    Так вот вопрос, как узнать по какому шаблону был создан item, если у всех элементов данных созданных из прототипов, правилом обнаружения templateids = 0. Через шаблон-> протип элемента обнаружения.key_==item.key_ получается слишком уж жестко. Ну и предвосхищая вопросы нафига API - буду рад услышать, кто и как осуществляет контроль за правильностью конфигурации т.е. отслеживания какие именно item и для каких узлов/шаблонов не имеют истории или вернули ошибку в процессе работы.
  • Константин
    Junior Member
    • Sep 2020
    • 7

    #2
    Сваял проверку ключей прототипов и item-ов на python, может кому-нибудь сэкономит пару часов.
    Code:
    def fuzzicompare(protokey, key):
        # compair key from template and key from item
        # if jvm.get_heap_max[wlsadmin, 22203] == jvm.get_heap_max[{#jvm_user}, {#jvm_pid}]
        # try compare string before []
        if re.search(r'^(\S*)\[', str.strip(protokey)) is not None and \
                re.search(r'^(\S*)\[', str.strip(key)) is not None:
            if re.search(r'^(\S*)\[', str.strip(protokey))[0] != re.search(r'^(\S*)\[', str.strip(key))[0]:
                return False
            else:
                pk_params = pk.split('[')[1].split(',')
                key_params = key.split('[')[1].split(',')
                if len(pk_params) != len(key_params):
                    return False
                else:
                    diff = True
                    for i in range(0, len(pk_params)):
                        if re.search(r"{#\w+}", pk_params[i]) is None:
                            # not macros
                            if pk_params[i] == key_params[i]:
                                diff = False
                                continue
                            else:
                                diff = True
                                break
                        else:
                            diff = False
                            continue
                    return not diff
        else:
            return False

    Comment

    Working...