janssenlima / ZabbixTuner

Diagnóstico de desempenho do Zabbix Server
GNU General Public License v3.0
47 stars 20 forks source link

listagemItensNaoSuportados: IndexError list index out of range #6

Closed tiago-cruz-movile closed 5 years ago

tiago-cruz-movile commented 8 years ago

Olá janssen, tudo bem? Estive lá na Zabbix Conf LATAM 2016.

Lembra que te falei sobre um erro? Seria esse aqui:

[+] - Selecione uma opção[0-9]: 6
Traceback (most recent call last):
  File "./ZabbixTuner.py", line 361, in <module>
    main()
  File "./ZabbixTuner.py", line 359, in main
    menu()
  File "./ZabbixTuner.py", line 53, in menu
    menu_opcao()
  File "./ZabbixTuner.py", line 60, in menu_opcao
    listagemItensNaoSuportados()
  File "./ZabbixTuner.py", line 162, in listagemItensNaoSuportados
    main()
  File "./ZabbixTuner.py", line 359, in main
    menu()
  File "./ZabbixTuner.py", line 53, in menu
    menu_opcao()
  File "./ZabbixTuner.py", line 70, in menu_opcao
    menu()
  File "./ZabbixTuner.py", line 53, in menu
    menu_opcao()
  File "./ZabbixTuner.py", line 70, in menu_opcao
    menu()
  File "./ZabbixTuner.py", line 53, in menu
    menu_opcao()
  File "./ZabbixTuner.py", line 64, in menu_opcao
    diagnosticoAmbiente()
  File "./ZabbixTuner.py", line 143, in diagnosticoAmbiente
    main()
  File "./ZabbixTuner.py", line 359, in main
    menu()
  File "./ZabbixTuner.py", line 53, in menu
    menu_opcao()
  File "./ZabbixTuner.py", line 66, in menu_opcao
    agentesDesatualizados()
  File "./ZabbixTuner.py", line 106, in agentesDesatualizados
    })[0]["lastvalue"]
IndexError: list index out of range

Abraços

janssenlima commented 8 years ago

Fala Tiago, tudo bem?

Eu atualizei o código um tempo atrás. Você poderia testar novamente?

A opção 6 agora lista os hosts com agent zabbix desatualizados. É essa listagem que você tentou executar?

tiago-cruz-movile commented 8 years ago

Grande Jassen!

Estou usando o ultimo commit de Abril, esse aqui:

commit 6a1f3e91310b1f05a5b82e42fc5adc0db976f1f0
Author: Janssen dos Reis Lima <janssenreislima@gmail.com>
Date:   Fri Apr 29 14:00:13 2016 -0300

    Update ZabbixTuner.py

Detalhe: Meu server roda Zabbix 3.0.3

E função que retornou falha foi essa mesmo: [6] - Relatório de Agentes Zabbix desatualizados

Embora agora o strack trace tenha sido diferente:

[+] - Selecione uma opção[0-9]: 6
Traceback (most recent call last):
  File "./ZabbixTuner.py", line 361, in <module>
    main()
  File "./ZabbixTuner.py", line 359, in main
    menu()
  File "./ZabbixTuner.py", line 53, in menu
    menu_opcao()
  File "./ZabbixTuner.py", line 66, in menu_opcao
    agentesDesatualizados()
  File "./ZabbixTuner.py", line 106, in agentesDesatualizados
    })[0]["lastvalue"]
IndexError: list index out of range

Abraços!!

janssenlima commented 8 years ago

Na linha 106 eu coloco o ID do Zabbix Server para ele comparar com os outros hosts. É uma prática atualizarmos o servidor primeiro antes dos agentes. Por isso eu faço essa comparação. Eu simulei aqui informando um código que não existe e deu o mesmo erro. Você chegou a modificar o ID nesta linha, como no exemplo abaixo:

"hostids": "10084"

10084 é o ID do Zabbix Server. Ou talvez ele não tem a coleta do item do Zabbix Server.

janssenlima commented 8 years ago

Atualizei o código para tratar esse erro. Dá um ok se foi esse o problema. Pelo que eu simulei é isso.

tiago-cruz-movile commented 8 years ago

Nossa, estranho hein?!

[+] - Selecione uma opção[0-6]: 6
Não foi possível obter a versão do agent no Zabbix Server.
Pressione ENTER para continuar

Pior que eu consigo sim pegar a versão do server

>>> zapi = ZabbixAPI(server = server, path="", log_level=0)
>>> zapi.login(username, password)
>>> versao = zapi.api_version()
>>> print "Zabbix Server version: ", versao
Zabbix Server version:  3.0.3

E olhe só, não me pergunte porque, mas meu server não é ID 10084 e sim 13738. Será que esse lance de ID fixo mudou agora no Zabbix3?

>>> versaoZabbixServer = zapi.item.get ({
...       "filter": {"key_": "agent.version"},
...       "output": ["lastvalue", "hostid"],
...       "hostids": "13738"
...       })[0]["lastvalue"]
>>> versaoZabbixServer
u'3.0.3'

Talvez seja melhor procurar por Template App Zabbix Server e pegar o ID desse cara? :)

Abraços!!

janssenlima commented 8 years ago

Eu pensei aqui em colocar uma flag no conf/zabbix.py para o usuário informar o ID do Zabbix Server. Buscar pelo template vai gerar uma nova requisição. Mas vou fazer uns testes para ver se vai ser rápido.