Ad Widget

Collapse

Windows interface de rede

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Smael Niehues Silvano
    Junior Member
    • Feb 2014
    • 5

    #1

    Windows interface de rede

    Boa tarde pessoal,

    Preciso de um ajuda no monitoramento de interfaces de rede no windows.
    Tenho quase uma centena de servidores windows e preciso monitorar o tráfego de rede deles igual já faço com os servidores linux.
    Porém, os servidores Linux as interfaces são eth0,eth1... em0, em1.
    No windows eu teria que colocar o nome diferente para cada modelo de placa:
    "Realtek PCIe GBE Family Controler"
    Então resolvi pesquisar, e testar alguma coisas. Descobri que se colocar o IP local também funciona:
    net.if.total[10.1.1.250]
    Mas ainda continuava com o problema de ter que cadastrar todos os IPs e além do tráfego teria que coletar outros dados então seriam centenas de registros no template.
    Como resolvi fazer tudo em PowerShell que aplica-se melhor ao meu cenário resolvi criar uma chave que retorne o IP só mudar o número do array e vai trazendo de todas as interfaces [0]:
    network.ip, powershell.exe -nologo -file zabbix_script.ps1
    Dentro do script:
    Code:
    [System.Net.Dns]::GetHostbyName($env:COMPUTERNAME).AddressList[0].IPAddressToString
    Criei um item e o IP retorna correto. Porém queria utilizar desta forma só que não funcionou aqui:
    net.if.total[network.ip]

    Alguém mais tem ideia de como posso fazer isso?
    Garanto que já perdi várias horas pesquisando.
  • m_gularte
    Member
    Zabbix Certified Specialist
    • Jul 2012
    • 85

    #2
    Olá,

    Você pode tentar este item:

    net.if.total[{IPADDRESS}], porém não sei qual será o comportamento se o servidor tiver duas placas de rede ou mais.

    Outra opção é usar o lld - low level discovery nos servidores e deixar ele criar os itens, e depois criar filtros para não coletar o que não precisa, como aqueles wan miniports, microsoft virtual, etc...

    Ou ainda, você poderia criar um template "pai" com todos esses itens de rede, cada um apontando para cada nome de placa Realtek PCIe GBE Family Controler, citrix, etc. E aplicar este template em todos os servidores e depois desativar todos os que estiverem com o status "não suportado" OU ir no template, selecionar os itens e copiar para os hosts que você sabe que possuem a placa x. Porém, não da para copiar os gráficos...

    Enfim, boa sorte =x

    Mauro

    Comment

    • Smael Niehues Silvano
      Junior Member
      • Feb 2014
      • 5

      #3
      Então, eu não queria criar dezenas de itens de placas de rede no template, pois os servidores dos meus clientes não são padronizados.

      A chave: network.ip (É minha chave personalizada que retorna o IP do servidor)
      No caso tenho um item que traz o IP local ex:
      192.168.1.13
      E se eu colocar o IP diretamente dentro da chave:
      net.if.total[192.168.1.13]

      Ele me traz o tráfego de rede da interface com o IP.

      Porém o que eu quero é colocar a chave "network.ip" dentro da chave net.if.total[]
      Assim: net.if.total[network.ip] . Existe alguma forma de fazer isso?

      O comando a baixo pode trazer quantas interfaces de rede eu precisa é só mudar o número do array, no caso criaria 4 itens no template:
      [System.Net.Dns]::GetHostbyName($env:COMPUTERNAME).AddressList[0].IPAddressToString
      [System.Net.Dns]::GetHostbyName($env:COMPUTERNAME).AddressList[1].IPAddressToString
      [System.Net.Dns]::GetHostbyName($env:COMPUTERNAME).AddressList[2].IPAddressToString
      [System.Net.Dns]::GetHostbyName($env:COMPUTERNAME).AddressList[4].IPAddressToString


      Já havia olhado sobre o "low level discovery" porém achei essa outra solução mais simples, se funcionar é claro.

      Testei desta forma e não foi: net.if.total[{network.ip}]

      Comment

      • m_gularte
        Member
        Zabbix Certified Specialist
        • Jul 2012
        • 85

        #4
        Então, eu entendi o seu problema, mas sobre o item que eu comentei, a sintaxe é exatamente essa:

        net.if.total[{IPADDRESS}]

        Não é para alterar nada, esse ipaddress é macro global, ele irá pegar o ip que esta setado lá no campo do ip do agente no host.

        Seja como for, eu não sei a resposta para seu problema. Eu usaria o template de low discovery mesmo e filtraria os itens desnecessários. Além disso, teoricamente não é possível usar o resultado de um item para ser usado na chave de outro item.

        Comment

        • Smael Niehues Silvano
          Junior Member
          • Feb 2014
          • 5

          #5
          Acho que vou ter que realmente tentar utilizar o low discovery mesmo.
          A configuração do host está o IP de internet, pois os servidores são remotos, porém para monitorar a interface preciso do IP local.
          Se não tem como inserir uma chave dentro da outra então fica complicado mesmo.
          Seria possível coleta de um item, tipo na trigger?: last(network.ip)
          Testei algo assim já mas também deu como não suportado.

          Obrigado pela ajuda.

          Comment

          • Smael Niehues Silvano
            Junior Member
            • Feb 2014
            • 5

            #6
            Utilizando o low level discovery consegui resolver o problema, na verdade era bem mais simples do que eu pensava.
            Só achei pouca informação para implementar, mas depois de muitas horas de esforço está funcionando.

            Só achei um contra, não consegui gerar dependências nas triggers com o low level discovery.

            Comment

            • m_gularte
              Member
              Zabbix Certified Specialist
              • Jul 2012
              • 85

              #7
              Isso, essa questão de dependência de triggers no lld também é uma velha conhecida da comunidade... Existem alguns chamados de melhoria abertos la na zabbix a respeito, uma hora eles devem corrigir isso, mas por hora não existe.

              Comment

              Working...