terça-feira, 25 de fevereiro de 2014

Verificando a data de expiração do Certificado do Exchange com PowerShell e Zabbix



Introdução



Independentemente de o certificado ter sido adquirido junto a uma empresa certificadora, ou gerado internamente, ele tem uma validade e quando ela expirar os serviços do Exchange vão apresentar problemas, para evitar isso iremos colher os dados do certificado via PowerShell e monitorar essa informação com o Zabbix.


Obtendo informações do Certificado


Abra o Exchange Management Shell
 

Entre no diretório do certificado

cd Cert:\LocalMachine\My

Digite o comando abaixo para visualizar todos os seus certificados
Get-ChildItem

Verificando as informações de um certificado em particular
Get-ChildItem -Path E9***************************************3D2 | Format-List

Mas o que nos interessa é um objeto em particular, a data de expiração
Get-ChildItem -Path E9***************************************3D2 | Format-List -Property NotAfter


A sequencia de comandos abaixo é usada para transformar esse objeto em texto (String) e cortar apenas o pedaço da informação que nos interessa: a data. Você pode ir executando o comando parte por parte e acompanhar o que acontece ;-)
Get-ChildItem -Path E9***************************************3D2 | Format-List -Property NotAfter | Out-String | %{$_.split(':')[1]} | %{$_.split(' ')[1]} | %{$_.split(' ')[0]}
 


Automatizando a leitura da Informação

certificado.ps1

A primeira parte é criar um script em PowerShell para executar os comando acima, nomeei-o de certificado.ps1

Como pode ser observado acima a saída do comando, que é a data de expiração do certificado será armazenada no arquivo C:\Zabbix\certificado_tmp.txt

certificado.bat

Criei um pequeno arquivo .bat que chama o script em PowerShell, esse arquivo será utilizado no Agendador de Tarefas e diariamente irá gerar o arquivo com a data de expiração do certificado, teoricamente isso não é necessário, já que a data de expiração do certificado não muda, mas o seguro morreu de velho and shit happens ;-)


Confirme no executável do Exchange Management Shell o caminho do atalho.

Agendador de Tarefas

Abra o Agendador de Tarefas



Clique em Criar tarefa básica



Coloque um nome e Descrição e clique em Avançar


Marque a opção Diariamente e clique em Avançar


Marque para começar na data atual, no horário que lhe for mais conveniente e clique em Avançar


Escolha a opção Iniciar um programa e clique em Avançar


Coloque o caminho do script e clique em Avançar


Clique em Finalizar

Configurando a informação no Zabbix

Configuração do agente

Vamos utilizar o recurso de UserParameter para que o Zabbix leia a informação do arquivo certificado.txt, após alterar o arquivo de configuração é necessário reiniciar o serviço.

Testando a leitura da informação

Vamos utilizar o comando zabbix_get para testar a leitura da informação. A sintaxe é zabbix_get -s IP_do_Servidor_Monitorado -k chave.

Criando o item no Zabbix

Acesse a interface do Zabbix // Configuração -> Hosts // Na linha do servidor clique em Itens // Clique no botão Criar item. Configure o item conforme imagem abaixo.

Observe que vamos monitorar o item a cada 24 horas (86400 segundos).

Download dos scripts

Os scripts podem ser baixados aqui. Não se esqueça de colocar a informação referente ao seu certificado no script certificado.ps1

Referências





quinta-feira, 3 de outubro de 2013

Monitoramento de VMs com Zabbix 2.2

Introdução:
Uma das grandes novidades da versão 2.2 é a possibilidade de monitoramento de máquinas virtuais de forma automatizada pelo recurso LLD (Low Level Discovery).

Advertencia:
Para esse tutorial estou usando a versão alpha do Zabbix, mais especificamente a 2.1.6 (sétimo alpha).

Apesar de funcional para demonstração do recurso essa versão não deve ser utilizada em produção.

Preparação do Ambiente:
Utilizei o Sistema Operacional CentOS 6.4 na opção de instalação minimal.

Após isso instalei os repositórios epel e remi:
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

É preciso habilitar o remi depois de instalado:
# vi /etc/yum.repos.d/remi.repo
Altere a linha enabled=1

Atualizar o sistema:
# yum update -y

Desativar SeLinux e Firewall 

Instalação do Zabbix:
 Para realizar a instalação do Zabbix podemos seguir esse tutorial, modificando alguns detalhes.

Suprir as Dependências:
Na seção suprir as dependências, vamos acrescentar alguns pacotes, pelo fato de estar usando o CentOS Minimal, e o novo pré-requisito utilizado no monitoramento de VMs a libxml2.
# yum -y install ntsysv make wget bind-utils httpd php php-common php-mysql php-gd php-bcmath php-mbstring php-xml mysql mysql-server mysql-devel net-snmp net-snmp-devel net-snmp-utils net-snmp-libs gcc curl curl-devel libxml2-devel libxml2

Atenção na hora de realizar o download dos fontes para escolher a versão correta (Alpha Releases).

Configurar e Compilar os Códigos Fontes (Sources):
Na seção configurar e compilar os códigos fontes, precisamos adicionar o novo pré-requisito utilizado no monitoramento de VMs a libxml2.
./configure --enable-server --with-mysql --with-net-snmp --with-libcurl --enable-agent --with-libxml2

Observe na saída final a linha de Flags de Compilação:
Compiler flags:        -g -O2  -I/usr/include/mysql -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -fasynchronous-unwind-tables -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC  -fPIC -g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -DMY_PTHREAD_FASTMUTEX=1        -I/usr/include/rpm -I/usr/local/include -I/usr/lib/perl5/CORE -I. -I/usr/include   -I/usr/include/libxml2

Todo o resto do processo permanece inalterado.

Conhecendo os Templates Disponíveis:

Templates Disponíveis
Configurando o Host:
Faça a configuração normal do host, acrescente o template e as seguintes macros:
{$URL}: https://<IP-address>/sdk (URL do vCenter / ESX / ESXi)
{$USERNAME}: Usuário
{$PASSWORD}: Senha

Se estiver na dúvida sobre esses dados, acesse https://<IP-address> e clique em Browse datastores in this host's inventory, teste seu usuário e senha, se der certo é esse usuário e senha que você vai usar ;-)
Testando credencias
Exemplos de Dados Coletados:

Dados do servidor ESXi
VMs Descobertas Automaticamente
VM Windows
VM Linux

VMs descobertas automáticamente
 Considerações Finais:
Usei uma máquina ESXi 5.1 com o template Template Virt VMware vSphere.
Você pode ir no template em Discovery e baixar o intervalo default de 3600 segundos (1 hora) para 300 segundos (5 minutos), para agilizar os testes.

Fonte e Agradecimentos:
Agradeço ao 九龍真乙 @qryuu por ter disponibilizado essa apresentação, eu vinha realizando vários testes sem sucesso, pois não sabia o que colocar na variável {$URL}, mas graças a ele esse tutorial foi possível.