terça-feira, 5 de setembro de 2017

Atualizando o nome do host no Zabbix a partir de um campo do inventário

Contexto

Uma das primeiras dificuldades ao tentar automatizar a implantação do Zabbix, é que ao configurar o auto-discovery, você percebe que o equipamento é cadastrado com seu endereço ip, e não existe uma forma pronta de fazer com que o nome seja populado a partir de algum outro campo. O caminho mais óbvio é a utilização de dados do inventário para tal tarefa.

Tendo este cenário em vista, resolvi desenvolver um script para automatizar esta tarefa. O script pode ser obtido neste repositório

updateNamesFromInventory

Descrição

O script copia o nome que está no inventário para o nome do equipamento. Caso exista uma atualização no inventário, o nome também é atualizado. Para evitar a criação de nomes duplicados, nestes casos é adicionado o endereço de ip antes do nome. Em alguns casos, é desejável que este equipamento fique desabilitado, para evitar que um mesmo equipamento seja monitorado múltiplas vezes através de cada um de seus endereços, como pode ocorrer em roteadores e firewalls. Você pode então, configurar uma lista de grupos para quais os hosts devem ser desabilitados. O comportamento padrão, é manter o equipamento habilitado.

Toda interação com a base do Zabbix é feita através da API PyZabbix

Instalação

Em um sistema baseado em Debian:

apt-get install python-setuptools python-dev build-essential
easy_install pip
pip install --upgrade virtualenv
pip install pyzabbix

Configuração

Os seguintes parâmetros estão no início do arquivo de script updateNamesFromInventory.py. Configure o usuário do Zabbix que terá acesso via API. Certifique-se de que o usuário possui direitos suficientes para alterar os hosts:

user = "Admin"

A senha para este usuário:

secret = "zabbix"

A URL para a API do Zabbix:

zapi = ZabbixAPI("http://127.0.0.1/zabbix")

Os ids dos grupos de hosts nos quais os hosts devem ser desabilitados se o nome for repetido:

disableIfDuplicatedGroups=[8,9]

Utilização

 ./updateNamesFromInventory.py

Este script não possui parâmetros externos.

Para referência de performance, para renomear uma base com aproximadamente 3 mil equipamentos, o script leva pouco mais de um minuto. Ele pode ser executado múltiplas vezes para manter a base atualizada.


Nenhum comentário:

Postar um comentário