Consulta JSON para API Zabbix

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

    Consulta JSON para API Zabbix

    Boa tarde,

    Com o aumento de ativos e itens em meu monitoramento do Zabbix tive a necessidade de estudar o funcionamento da API Zabbix onde meu objetivo principal é exportar relatórios personalizados com base na informação que eu preciso e para isso escolhi o tutorial feito por Thiago Murilo Diniz a comunidade Zabbix Brasil "Gerenciando Relatórios Personalizados com JasperReports".

    O meu cenário é o seguinte:

    Possuo 45 servidores pelo Brasil com Ubuntu Server e cada servidor deste possui o OpenVPN. O Zabbix Client instalado em cada servidor possui o seguinte UserParameter:
    UserParameter=vpnname, cat /etc/openvpn/vpn.conf | grep remote | awk '{print $2}'

    A informação que este Item me retorna é saber em qual link meu servidor da filial está conectado, se é a operadora X ou operadora Y. Lembro que esta coleta possui mapeamento de valor.

    Alguns dados que coletei:

    groupid -> 23
    valuemapid -> 20
    key_ -> vpnname

    Minha dúvida é saber qual método utilizar, se item.get, host.get ou history.get e como montar os parâmetros JSON.

    Alguém que consiga me ajudar ?

    ---------------------------------------------------------------------------------------------
    {
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
    XXXXXXXXXXXXXXXXXX
    },
    "id": 0,
    "auth": "53aba39445d5b511c94207e6d69b6401"
    }

    ---------------------------------------------------------------------------------------------

    #2
    Tela do meu Zabbix para entendimento

    Click image for larger version

Name:	Tela_Zabbix.png
Views:	1
Size:	99.9 KB
ID:	368649

    Comment


      #3
      Acredito que a API não seja a forma mais simples de você conseguir isso. Uma sugestão de outra abordagem e o que acho serem algumas correções na sua postagem
      O UserParameter é definido no agente, esse parâmetro é usado posteriormente para criar um item no servidor zabbix, um dos parâmetros do item é a key, definida no parâmetro
      Por exemplo:
      (Na configuração do agente do host que vai ser monitorado)
      UserParameter=checar_servico[*],ps -Awl | grep $1 >> /dev/null ;echo $?
      (Esse comando vai retornar 0 se o serviço estiver OK e outro valor se não estiver)
      Não faz sentido usar $2 se você não usou $1 ainda...

      Você pode testar esse serviço com zabbix_get, disparado a partir do servidor zabbix (que monitora o host):
      zabbix_get -s endereco_host -p 10050 -k checar_servico[httpd]

      Se não ocorrer erro então a configuração do agente está OK.
      Note que como você tem poucos hosts poderia fazer um script ou algo do tipo apenas usando zabbix_get para ler os valores e gravar em um banco de dados ou arquivo, eu faria dessa forma.

      Se você quer realmente usar a API para ler os valores, eu não posso te dar uma resposta completa, mas com certeza você vai precisar criar um item antes.
      Para que o servidor zabbix leia o valor você vai ter que criar um item, diretamente nos hosts que você criou ou em um template que você aplicaria nos hosts.

      Sugestão de valores para o item:
      Nome: Testar Http
      tipo: Agente zabbix
      chave: checar_servico[httpd]

      Note que esse item pode ser criado tanto pela interface web quanto via api, com item.create, mas isso não implica que a api esteja lendo o valor do item.
      Os valor desse item deve aparecer em 'lastest data' para cada host.

      Agora, como você lê o valor desse item, usando a API eu não sei responder.
      Uma abordagem razoável seria criar um trigger para sempre que o valor do item mudasse e depois uma Action que executa um comando sempre que o trigger é disparado.

      Alguns parâmetros para o trigger:
      Nome: Serviço http inativo
      Expressão: {template_servidores_filiais:checar_servico[httpd].last()}>0

      No seu caso especĩfico seria mais algo como:
      Nome: Mudança de Link
      Expressão: {template_servidores_filiais:chave_link[parametro].diff(0)}>0

      Eu nunca trabalhei com ações (ainda) então aqui é mais suposição mesmo:
      Na ação:
      Nome: Mudança de Link
      Condicao: Nome Trigger like

      Operations:
      Operation type: Remote command
      Zabbix Server:
      script_que_registra_mudanca:
      Para o script acho que você pode passar qualquer parâmetro, como: {EVENT.TIME} on {EVENT.DATE} {TRIGGER.NAME}, {HOST.NAME} {TRIGGER.SEVERITY} , {EVENT.ID}, {TRIGGER.URL}



      Last edited by 1berto; 08-11-2018, 18:34.

      Comment

      Announcement

      Collapse
      No announcement yet.
      Working...
      X