DEV Community

Railander Marques
Railander Marques

Posted on

Script de Exportação de Hosts do Zabbix para CSV

Introdução:

Este script em Python se conecta à API do Zabbix, para obter informações valiosas sobre hosts e templates. Através de chamadas à API, o script realiza o login, recupera dados sobre os hosts, incluindo seus grupos e templates associados, e organiza essas informações em um arquivo CSV.

Autenticação: Utiliza as credenciais do Zabbix (usuário e senha) para autenticar-se na API.

Obtenção de Dados: Faz chamadas à API para extrair detalhes sobre hosts, incluindo seus grupos e templates associados.

Organização e Armazenamento: Estrutura os dados em um formato legível e armazena-os em um arquivo CSV.



Passo 1. Salve esse script para exportação dos dados em python:

import requests
import json
import csv

# Configurações da API do Zabbix
url = 'https://zabbix.dominio.com.br/api_jsonrpc.php'
headers = {'Content-Type': 'application/json'}

# Credenciais de autenticação
usuario = 'seu_user'
senha = 'sua_senha'

# Função para fazer uma chamada à API do Zabbix
def zabbix_api_request(method, params, auth_token=None):
    data = {
        'jsonrpc': '2.0',
        'method': method,
        'params': params,
        'auth': auth_token,
        'id': 1
    }
    response = requests.post(url, data=json.dumps(data), headers=headers)
    result = response.json()

    if 'error' in result:
        raise Exception(f'Erro na chamada à API do Zabbix: {result["error"]["data"]}')

    return result.get('result', None)

# Função para fazer login na API do Zabbix e obter o token de acesso
def zabbix_login(usuario, senha):
    method = 'user.login'
    params = {'user': usuario, 'password': senha}
    response = zabbix_api_request(method, params)
    return response

# Função para obter informações de hosts por grupo, incluindo templates
def obter_hosts_com_templates(auth_token):
    method = 'host.get'
    params = {
        'output': ['host', 'name', 'groups'],
        'selectGroups': 'extend',
        'selectInterfaces': ['ip'],
        'selectParentTemplates': ['templateid', 'name']
    }

    response = zabbix_api_request(method, params, auth_token)

    if response is None:
        raise Exception('Nenhuma resposta válida da chamada à API para obter hosts.')

    hosts_com_templates = {}

    for host in response:
        for group in host.get('groups', []):
            grupo_nome = group.get('name', 'Sem Grupo')
            if grupo_nome not in hosts_com_templates:
                hosts_com_templates[grupo_nome] = []
            templates = [template['name'] for template in host.get('parentTemplates', [])]
            hosts_com_templates[grupo_nome].append({
                'hostname': host.get('host', ''),
                'ip': host['interfaces'][0]['ip'] if host.get('interfaces') else '',
                'templates': templates
            })

    return hosts_com_templates

# Função para escrever as informações em um arquivo CSV
def escrever_csv(info_hosts_com_templates):
    with open('info_hosts_templates.csv', mode='w', newline='') as arquivo_csv:
        writer = csv.writer(arquivo_csv)
        writer.writerow(['Grupo', 'Hostname', 'IP', 'Templates'])

        for grupo, hosts in info_hosts_com_templates.items():
            for host in hosts:
                writer.writerow([grupo, host['hostname'], host['ip'], ', '.join(host['templates'])])

# Faz login e obtém o token de autenticação
token_autenticacao = zabbix_login(usuario, senha)

# Obtém informações de hosts por grupo, incluindo templates
info_hosts_com_templates = obter_hosts_com_templates(token_autenticacao)

# Escreve as informações em um arquivo CSV
escrever_csv(info_hosts_com_templates)
Enter fullscreen mode Exit fullscreen mode



Passo 2. Para funcionamento, precisaremos do python instalado e a biblioteca requests:

No linux:

# Instalar o Python3
sudo apt update
sudo apt install python3
# Instalar o pip3 (gerenciador de pacotes do Python)
sudo apt install python3-pip
# Instalar a biblioteca requests
pip3 install requests
Enter fullscreen mode Exit fullscreen mode

No Windows:

  • Instale o Python no repo: https://www.python.org/
  • Certifique-se de marcar a opção "Add Python to PATH" durante a instalação.
# Atualizar o pip
python -m pip install --upgrade pip
# Instalar a biblioteca requests
pip install requests
Enter fullscreen mode Exit fullscreen mode



Passo 3. Execute o script para gerar o relatório em .csv:

  • python3 script.py
  • Pronto, o arquivo gerado chamado info_hosts_templates.csv será dessa forma:

Image description

Top comments (0)