Ad Widget

Collapse

Relatório direto no banco

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • gustbar
    Member
    • Jul 2023
    • 36

    #1

    Relatório direto no banco

    Amigos,

    Preciso pegar um relatório do banco, pois a interface do zabbix não me deixa ter essas opções, preciso pegar, host, ip, grupo de host, mac address (que está no inventário), queria fazer usando WorkBench com comandos sql, alguém poderia me ajudar.

    Click image for larger version

Name:	image.png
Views:	222
Size:	90.0 KB
ID:	468024
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    A julgar pela consulta ao banco de dados, você não preenche os campos de inventário com os valores dos itens de dados.
    A tabela host_inventory está vazia.

    Comment

    • gustbar
      Member
      • Jul 2023
      • 36

      #3
      @Hamardaban​ essa base é uma de homologação, estou pegando os dados do banco principal, para treinar os select. Para fazer um relatório

      Comment

      • Hamardaban
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • May 2019
        • 2713

        #4
        Alterar o pedido como você precisa. Todas as ligações são visíveis.
        Code:
        SELECT H.hostid, H.host, H.name, HI.macaddress_a, HI.macaddress_b, I.ip, I.dns, HG.name
        FROM hosts H, host_inventory HI, interface I, hosts_groups HGS, hstgrp HG
        WHERE HI.hostid = H.hostid
        AND  I.hostid = H.hostid
        AND  HGS.hostid = H.hostid AND HG.groupid = HGS.groupid​

        Comment

        • gustbar
          Member
          • Jul 2023
          • 36

          #5
          ​@Hamardaban​ , Obrigado pelo feedback
          quando executo o select ele da erro, consegui rodar com ele até essa linha abaixo:

          SELECT H.hostid, H.host, H.name, HI.macaddress_a, HI.macaddress_b, I.ip, I.dns, HG.name
          FROM hosts H, host_inventory HI, interface I, hosts_groups HGS, hstgrp HG
          WHERE HI.hostid = H.hostid
          AND I.hostid = H.hostid

          Eu percebo que ele esta dando 20 linhas ou mais do mesmo id, ela consegue consultar todo o banco, e me da em torno de 20 linhas para cada id

          Click image for larger version

Name:	image.png
Views:	133
Size:	72.3 KB
ID:	468428

          Comment

          • Hernandes Martins
            Senior Member
            Zabbix Certified SpecialistZabbix Certified Professional
            • Apr 2011
            • 900

            #6
            Olá meu caro,

            Porque não utilzou a api do zabbix é bem fácil estruturar as saídas desejadas.


            __

            Att.
            Hernandes Martins - Zabbix Trainer

            Zabbix Brazil Partner - www.luniobr.com

            Zabbix Brazil Community - www.zabbixbrasil.org

            Blog: hernandesmartins.blogspot.com.br

            Skype: hernandss
            Telegram: @MrHernandes

            Español
            Facebook: facebook.com/groups/zabbixlatam
            Telegram: https://t.me/ZabbixEspañol

            Português
            Facebook: facebook.com/groups/zabbixbrasil/
            Telegram: https://t.me/ZabbixBrasil

            Comment

            • Hamardaban
              Senior Member
              Zabbix Certified SpecialistZabbix Certified Professional
              • May 2019
              • 2713

              #7
              Se você remover a condição de vinculação de tabelas (WHERE), também remova as tabelas da lista de seleção (SELECT).

              Comment

              • gustbar
                Member
                • Jul 2023
                • 36

                #8
                @Hernandes Martins​ qual api faz isso?

                Comment

                • Hernandes Martins
                  Senior Member
                  Zabbix Certified SpecialistZabbix Certified Professional
                  • Apr 2011
                  • 900

                  #9
                  Da uma olhada na api do zabbix




                  Bibliotecas


                  __

                  Att.
                  Hernandes Martins - Zabbix Trainer

                  Zabbix Brazil Partner - www.luniobr.com

                  Zabbix Brazil Community - www.zabbixbrasil.org

                  Blog: hernandesmartins.blogspot.com.br

                  Skype: hernandss
                  Telegram: @MrHernandes

                  Español
                  Facebook: facebook.com/groups/zabbixlatam
                  Telegram: https://t.me/ZabbixEspañol

                  Português
                  Facebook: facebook.com/groups/zabbixbrasil/
                  Telegram: https://t.me/ZabbixBrasil

                  Comment

                  • gustbar
                    Member
                    • Jul 2023
                    • 36

                    #10
                    @Hamardaban​ eu vou ter que ir caminhando por enquanto com suas dicas, pois a parte de API ainda não tenho conhecimento, veja consegui fazer o select com sua ajuda, ele esta listando agora os ip, eu tirei os host grp pois ele que deixava para cada uma linha um grupo, teria como por esses grupos em apenas uma linha como, voce pode observar, no print abaixo, tem lugares que tem dois IPs para controle, ele lista 2 linhas, poderia ser 1 linha apenas e ter Ip, snmp, ip, agente, group ou etiquetas? Ante mão essa parte apenas que ja tenho, me ajudara muito, O PAi te abençoe ricamente.,

                    Click image for larger version

