Zabbix – Monitoramento RDP Terminal Server

4 Flares Twitter 0 Facebook 0 Google+ 0 LinkedIn 4 4 Flares ×
Zabbix – Monitoramento RDP Terminal Server
5 (100%) 3 votos

zabbix-topo

Olá a todos, como iniciação do meu 1º blog venho atender alguns pedidos da comunidade zabbix e grupo no skype, espero que este seja o primeiro de muitos artigos visando agregar maior valor a esta incrível ferramenta de monitoramento, sabemos que hoje em dia, dificilmente encontraremos ambientes corporativos que não utilizem o recurso do RDP, então neste artigo veremos como monitorar estatísticas de um servidor RDP Terminal Service com o zabbix, aprenderemos como coletar os seguintes dados: usuários ativos, usuários inativos, nome do dispositivo remoto, IP do dispositivo remoto, alêm de uma breve demonstração do resultado final e configuração básica dos itens coletados em um mapa, sem mais blá blá blá, vamos logo a mão na massa.

Atenção: Supondo que você já tenha um servidor com a função “Remote Desktop Services” instalada e devidamente configurada para prover acesso via Área de Trabalho Remota aos usuários, vamos começar.

Ambiente usado neste laboratório:

Ubuntu Server 14.04 LTS, Zabbix Server 3.0 LTS, Windows 2008 Server R2 Enterprise, Agent Zabbix Windows 3.0.

Requisitos para este exercício:

Windows Powershell 2.0 ou superior, módulo PSTerminalServices, conhecimento básico em userparameter e comandos DOS Windows.

Download:

Arquivos usados neste post: Baixar PSTerminalServices-Arquivos.zip (566 downloads)

Estrutura dos diretórios, arquivos de configuração, scripts, e userparameters do Agent Windows neste exemplo:

Diretório zabbix_agentd.conf: C:\Zabbix

Diretório Scripts: C:\Zabbix\Monitoramento\Scripts\

Diretório UserParameters: C:\Zabbix\Monitoramento\UserParameters\

Parâmetros usados no zabbix_agentd.conf:

Include=c:\Zabbix\Monitoramento\UserParameters\

Timeout=15

UnsafeUserParameters=1

Atenção: Peço que fiquem atentos aos diretórios usados neste exemplo, pois podem variar de acordo com a sua instalação do Agent Windows, então muita atenção nos caminhos informados nos scripts e userparameters utilizados neste exercício, realize os ajustes de acordo com o seu ambiente.

Primeiramente precisamos instalar no Host Windows o módulo responsável por coletar as informações que precisaremos do powershell, disponibilizo o link para download do arquivo no inicio deste post, basta baixar e instalar no estilo next, next, finish.

Agora vamos liberar o Powershell para execução dos comandos que precisaremos, para isso abra o Powershell e digite os comandos:

Comando 01:

ExecutionPolicy

Comando 02:

set-ExecutionPolicy Unrestricted

0001
Agora instale o programa.

 

Após a instalação, copie a pasta de nome PSTerminalServices que foi criada em C:\Users\SeuUsuario\Documents\WindowsPowerShell\modules\

0002
Localização do módulo pós instalação.

Cole a pasta PSTerminalServices em C:\Windows\System32\WindowsPowerShell\v1.0\Modules\

0003
Local onde inserir o módulo pós instalação.

Agora vamos realizar um pequeno teste, abra o powershell e digite os seguintes comandos:

Comando 01:

Import-Module PSTerminalServices

Comando 02:

Get-TSSession -State Active -ComputerName localhost | foreach {$_.UserName}

Se tudo correr bem, o resultado do comando será os usuários ativos conectados ao RDP, como mostra a imagem abaixo.

0020
Testando o módulo.

Agora vamos criar os scripts, 4 no total, TSUsuariosAtivos.ps1, TSUsuariosInativos.ps1, TSUsuariosIP.ps1, TSDispositivos.ps1, onde cada um será responsável por coletar individualmente cada informação que queremos, o diretório usado que irá conter os scripts será  C:\Zabbix\Monitoramento\Scripts\ como já foi dito no inicio deste post, então ajustem de acordo com o seu ambiente.

Script: TSDispositivos.ps1

Import-Module PSTerminalServices
Get-TSSession -State Active -ComputerName localhost | foreach {$_.ClientName}

Script: TSUsuariosAtivos.ps1

Import-Module PSTerminalServices
Get-TSSession -State Active -ComputerName localhost | foreach {$_.UserName}

Script: TSUsuariosInativos.ps1

Import-Module PSTerminalServices
Get-TSSession -State Disconnected -ComputerName localhost | where { $_.SessionID -ne 0 } | foreach {$_.UserName}

Script: TSUsuariosIP.ps1

Import-Module PSTerminalServices
Get-TSSession -State Active -ComputerName localhost | foreach {(($_.IPAddress).IPAddressToString)}
0005
Conteúdo do arquivo.
0006
Conteúdo do arquivo.
0007
Conteúdo do arquivo.
0008
Conteúdo do arquivo.

Com os scripts criados, agora vamos criar nosso arquivo que irá conter os userparameters, chamei o arquivo de TerminalServer.conf e foi criado em C:\Zabbix\Monitoramento\UserParameters\

Arquivo: TerminalServer.conf

#Captura Usuários Conectados, Desconectados e Dispositivos Remotos do Terminal Server
UserParameter=tsativos,%systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe C:\Zabbix\Monitoramento\Scripts\TSUsuariosAtivos.ps1 "$1"
UserParameter=tsinativos,%systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe C:\Zabbix\Monitoramento\Scripts\TSUsuariosInativos.ps1 "$1"
UserParameter=tsdispositivos,%systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe C:\Zabbix\Monitoramento\Scripts\TSDispositivos.ps1 "$1"
UserParameter=tsativosip,%systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe C:\Zabbix\Monitoramento\Scripts\TSUsuariosIP.ps1 "$1"
0021
Conteúdo do arquivo.

