quinta-feira, 13 de junho de 2013

Monitorando tamanho dos bancos de dados postgres com Low-level discovery do Zabbix em servidores windows

Bom dia amigos,

Depois de muito tempo sem postar aqui, estou disponibilizando um tutorial para quem utiliza o zabbix e deseja monitorar o tamanho dos bancos de dados postgres em um servidor Windows.

Para que não sabe, ou ja ouviu falar mas não mexeu ainda, o Zabbix é um software open source(código aberto) que é utilizado para monitoramento de devices e de serviços em uma rede de dados. Pode-se monitorar quase tudo, ou utilizando um cliente zabbix, ou via SNMP, ou via trapper entre alguns outros métodos.

Hoje, vou explicar um pouquinho do que eu sei sobre o Low-level discovery do Zabbix e em seguida deixarei um tutorial para criar um monitoramento do tamanho dos bancos de dados em postgres de um servidor Windows.

Low-Level Discovery

Low-level discovery, ou lld, nada mais é que uma ferramenta do Zabbix que tem a função de coletar informações variáveis de um device, um servidor por exemplo, e montar automaticamente itens, gatilhos e gráficos de acordo com as informações recebidas.

Utilizando Low-Level para monitoramendo de DB postgres (Windows)


Bem, para não precisar ficar criando um item manualmente para cada DB criado, utilize o Low-Level discovery do zabbix, assim ele faz a varredura no servidor a ser monitorado listando os DBs e criando automaticamente os itens.

Primeiramente, antes de tudo é importante criar um usuário com permissão apenas de leitura no banco de dados com o nome zabbix. Após isso, altre o arquivo pg_hba.conf do postgres no caminho "C:\Program Files\PostgreSQL\9.2\data" incluindo nos usuários as linhas:

# Zabbix
host    all             zabbix          ::1/32                  trust

Isso fará com que o banco confie no usuário zabbix em localhost e não solicite a senha. Não esqueça de reiniciar o banco para aplicar as alterações.

Agora vamos por a mão na massa! No servidor windows o qual será monitorado criamos um script no notepad e salvamos com o nome postgres_zabbix.bat, eu sugiro colocar esse arquivo no caminho "C:\zabbix\externalscripts\db_postgres"por questão de organização mesmo:

:: Autor: Andrei Tunes Claro
:: Data: 06/06/2013
@echo off
setlocal enabledelayedexpansion

cd C:\Program Files\PostgreSQL\9.2\bin\

for /f "delims=" %%a in ('psql.exe --dbname postgres -U zabbix -Atc "\l" ^| find "|" /c') do @set lines=%%a
set loop=1

set out={"data":[

for /f "tokens=1 delims=|" %%a in ('psql.exe --dbname postgres -U zabbix -Atc "\l" ^| find "|"') do (

    if !loop! == %lines% (
        set out=!out!{"{#DBNAME}":"%%a"}
        goto exit
    )
    set /a loop=!loop!+1
    set out=!out!{"{#DBNAME}":"%%a"},
)

:exit
set out=!out!]}
echo %out%

A função deste script é buscar os nomes de todos os bancos de dados postgres.

Após a criação do script, vamos alterar o arquivo  "zabbix_agentd.conf" localizado no caminho "C:\zabbix\conf", inserindo um novo parametro com uma chave nova. No final do arquivo acrescente dois novos parametros:

## Postgres
UserParameter=pgsql.db.names,C:\zabbix\externalscripts\db_postgres\postgres_zabbix.bat
UserParameter=pgsql.db.size[*],C:\"Program Files"\PostgreSQL\9.2\bin\psql --dbname postgres -U zabbix -Atc "select pg_database_size('$1') as size

O primeiro parâmetro criado tem a chave "pgsql.db.names", este parâmetro executa o arquivo "postgres_zabbix.bat" e retorna os nomes de todos os DBs do servidor. O segundo parâmetro tem a chave "pgsql.db.size", ele vai executar o comando para buscar o tamanho de um DB específico.
Após alterar o arquivo de configuração do agente do zabbix no servidor, reinicie o serviço do zabbix.

