Ad Widget

Collapse

Переименование хостов (взаимоблокировка)

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Sinot
    Junior Member
    • Feb 2023
    • 23

    #1

    Переименование хостов (взаимоблокировка)

    Решительно всех приветсвую!

    Столкнулся с проблемой API метода host.update. Для примера, имеем два хоста:
    • {'hostid':1, 'host': 'test1'}
    • {'hostid':2, 'host': 'test2'}
    Задача: переименовать один в другой.
    Выполняю API метод host.update:
    Code:
    {
        'jsonrpc': '2.0',
        'method': 'host.update',
        'params': [
            {
                'hostid': 1,
                'host': 'test2'
            },
            {
                'hostid': 2,
                'host': 'test1'
            }
        ],
        'id': 1
    }
    Получаю следующую ошибку:
    Code:
    {
        'jsonrpc': '2.0',
        'error': {
            'code': -32602,
            'message': 'Invalid params.',
            'data': 'Host with the same name "test1" already exists.'
        },
        'id': 1
    }​
    Я понимаю, что скорее всего Zabbix выполняет обновление хостов последовательно и ловит конфликт в процессе. Но вот как этого избежать (с условием, что итоговый набор данных не вызывает конфликта)?

    Пример простой, по факту скрипт обновляет 15-30 тысяч хостов и решать такие вопросы в ручном режиме не вариант. Можно предварительно переименовывать все хосты с каким-нибудь префиксом, но от этого сильно нагружаются внутренние процессы Zabbix.
    Last edited by Sinot; 25-06-2025, 12:55.
Working...