Name:	image.png
Views:	133
Size:	44.9 KB
ID:	468440

                    Comment

                    • gustbar
                      Member
                      • Jul 2023
                      • 36

                      #11
                      Hamardaban
                      Amigo, como está?
                      Consegui montar um select que me atende, com sua ajuda, ele ficou assim

                      SELECT
                      H.host, HS.name, HI.macaddress_a, HI.macaddress_b, I.ip, HT.tag
                      FROM
                      hosts H,
                      host_inventory HI,
                      interface I,
                      host_tag HT,
                      hosts_groups HG,
                      hstgrp HS
                      WHERE
                      HI.hostid = H.hostid
                      AND I.hostid = H.hostid
                      AND H.hostid = HT.hostid
                      AND H.hostid = HG.Hostid
                      AND HG.groupid = HS.groupid

                      Porém percebi que quando tem mais de uma tag ou ip, ele da valores dobrado como nesse exemplo, existe uma maneira de deixar na mesma linha?
                      Click image for larger version

Name:	image.png
Views:	127
Size:	10.4 KB
ID:	468529

                      Comment

                      • Hamardaban
                        Senior Member
                        Zabbix Certified SpecialistZabbix Certified Professional
                        • May 2019
                        • 2713

                        #12
                        ¡Buenos días!
                        Con la ayuda de una consulta a la base de datos, no es tan fácil hacer una salida "en una cadena". Mi conocimiento no es suficiente. :-)​

                        Comment

                        • gustbar
                          Member
                          • Jul 2023
                          • 36

                          #13
                          Após algumas buscas, achei a solução caso interesse alguém...

                          SELECT
                          UPPER(H.host) AS HOST,
                          GROUP_CONCAT(DISTINCT UPPER(HS.name)) AS GRUPOS,
                          HI.macaddress_a AS MACADDRESS_A,
                          HI.macaddress_b AS MACADDRESS_B,
                          GROUP_CONCAT(DISTINCT I.ip) AS IPS,
                          GROUP_CONCAT(HT.tag) AS TAGS
                          FROM
                          hosts H
                          INNER JOIN host_inventory HI ON HI.hostid = H.hostid
                          INNER JOIN interface I ON I.hostid = H.hostid
                          INNER JOIN host_tag HT ON HT.hostid = H.hostid
                          INNER JOIN hosts_groups HG ON HG.Hostid = H.hostid
                          INNER JOIN hstgrp HS ON HG.groupid = HS.groupid
                          GROUP BY
                          H.host,
                          HI.macaddress_a,
                          HI.macaddress_b;​

                          Comment

                          Working...