Para saber se tudo esta funcionando, entre no servidor Zabbix de monitoramento e digite o comando "zabbix_get -s'<IP_do_servidor_postgres>' -p'10050' -k'pgsql.db.names'

A saída deve ser assim:


É importante saber que o script criado mostra a saída como “{#DBNAME}”: “banco100f”. O valor “{#DBNAME}” é o que será utilizado pelo zabbix para associar ao item, gatilho ou gráfico criado. Como no exemplo acima ele irá criar os itens, triggers e gráfico para dois bancos de dados, o “banco100f” e o “bancopgsql100”.

Após todas as configurações, crie um novo template com o nome "Template Postgres DB" para as regras de descobertas que irão ser criadas. Nesse template crie a aplicação "Postgres Databases" e salve.

Clique em "Regras de descoberta" ou (Discovered rules) e clique no botão "Criar regra de descoberta" no canto superior direito. Crie a regra conforme a imagem abaixo e salve:


Dentro de "Regras de descoberta" ou (Discovery rules) entre na aba "Protótipos de item" ou (itens prototypes), conforme indicado na imagem abaixo:




 Crie um protótipo de item como descrito na imagem abaixo:


Após a criação salve o protótipo de item. Pronto, o template novo esta criado, agora é só associa-lo ao servidor de banco de dados postgres windows e aguardar a coleta dos dados, ele automaticamente montará um item para cada banco de dados existente.

Com o lld fica muito mais fácil o monitoramento, pois a criação dos itens fica automática e facilita a vida. Se tiver outro servidor com banco de dados postgres, é só copiar o script e criar o usuário zabbix, ai adicionamos o servido ao template e pronto.

Ta ai pessoal! qualquer duvida só postar nos comentários!
Abraço.

Esse post foi baseado no Blog do colega Rodrigo Lang (http://openingyourmind.wordpress.com). Lá ele ensina a fazer o mesmo monitoramento em um servidor linux.

sexta-feira, 26 de outubro de 2012

cacti - criando um novo template

cacti criando templates

Boa tarde galera. Depois de algum tempo sem postar nada (trabalhando intensamente), estou de volta com um novo tutorial sobre o cacti. Bem, depois da última postagem sobre a instalação e configuração do cacti e a inclusão de um novo device utilizando os templates padrão, agora vou deixar um pequeno tutorial para a criação de um novo template, que servirá para aqueles que não encontrarem um template para monitorar algo mais específico. Vou colocar como exemplo a criação de um template para monitorar a temperatura de um switch H3C S5500EI, mas usando esse exemplo como base vocês poderão criar os próprios templates para outros dispositivos.


Template - gráfico para monitorar temperatura de switch H3C S5500EI

Então, para começar preciso dizer que em certos casos, para criar um template, precisamos ter algum conhecimento sobre MIBs ou OIDs, pois precisaremos encontrar a OID específica do dispositivo a ser monitorado para colocar no template. Quem quiser estudar um pouco sobre MIBs, estou deixando aqui um link muito bom para esclarecimentos - http://penta.ufrgs.br/gr952/trab1/2capa.html.

Antes de mais nada, encontre a MIB (Management Information Base) específica que exibe a informação de temperatura do switch (essa foi a parte mais difícil). Normalmente esses tipos de MIBs são especificas de cada aparelho, então no caso do H3C S5500EI ela é uma MIB privada, todas as MIBs privadas do H3C começam assim: 1.3.6.1.4.1.25506...
Para a temperatura (depois de muita pesquisa na internet) encontrei as MIBs abaixo:
  • Temperature: .1.3.6.1.4.1.25506.2.6.1.1.1.1.12
  • Temperature Threshold: .1.3.6.1.4.1.25506.2.6.1.1.1.1.13
  • Temperature  Critic Threshold: .1.3.6.1.4.1.25506.2.6.1.1.1.1.17
  • Temperature Lower Threshold: .1.3.6.1.4.1.25506.2.6.1.1.1.1.21
  Beleza, agora é tranquilo. Na página inicial do cacti, va no menu a esquerda e procure a parte de Templates, nesta área clique em Data Template. Aparecerá uma lista dos templates padrão do cacti, no topo da lista a esquerda há um link "Add", que é para criar um novo template, clique neste link. Você será redirecionado para a área de criação de um novo template, similar a imagem abaixo:



  1. Escreva o nome do template (neste caso eu escrevi "H3C Temperature");
  2. Aqui você coloca o nome que será do Data Souce para cada dispositivo, aconselho colocar assim: |host_description| nome do DataSourse (neste caso ficou "|host_description| Temperature H3C";
  3. No Data Input Method escolha SNMP - será como o cacti coletará o dado;
  4. Escolha um nome interno para o Data Source (eu coloquei "temperature_h3c)
  5. Coloque os valores mínimos e máximos, seriam os limítes do data source. Para o caso da temperatura você pode colocar o valor máximo que você acha melhor;
Agora clique em "Create" que passará para a próxima tela onde você só precisará preencher o primeiro campo com a OID da MIB de temperatura do switch H3C (ou de qualquer outro dispositivo que queira monitorar. Atenção para não colocar a OID com o ponto na frente:


Pronto! O nosso primeiro Data Template está ok. Agora precisamos criar um Graph Template para ele. No menu a esquerda novamente, na parte de Templates, clique em "Graph Templates" e clique em "Add" do mesmo jeito que foi feito em Data Templates, então abrirá a tela para a criação do graph template assim como na figura abaixo:

  1. Escreva o nome do template (neste caso eu escrevi "H3C Temperature");
  2.  Aqui você coloca o nome que será do Graph Template para cada dispositivo, aconselho colocar assim: |host_description| nome do Graph Template (neste caso ficou "|host_description| H3C Temperature";
  3. No Vertical Label escreva o tipo de unidade, nesse caso coloquei Graus, pois é temperatura que esta sendo monitorada;
  4. Clique em "Create".
Após clicar em "Create" o cacti salvará o template e habilitará os campos acima para criar os graph templates:

Graph Template Items
Clique em "add" no canto superior direito e preencha os campos como na figura:


  1. Procure o Data Source criado por nós na lista - H3C Temperature;
  2. Escolha a cor do gráfico na lista, a opacidade e o tipo - essas são escolhas de sua preferência;
  3. Escreva o texto que ficara no gráfico
  4. Clique em "Create"
Pronto, criamos o primeiro item do nosso graph template, vamos criar o segundo item, esse item será os valores mostrados abaixo do gráfico, clique novamente em "Add" do "Graph Template Items", coloque como a figura abaixo:



Ok! Vamos para o próximo item que será a média (average), clique em "Add" novamente, apenas dois itens mudam, que são o "Consolidation Function" que sera "Average" e o "Text Format" que será "Average:" conforme a figura abaixo:

Agora o último item do "Graph Template Items" que é o máximo, clique em "Add" novamente e crie um parecido com os demais, mas com algumas mudanças no "Consolidation Function" para "MAX", no "Text Format" para "Maximum:" e marque a opção "Insert Hard Return" como na figura abaixo:
Pronto. Criamos os quatro itens necessários para esse graph template. Lembrando aqui que você pode escolher outros tipos de gráficos ao seu gosto.

Falta apenas adicionar em "Graph Item Inputs", que fica abaixo do "Graph Templates Items", um input. Clique em "Add" do "Graph Item Input" e na próxima janela, no "Name", escreva "Legend Color", no "Field Type" escolha "Color" na lista e no "Associated Graph Items" marque o primeiro item que é do "Item #1: AREA (AVERAGE)". Pronto, clique em "Save":


Enfim terminamos a criação do nosso novo template para monitorar a temperatura do switch H3C S5500EI, clique em "Save" no canto inferior direito e o graph template esta salvo. Agora é só associa-lo ao dispositivo e pronto.


É isso galera! Espero que esse tutorial esclareça algumas dúvidas de vocês.
Até a próxima.


quinta-feira, 13 de setembro de 2012

Monitoramento com Cacti

Dando continuidade ao monitoramento de redes com aplicativos de código aberto, hoje vou falar um pouco do cacti.

Cacti é uma solução de gráficos de rede completa designada para aproveitar a força de armazenamento de dados do RRDToll e suas funcionalidades gráficas. Cacti tem um poller rápido, um avançado template de gráficos, múltiplos métodos de aquisição de dados e administração de usuários. Toda a interface de monitoramento é englobada em uma interface gráfica intuitiva e fácil de usar.

Isso tudo é o que esta descrito no próprio site da cacti (http://www.cacti.net/), mas se não fosse pelos tutorias encontrados na internet eu não teria achado tão intuitiva assim a interface gráfica na hora de configurar algumas funcionalidades.

Bem, para começar, vamos instalar o cacti no nosso servidor de monitoramento que está com o sistema operacional CentOS 6.3.


Instalando o cacti no CentOS 6

Antes de instalar o cacti é necessário que tenha alguns pré requisitos:

  1. MySql Server - O cacti necessita de um banco de dados.
  2. NET-SNMP server - SNMP (Simple Network Management Protocol) é um protocolo usado para administração de rede.
  3. PHP com modulo net-snmp - Acessar dados SNMP usando PHP.
  4. Apache / lighttpd / ngnix webserver - Servidor Web para exibir os graficos criados com PHP e o RRDTOOL.
Para o nosso servidor começamos instalando tudo com o comando:

# yum install mysql-server mysql php-mysql php-pear php-common php-gd php-devel php php-mbstring php-cli php-snmp php-pear-Net-SMTP php-mysql httpd

Agora precisamos configurar o nosso servidor MySQL:

Criando a senha de admin
# mysqladmin -u root password NovaSenha

criando um banco de dados chamado cacti:
# mysql -u root -p -e 'create database cacti'

e criando o usuário chamado cacti:
# mysql -u root -p
mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'senha_do_usuário';
mysql> FLUSH privileges;
mysql> exit

agora instalamos o net-snmpd:
# yum install net-snmp-utils php-snmp net-snmp-libs

agora precisamos fazer algumas configurações no snmpd, entrando no arquivo snmpd.conf com o comando abaixo:
# vim /etc/snmp/snmpd.conf

neste arquivo precisamos fazer algumas mudanças:
A primeira linha a se mudar é:
#            sec.name  source          community
com2sec local         localhost       public
a segunda linha é onde tem os grupos:
#          groupName       securityModel securityName
group   MyRWGroup      v1                   local
group   MyRWGroup      v2c                  local
group   MyRWGroup      usm                local
a próxima linha delete os views e inclua:
# Make at least  snmpwalk -v 1 localhost -c public system fast again.
#         name           incl/excl     subtree         mask(optional)
view     all               included    .1                   80
em seguida procure e altere:
#           group          context sec.model sec.level prefix read   write  notif
access  MyRWGroup      ""      any       noauth       exact  all      all       none
e altere:
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root  (configure /etc/snmp/snmp.local.conf)
na última alteração você tire do comentário o pass e o altere:
pass .1.3.6.1.4.1.4413.4.1 /usr/bin/ucd5820stat
pronto salve e feche o arquivo com :wq

agora ativamos o snmpd:
# /etc/init.d/snmpd start
# chkconfig snmpd on

com o comando abaixo podemos saber qual informação estamos recebendo pelo snmpd:
# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex
IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntIfIndex.172.16.32.9 = INTEGER: 2

Pronto, agora instalamos o cacti:
# yum install cacti 

agora precisamos instalar as tabelas do cacti no banco, digite o comando abaixo para localiza-las:
# rpm -ql cacti | grep cacti.sql
/usr/share/doc/cacti-0.8.8a/cacti.sql

e depois digite o comando abaixo para inseri-las no nosso banco de dados cacti:
# mysql -u cacti -p cacti < /usr/share/doc/cacti-0.8.8a/cacti.sql

Pronto! O cacti foi instalado, agora precisamos configura-lo. Edite o arquivo /etc/cacti/db.php com o comando:
# vim /etc/cacti/db.php
edite:
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "geti%2@12&";
$database_port = "3306";
$database_ssl = false;
salve e feche o arquivo.

Agora vamos configurar o httpd:
Edite o arquivo /etc/httpd/conf.d/cacti.conf:
# vim /etc/httpd/conf.d/cacti.conf


De acesso total ou somente à sua rede ao Cacti:
Alias /cacti    /usr/share/cacti

<Directory /usr/share/cacti/>
        <IfModule mod_authz_core.c>
                # httpd 2.4
                Require host localhost
        </IfModule>
        <IfModule !mod_authz_core.c>
                # httpd 2.2
                Order deny,allow
                Deny from all
                Allow from all
        </IfModule>
</Directory>
salve e feche o arquivo.

agora reiniciamos o httpd com o comando:
# service httpd restart 

por fim, vamos executar o cacti cronjob com o comando:
# vim /etc/cron.d/cacti 

e retiramos o comentário da linha:
*/5 * * * *     cacti   /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1

agora o cacti parece que esta pronto para ser configurado:
abrimos o navegador web e digitamos:
http://seu.servidor/cacti/
ou
http://ip.do.servidor/cacti/

aparecerá uma tela como essa:
clique em "Next" e depois escolha "New Install" e "Next" novamente, cairemos na próxima página:
Nesta página, não fizemos alterações, apenas nos certificamos que todos os caminhos foram encontrados, se tudo estiver verde clicamos em "Finish".

Pronto, agora só precisamos digitar o usuário e a senha na pŕoxima janela.

Usuário: admin
Senha: admin

No primeiro acesso será solicitado a troca da senha.

Ok! Cacti funcionando.

Inclusão devices e configuração de gráficos

No primeiro acesso o cacti já vem com o device localhost configurado, precisamos apenas alterar o ip para que ele mostre os gráficos padrões gerados do nosso servidor.
Na página inicial após o login, no menu a esquerda vá em "Management" e clique em "Devices", você verá o localhost ja pré-configurado e com o estado de up, clique em cima dele.
Na próxima página você configura como quiser, mas o principal é colocar o IP do seu servidor no campo "Hostname", fazendo isso ele já começara a gerar os gráficos pré-configurados. Veja a figura abaixo:

Aguarde alguns minutos e clique na aba "graps" na parte superior esquerda e poderá ver os gráficos sendo montados do nosso servidor.

Incluir e configurar um switch

Para incluir um switch, na janela inicial de "console", clique em  "create device", ou no menu a direita na parte "Management" clique em "Devices";
Clique em "Add" no canto superior direito;
Na próxima tela configure os dados do switch:
Description: Digite o nome para o switch
Hostname:  Digite o IP do switch
Host Template: Escolha o template mais adequado para o dispositivo, ou deixe em branco (futuramente postarei uma explicação sobre templates e  como criar novos templates)

Nas opções de "Availability/Reachability Options" você escolhe como quer que o dispositivo seja detectado, se é por ping ou por snmp, ou pelos dois.
E abaixo, nas opções de "SNMP Options" você escolhe a versão de snmp que o switch utiliza para enviar os dados e configura de acordo com as configurações de snmp do mesmo.
Após salvar é só clicar em "New graph" no menu a esquerda, localizar o switch em Host e escolher as portas as quais quer monitorar.

É isso por enquanto, estou estudando como gerar templates novos e como incluir plugins no cacti. Em um próximo post descreverei o passo a passo destas configurações.

Até a próxima.

Essa postagem foi baseada e escrita a partir dos seguintes links:

cacti.net
Viva o Linux
http://www.cyberciti.biz






segunda-feira, 3 de setembro de 2012

Monitoramento com ntop Instalação CentOS 6



Para aqueles que não conhecem o ntop, ele é uma ferramenta que examina o trafego na rede e  dignostica o uso desta, semelhante ao que o popular comando top Unix faz. O ntop é baseado em libpcap e foi desenvolvido de uma forma portátil a fim de que se possa rodar em plataformas Unix e Win32.

Usuários do ntop podem usar a interface web (ex.: Firefox) para navegar através das informações de trafego geradas pelo ntop e obter relatórios do estado da rede. Em último caso, ntop pode ser visto com um simples agente RMON-Like com uma interface web embutida.

Funcionalidades do ntop:

  • interface web
  • configuração limitada e administração através da interface web
  • Uso reduzido de CPU e memória (varia de acordo com o tamanho e o tráfego da rede)
O ntop é fácil de usar e adequado para o monitoramento de diversos tipos de redes.

Instalação do ntop-5.0.1 no CentOS 6

Este tutorial visa abranger a instalação do ntop em um servidor recém instalado com o CentOS 6, prevendo todos os tipos de problemas que o usuário possa encontrar.

Primeiramente baixe o Ntop:

Você pode ir diretamente no site do ntop na área de download: http://www.ntop.org/get-started/download/

Ou pode usar o comando wget pelo terminal do CentOS. caso não tenha o wget instale-o usando o comando:

      # yum install wget.i686 

e depois:
      # cd /diretório__onde_quer_baixar_o_arquivo
      # wget http://sourceforge.net/projects/ntop/files/ntop/Stable/ntop-5.0.1.tar.gz

Instale alguns pré-requisitos:

     # yum install libcap libcap-devel glib gdbm gdbm-devel
     # yum install libtool automake autoconf -y
     # yum install gcc cpp -y
     # yum install tcpdump nmap -y
     # yum install libpcap-devel zlib zlib-devel geoip geoip-devel


Instale o RRDTool seguindo os passos:

Crie o Repositório dag.repo:

      # vim /etc/yum.repos.d/dag.repo

Após adicione ao repositório:

      [dag]
      name=Dag RPM Repository for Red Hat Enterprise Linux
      baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
      gpgcheck=1
      gpgkey=http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
      enabled=1


Após salvar e sair do arquivo, digite:

       # yum install rrdtool rrdtool-devel -y

Pronto o RRDTool está instalado

Agora instalamos o ntop:

       # tar -zxvf ntop-5.1.0.tar.gz
       # cd ntop-5.1.0
  


Para executar os próximos comandos deve-se ter instalado no servidor o subversion, o phyton e o make. Caso não tenha digite os comandos abaixo, se não pule a etapa

         Para o subversion:
         # yum install subversion
         para o phyton:
         # yum install python-devel.i686
        e para o make
         # yum install make


E execute os comandos abaixo:


        # ./autogen.sh
        # make
        # make install



Criação de usuário

Após a instalação você pode criar um usuário para o ntop:

        # useradd -M -s /sbin/nologin -r ntop
       

Configurar permissão nos diretórios

Depois de criado novo usuário, você precisa configurar as permissões de acesso nos diretórios com os comando abaixo:



        # chown ntop:root /usr/loca/var/ntop/
        # chown ntop:ntop /usr/local/share/ntop/

Após isso configure a senha de admin para o novo usuário

        # ntop -A

Aparecerá:

        Mon Sep  3 10:55:20 2012  Initializing gdbm databases
        Please enter the password for the admin user:
        Please enter the password again:
        Mon Sep  3 10:55:20 2012  Admin password set...

Pronto, ntop instalado. Inicie  o ntop com o comando abaixo:

        # /usr/local/bin/ntop -d -L -u ntop -P /usr/local/var/ntop --skip-version-check --use-syslog=daemon

Se você tiver mais de uma interface de rede (eth0, eth1...) é só digitar o comando:

      # /usr/local/bin/ntop -i "eth0,eth1" -d -L -u ntop -P /usr/local/var/ntop --skip-version-check --use-syslog=daemon
Após isso, é só digitar no seu browser: http://ip_do_servidor:3000


Para parar o ntop é só digitar:

        # killall ntop

Essas são as instalações básicas do ntop. Em um outro artigo explicarei algumas configurações e seu funcionamento.

Essa postagem foi baseada e escrita a partir dos seguintes links:

ntop
viva o linux
http://www.cyberciti.biz

sexta-feira, 31 de agosto de 2012

Apresentação

Olá a todos,

A historia deste blog começou a ser idealizada quando o autor entrou em um novo projeto de reestruturação da rede de computadores de uma empresa e se deparou com vários desafios, pois não existia nenhuma padronização e vários equipamentos já se encontravam obsoletos.
Olhando este desafio pela frente, pensou ele que poderia ajudar outros colegas da área que encontram dificuldades no meio de redes e TI.
Aqui será postado dicas e tutorias sobre vários assuntos pertinentes a redes, TI e engenharia.

Espero que este espaço ajude e seja mais uma fonte de informações.