Com nosso UserParameter criado, será necessário reiniciar o serviço do nosso Agent Windows.

0022
Reiniciando serviço.

Scripts criados, UserParameter criado, agora faremos um pequeno teste e veremos se tudo ocorreu como esperado.

Comando 01:

zabbix_agentd.exe -c zabbix_agentd.conf -t tsativos

Vale lembrar que este comando deve ser executado no diretório onde se encontra o arquivo zabbix_agentd.exe, caso tudo ocorra bem, o resultado será parecido com o da imagem abaixo.

0009
Testando chave userparameter no Host.

Teste realizado, agora iremos para o Frontend do zabbix cadastrar nossos itens, por questão de organização prefiro criar um template com os itens e associar ao Host.

0010
Criando item.
0011
Criando item.
0012
Criando item.
0013
Criando item.

Com o template criado, associe o template ao Host e aguarde a coleta.

10º Itens criados, agora vamos aguardar a coleta dos itens em dados recentes.

0014
Dados coletados.

11º Itens coletados, agora basta usar a imaginação a criar os mapas, demonstrarei rapidamente como inserir os dados coletados nos mapas, uma breve explicação se resume da seguinte forma, {NOMEDOHOST:nomedoitem.last(0)}

Ex: {SRV01.EB.INTRANET:tsativos.last(0)}

0016
Inserindo valor dos itens no mapa.
0017
Inserindo valor dos itens no mapa.
0018
Inserindo valor dos itens no mapa.
0019
Inserindo valor dos itens no mapa.

12º Agora basta usar a criatividade, veja o resultado final que foi criado especificamente para um cliente.

zabbix-rdp
Resultado final.

É isso ai pessoal, sei que o artigo ficou um pouco grande, mais tentei detalhar ao máximo pois sei que muitos estão iniciando com o zabbix, maissssss quanto mais mastigado o tutorial melhor não é?

Deixem seus comentários em caso de dúvida ou sugestão, se gostou curte e compartilha, muitos artigos virão em breve, muito obrigado.

179,806 total views, 209 views today

4 Flares Twitter 0 Facebook 0 Google+ 0 LinkedIn 4 4 Flares ×

13 thoughts on “Zabbix – Monitoramento RDP Terminal Server

  1. Diego cara, ficou muito bom mesmo, muito bem explicado amigo.

    No meu caso parei em
    zabbix_agentd.exe -c zabbix_agentd.conf -t tsativos
    Fiz novamente, mas ainda paro aqui.
    Alguma dica do que eu possa olhar novamente.

    Parabéns!

  2. Bom dia,

    Parabéns pelo post, ficou muito bom.

    Fera, No mapa não esta exibindo todos os Dispositivos, ips e usuarios etc.
    O q pode ser ?

    ex: 192.168.1.1
    192.168.1…

  3. Olá Willian Borges, fico feliz em ter sido útil o tutorial, tive essa demanda tempos atrás também, como não achei nada de documentação na internet, o LAB foi a solução, agradeço a visita e feedback.

  4. @Diego, parabéns pelo post, estava com essa demanda faz uns meses não tinha ideia de como pegar os usuário conectados, me ajudou bastante. Belo trabalho !

  5. Meu irmãozinho.
    Tentei fazer ….. não consegui ….
    Tem como trocar e-mail’s ou skype para me ajudar ?
    Fico no aguardo
    Joel Fernandes – joelfernandes01 ( skype )

  6. Olá Carlos Eduardo como vai?
    Sobre sua pergunta a resposta é “Depende”
    Como exemplo em meu zabbix_agentd.conf tenho um parâmetro assim: Include=c:\Zabbix\Monitoramento\UserParameters\ e o que isso quer dizer? quer dizer que qualquer arquivo.conf dentro desse diretório será tratado como userparameter, o que é o caso do arquivo TerminalServer.conf que contêm os 4 userparameters usados neste artigo, caso você prefira usar os userparameters direto no zabbix_agentd.conf ex: UserParameter=tsativos,%systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe C:\Zabbix\Diretorio do Script\TSUsuariosAtivos.ps1 “$1”
    UserParameter=tsinativos,%systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe C:\Zabbix\Diretorio do Script\TSUsuariosInativos.ps1 “$1”
    UserParameter=tsdispositivos,%systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe C:\Zabbix\Diretorio do Script\TSDispositivos.ps1 “$1”
    UserParameter=tsativosip,%systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe C:\Zabbix\Diretorio do Script\TSUsuariosIP.ps1 “$1”
    Também pode usar sem nenhum problema, eu particularmente prefiro definir um diretório para scripts e um para userparameter por motivos de organização apenas, espero ter ajudado e muito obrigado por ter curtido o artigo, qualquer dúvida estou a disposição.

  7. Boa tarde Diego!!!

    Muito bom este post.
    Vai me ajudar muito!!!!!
    Deixa eu te perguntar uma coisa, tenho que fazer alguma referência do userparameters e scripts dentro do zabbix_agentd.conf?

  8. Muito obrigado Joel Fernandes, a intenção deste post foi justamente detalhar ao máximo cada passo para que o resultado final seja positivo, mão na massa cara rsrsrs, põe o Lab no ar, qualquer dúvida sinta-se a vontade que terei grande prazer em responder.

  9. Parabéns pelo post, muito bem explicado, com figuras, scripts. dicas, olha me deu vontade de montar o ambiente agora…. rsrs
    Vou montar um cenário aqui e fazer o procedimento, tenho certeza que sairá perfeito pois está muito bem elaborado.
    Parabéns.

Comments are closed.