Ad Widget

Collapse

Dúvida em criar template flexibilizando nomes de chaves nos itens

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • nizopi
    Junior Member
    • Sep 2018
    • 25

    #1

    Dúvida em criar template flexibilizando nomes de chaves nos itens

    Boa tarde pessoal, tudo bem?

    Me ajudem com essa situação:

    Criei um monitoramento via userparameter, que coleta dados de temperatura de algumas cidades em um determinado site:


    Configuração no arquivo "zabbix_agentd.conf"


    #COLETA DE CLIMA DA CIDADE DE PRESIDENTE PRUDENTE
    UserParameter=temperatura_prudente,lynx -dump https://www.foreca.com/Brazil/Presidente_Prudente | grep "+" | grep °C | sed 's/°//' | sed 's/+//' | sed 's/C//'
    UserParameter=umidade_prudente,lynx -dump https://www.foreca.com/Brazil/Presidente_Prudente | grep "Humidity:" | sed 's/%//' | awk '{print $2}'
    UserParameter=data_leitura_prudente,lynx -dump https://www.foreca.com/Brazil/Presidente_Prudente | grep "As of" | sed 's/As of//' | awk '{print $1,$2}' | sed 's/ / as /'

    #COLETA DE CLIMA DA CIDADE DE JAU
    UserParameter=temperatura_jau,lynx -dump https://www.foreca.com/Brazil/Jau | grep "+" | grep °C | sed 's/°//' | sed 's/+//' | sed 's/C//'
    UserParameter=umidade_jau,lynx -dump https://www.foreca.com/Brazil/Jau | grep "Humidity:" | sed 's/%//' | awk '{print $2}'
    UserParameter=data_leitura_jau,lynx -dump https://www.foreca.com/Brazil/Jau | grep "As of" | sed 's/As of//' | awk '{print $1,$2}' | sed 's/ / as /'



    Os comandos acima funcionam perfeitamente, inclusive testando com o comando:

    zabbix_get -s 127.0.0.1 -k temperatura_prudente
    zabbix_get -s 127.0.0.1 -k umidade_jau

    e assim por diante...


    Acontece que quando eu tinha um monitoramento, não tive dúvida em fazer o template, porém, agora com mais de uma cidade, não sei como faço para deixar ele mais flexível, utilizando macros por exemplo para chamar as chaves criadas (temperatura_prudente, temperatura_jau)

    A ideia é deixar um template padrão: "Template temperatura de cidades", e usando macros, alterar apenas a chave que identifica a cidade.

    Meu template atual está assim:

    Imagem em anexo 1.

    Mas dessa forma, sempre que aplico o template para um novo host de temperatura de cidade, ele já aplica a chave de prudente..pensando em flexibilizar, tentei a seguinte solução:

    Imagem em anexo 2.

    Porém, dá o erro do anexo 3.

    A intensão era colocar as macros no Host, chamando as chaves referente a cidade, assim como mostra na imagem 4.


    Alguém pode me ajudar a resolver essa situação?

    Muito obrigado.
    Attached Files
    Last edited by nizopi; 23-04-2019, 20:29.
  • brunohl
    Senior Member
    Zabbix Certified Specialist
    • Mar 2019
    • 215

    #2
    Opa, tenho um cenário parecido.

    A sua ideia está quase correta, porém o que você deve fazer é usar uma chave estática e a macro que vai diferenciar qual a temperatura a ser lida dentro dela. Ex:

    temperatura[$CIDADE]

    Aonde você irá mudar para informar a cidade em seu host, como temperatura[prudente], temperatura[cidade2] ...

    No seu UserParameter, você deve alterar para aceitar um parâmetro e trabalhar ele:
    Code:
    UserParameter=temperatura[*],lynx http://buscartemperatura.com.br/$1
    Ou até mesmo ver se não vale a pena migrar essa sua consulta para um webscenario ou http agent.
    Em anexo como eu uso no meu cenário (recentemente migrei de UserParameter com curl para HTTP Agente e Web Checks).
    Attached Files

    Comment


    • nizopi
      nizopi commented
      Editing a comment
      Muito obrigado pela ajuda brunohl, com suas dicas consegui chegar no resultado que eu precisava utilizando UserParameter mesmo, em uma próximo vou fazer o monitoramento com Web Checks

      Vou postar aqui como ficaram as configurações para poder auxiliar outros que precisam tbm.

      Só fiquei com uma dúvida quanto a utilizar uma macro de host e um nome de gráfico, no caso a macro {$CIDADE}, que possui a cidade que esta sendo monitorada, quero usar para complementar o nome do gráfico:

      Nome: Temperatura da cidade de {$CIDADE}

      Mas não está dando certo, simplesmente aparece o nome da mesma forma acima: "Temperatura da cidade de {$CIDADE}"

      Poderia me dizer se isto é possível e como fazer ?

      Obrigado.
  • nizopi
    Junior Member
    • Sep 2018
    • 25

    #3
    Boa tarde, essa foi a maneira que ficaram os arquivos de configuração:

    Cada Anexo tem os nomes como:

    Template, UserParamenter..

    Assim fica fácil identificar de onde é cada print.

    Obg.
    Attached Files

    Comment

    • brunohl
      Senior Member
      Zabbix Certified Specialist
      • Mar 2019
      • 215

      #4
      Opa, legal que te atendeu cara.

      Sobre a macro no título de um gráfico, eu nunca usei, mas acho que não funciona cara.

      Da uma olhada aqui:


      Fala todos os locais aonde macros sao aceitas e não fala em gráficos pelo que vi.

      Comment

      • brunohl
        Senior Member
        Zabbix Certified Specialist
        • Mar 2019
        • 215

        #5
        Olha, dei uma olhada e o que e suportado e você usar o valor de um item para o nome do gráfico (https://www.zabbix.com/documentation...ed_by_location)

        ​​

        Então talvez se você fizer um item que retorne o nome da cidade, acho que funciona, e meio improvisado, mas acho que e a única saída.

        Comment


        • nizopi
          nizopi commented
          Editing a comment
          Olá Bruno, realmente até hoje não encontrei nada nesse sentido, mas sem problemas, a necessidade não é tão urgente no momento.

          Muito obrigado pelas dicas, me ajudaram muito mesmo.

          Abraço.
      • brunohl
        Senior Member
        Zabbix Certified Specialist
        • Mar 2019
        • 215

        #6
        Opa, agora estava olhando nossa conversa e pensei em outra possibilidade que talvez funcionasse para o que você procura (não tenho certeza). Talvez se você usasse uma LLD para realizar a descoberta das cidades a monitorar e usar os valores de resposta como nome do gráfico talvez funcione.

        Comment

      Working...