Vamos aprender como fazer um DNS local de maneira simples.

 Clusterweb, Linux, Redes  Comentários desativados em Vamos aprender como fazer um DNS local de maneira simples.
nov 302012
 

Amigos,

Saudações Pinguianas a todos!
Neste artigo, vamos aprender como fazer um DNS local de maneira simples, rápida e prática.

Mas aí você se pergunta: O que é DNS?

O DNS é o banco de dados distribuído de traduções de nome para endereço IP. Tecnicamente não é necessário usar nomes de host e de domínio, como www.meudominio.com.br, porque é o endereço IP que o computador usa para estabelecer comunicação.

O DNS foi criado para permitir o uso de nomes de domínios mais convenientes. Por exemplo, quando o usuário digita um nome DNS como parte de uma URL em um navegador, a parte do nome é enviada para o servidor DNS para que seja resolvido em um endereço IP. Uma vez encontrado o endereço, ele é usado para se reescrever a URL e obter diretamente a página web.

Um dos servidores DNS mais conhecido é o Bind. Nesse exemplo estaremos usando o Bind9, que é uma versão mais atualizada e mais segura deste software.

O primeiro passo é instalar o Bind:

# apt-get install bind9

Agora com o Bind instalado, vamos conhecer e configurar os arquivos usados por ele:

Arquivos de configuração DNS:

Edite seu resolv.conf para ele fazer a busca do DNS local:

# vim /etc/resolv.conf

Este arquivo lista os endereços IP dos servidores de nomes:

1
2
nameserver 127.0.0.1
nameserver 192.168.254.1

Agora vamos configurar os arquivos do Bind:

# vim /etc/bind/named.conf.local

Este arquivo é onde você indicará em que caminho estarão suas zonas. Edite-o e inclua estas linhas:

1
2
3
4
5
6
7
8
9
10
11
12
## minhas zonas ##
zone "meudominio.com.br"{
type master;
file "db.meudominio.com.br";
};
## reverso da rede 192.168.254.0
zone "254.168.192.in-addr.arpa"{
type master;
file "db.254.168.192";
};
## fim das minhas zonas ##

Agora criaremos os arquivos db.meudominio.com.br e db.254.168.192:

Dentro do diretório /etc/bind existe um arquivo db.local que poderemos copiar para fazermos nosso db.meudominio.com.br. Como root execute:

# cd /etc/bind
# touch /var/cache/bind/db.meudominio.com.br
# cat db.local > /var/cache/bind/db.meudominio.com.br

Agora edite o seu arquivo /var/cache/bind/db.meudominio.com.br para ficar assim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
;
; BIND zone file for home.lan
;
$TTL    3D
@       IN      SOA     ns.meudominio.com.br.    root.meudominio.com.br. (
                        01              ; serial
                        8H              ; refresh
                        2H              ; retry
                        4W              ; expire
                        1D )            ; minimum
;
                NS      ns              ; Inet address of name server
                MX      10 mail         ; Primary mail exchanger
; Necessario para funfar
ns              IN      A       192.168.254.1
;
; Hosts Reais
www             IN      A       192.168.254.1
ftp             IN      A       192.168.254.1
smtp            IN      A       192.168.254.1
imap            IN      A       192.168.254.1
;
gateway         CNAME   router
gw      CNAME   router

Ainda como root, crie o db reverso de sua rede:

# touch /var/cache/bind/db.254.168.192

Edite o arquivo para que fique assim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
;
; BIND zone file for 192.168.1.xxx
;
$TTL    3D
@       IN      SOA     ns.home.lan.    root.home.lan. (
                        2010111101      ; serial
                        8H              ; refresh
                        2H              ; retry
                        4W              ; expire
                        1D )            ; minimum
;
                NS      ns.meudominio.com.br.    ; Nameserver address
100             PTR     server.meudominio.com.br.
100             PTR     ns.meudominio.com.br.
100             PTR     mail.meudominio.com.br.
101             PTR     virtual.meudominio.com.br.
1               PTR     router.meudominio.com.br.

Agora vamos editar o arquivo named.conf.options

# vim /etc/bind/named.conf.options

Deixe-o assim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
options {
        directory "/var/cache/bind";
        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.
        // Security options
        listen-on port 53 { 127.0.0.1; 192.168.254.1; };
        allow-query { 127.0.0.1; 192.168.254.0/24; };
        allow-recursion { 127.0.0.1; 192.168.254.0/24; };
        allow-transfer { none; };
        auth-nxdomain no;    # conform to RFC1035
        // listen-on-v6 { any; };
};

Feito isso reinicie seu bind:

# /etc/init.d/bind9 restart

Agora já podemos pingar internet.meudominio.com.br e mail.meudominio.com.br:

# ping internet.meudominio.com.br
PING internet.meudominio.com.br (192.168.254.1) 56(84) bytes of data.
64 bytes from 192.168.254.1: icmp_seq=1 ttl=64 time=4.86 ms
64 bytes from 192.168.254.1: icmp_seq=2 ttl=64 time=0.228 ms
64 bytes from 192.168.254.1: icmp_seq=3 ttl=64 time=0.229 ms

Utilidades e checando configurações DNS:

Um servidor DNS interno é muito útil para os administradores de redes, por exemplo: se você tem um servidor proxy autenticado, nos navegadores dos clientes podemos usar um endereço de proxy como internet.empresa.com.br, assim se um dia necessitar alterar o ip de seu proxy, só mude as configurações de DNS no seu db.empresa.com.br.

Podemos usar alguns comandos para checar as configurações de seu dns.

named-checkconf (verifica as configurações do Bind)

# named-checkconf

Se não retornar nada é que está ok.

named-checkzone (verifica suas zonas):

# named-checkzone zonename db.meudominio.com.br
zone zonename/IN: loaded serial 2
OK

Servidor DNS pronto e funcionando! Você já pode dar nomes a seus IPs, facilite seu trabalho.

Espero ter colaborado!

Hyperic HQ: monitore sua rede like a boss

 Leitura Recomendada, Redes  Comentários desativados em Hyperic HQ: monitore sua rede like a boss
nov 052012
 
Sobre o Hyperic HQ

O Hyperic HQ é uma solução de monitoramento, administração e controle de infraestrutura de Data Centers. Trata-se de um Software Livre, disponibilizado sob a licença GNU GPL v2, com o código-fonte hospedado no SourceForge.net, que conta com um versão comercial disponível com recursos adicionais de automação, administração e controle.

Foi desenvolvido pela empresa americana Hyperic, sediada em São Francisco. Em 2009, a história da empresa mudaria radicalmente. Em maio, ela seria adquirida pela SpringSource e, em Agosto, a própria SpringSource seria adquirida pela gigante VMware.

Hoje, a versão para empresas do Hyperic HQ é comercializada com o nome de VMware vFabric Hyperic.

Conheci o Hyperic em 2007, quando trabalhava na Unimed Leste Fluminense, em Niterói/RJ, e recebi a missão de configurar um sistema de monitoramento na rede da empresa.

Avaliei algumas soluções, como Nagios, Cacti e Zenoss. Embora funcionassem, me incomodava a complexidade para configurar monitoramento e alarmes em cada uma destas soluções (não era necessariamente difícil, mas, ou exigia uma quantidade incontável de passos manuais, como instalação de componentes, edição de arquivos de texto, e/ou cliques e mais cliques de mouse).

   

Então, descobri o Hyperic HQ, que caiu como uma luva: além de ser um Software Livre, com código-fonte aberto, possuía:

  • Recursos de descobrimento automático de novos recursos;
  • Gerava gráficos automaticamente;
  • Permitia criar alarmes sofisticados com suporte a escalation;
  • Notificações por SMS;
  • Análise de logs;
  • Histórico de incidentes.

E o melhor: tudo empacotado adequadamente e acompanhado de uma excelente documentação que tornava o processo de instalação e configuração da solução uma tarefa extremamente simples.

Desde então, o Hyperic HQ é minha solução de monitoramento favorita.

Arquitetura

O Hyperic HQ é constituído de dois componentes: o servidor e o agente. Que comunicam-se de acordo com o diagrama mostrado no diagrama abaixo.

O servidor é instalado em uma única máquina. Ele é responsável por receber todos os dados de monitoramento, processá-los e gerar gráficos, alertas e relatórios, mantendo histórico dos eventos.

O agente, por sua vez, é responsável por varrer a máquina onde ele está instalado, detectando os componentes que estão instalados, coletando suas métricas e enviando-as ao servidor.

Todos os dados coletados ficam armazenados localmente e enviados ao servidor em intervalos regulares. Com isso, mesmo que o servidor Hyperic fique fora do ar, nenhuma informação de monitoramento é perdida, pois fica armazenada localmente nos agentes, até que estes possam enviá-la para o servidor.

Instalação do servidor Hyperic HQ

O servidor do Hyperic HQpode ser instalado nos seguinte sistemas operacionais:

  • GNU/Linux;
  • Windows;
  • Solaris Sparc;
  • Mac OS X.

Neste artigo, mostrarei como instalar a versão 4.6.6 do servidor Hyperic HQ no CentOS 6, uma distribuição GNU/Linux criada a partir do código-fonte do Red Hat Enterprise Linux 6.

Para os passos mostrados abaixo, considero que você já possua uma instalação funcional do CentOS 6.

O primeiro passo é criar o grupo e o usuário que será utilizado para executar o Hyperic. Faça isso usando os comandos abaixo:

$ su –

# groupadd -r hyperic
# useradd -g hyperic -s /bin/bash -d /opt/hyperic -c “Hyperic HQ” -m hyperic

Em seguida, alterne para o usuário hyperic recém-criado e faça o download do instalador do Hyperic HQ para GNU/Linux, que contém o servidor e o agente no mesmo pacote. Há instaladores para arquiteturas 32 e 64 bits. Neste artigo, será usada a arquitetura 32bits (x86).

# su – hyperic
$ wget
http://sourceforge.net/projects/hyperic-hq/files/Hyperic%204.6.6/Hyperic%204.6.6-GA/hyperic-hq-installer-4.6.6-x86-linux.tar.gz
$ tar xf hyperic-hq-installer-4.6.6-x86-linux.tar.gz
$ cd hyperic-hq-installer-4.6.6
$ ./setup.sh

Serão solicitadas algumas informações que você deverá fornecer, na ordem:

  1. 1,2 (para instalar o servidor e o agente);
  2. /opt/hyperic (diretório de instalação do servidor Hyperic);
  3. remetente@seudominio.com (email que será usado como remetente dos alertas do Hyperic);
  4. 1 (para utilizar uma frase gerada automaticamente para criptografar o banco de dados);
  5. loginadministrativo (login do usuário administrador do Hyperic – o padrão é ‘hqadmin’);
  6. senhadeadministrador (senha do administrador do Hyperic);
  7. mesmasenhanovamente (repita a senha);
  8. emaildoadministrador (endereço de email do usuário administrador, para onde serão enviadas as notificações direcionadas para este usuário);
  9. /opt/hyperic (diretório de instalação do agente Hyperic);

Em determinado momento, o instalador lhe pedirá para executar um comando como root e então, pressionar Enter para continuar a instalação.

Se você estiver no modo gráfico, abra um novo terminal. Se estiver no modo texto, alterne para outro console usando as teclas Alt+FN, ou N é um número de 1 a 6 (Ex.: Alt+F2 para ir para o console 2), faça login como root e execute o comando abaixo:

# /opt/hyperic/hyperic-hq-installer-4.6.6/installer/data/hqdb/tune-os.sh

Então, retorne para o terminal/console anterior e pressione Enter para concluir a instalação. Se tudo correr bem, você deverá ver a seguinte mensagem no final do processo:

Setup completed
A copy of the output shown above has been saved to:
/opt/hyperic/hyperic-hq-installer-4.6.6/installer/logs/hq-install.log

Antes de iniciar o servidor e o agente do Hyperic, é interessante fazer alguns ajustes para facilitar o gerenciamento destes serviços, além de futuras instalações.

Primeiro, crie dois links simbólicos chamados “server” e “agent”, apontando para os diretórios: server-4.6.6 e agent-4.6.6, respectivamente.

$ cd
$ ln -sv server-4.6.6 server
$ ln -sv agent-4.6.6 agent

Depois, edite o arquivo “.bash_profile”, procure pela linha que define a variável PATH e modifique-a de modo que fique com o seguinte conteúdo:

AGENT_DIR=”/opt/hyperic/agent”
SERVER_DIR=”/opt/hyperic/server”
PATH=$PATH:$HOME/bin:$AGENT_DIR/bin:$SERVER_DIR/bin

Então, carregue o arquivo “.bash_profile” para atualizar as variáveis alteradas:

$ source .bash_profile

Retorne ao segundo terminal/console onde você logou-se como root e verifique o arquivo /etc/hosts. É preciso ter uma entrada associando o IP principal do servidor ao nome da máquina.

Antes de mais nada, verifique se o nome da máquina está corretamente definido, executando o comando hostname:

# hostname

localhost.localdomain

No exemplo acima, o hostname não está definido. Escolha um nome e então edite o arquivo /etc/sysconfig/network, alterando a variável HOSTNAME para o valor do hostname escolhido, incluindo o nome do domínio:

HOSTNAME=hyperic.davidsonpaulo.com

Então, use o comando hostname para forçar a utilização do novo nome de máquina:

# hostname hyperic.davidsonpaulo.com

Depois, edite o arquivo /etc/resolv.conf e adicione a seguinte linha no começo do arquivo, para que o servidor trate adequadamente o domínio escolhido:

search davidsonpaulo.com

Por fim, edite o arquivo /etc/hosts e adicione uma entrada para associar o hostname da sua máquina ao seu IP principal, que neste exemplo, é 192.168.1.10:

192.168.1.10    hyperic.davidsonpaulo.com    hyperic

Feito isso, retorno para o primeiro terminal/console e inicie o servidor Hyperic HQ usando o comando abaixo:

$ hq-server.sh start

Aguarde alguns segundos e verifique se existem processos escutando nas portas 9432/TCP e 7080/TCP:

$ fuser -i 9432/tcp

9432/tcp:        2046   2082   2083   2084& nbsp;  2085   2086

$ fuser -i 7080/tcp

7080/tcp        2068

Isto significa que o servidor Hyperic foi inicializado corretamente. Para confirmar, acesse a interface administrativa através da URL:

  • http://[IP do Servidor]:7080

Note que, se o firewall do CentOS estiver habilitado, a porta 7080 estará bloqueada por padrão. Se for esse o caso, libere as portas 7080 e 7443 usando os comandos abaixo:

# iptables -I INPUT -p tcp -m state –state NEW -m multiport –dports 7080,7443 -j ACCEPT
# service iptables save

As figuras abaixo, mostram a tela principal do Hyperic HQ e o painel de controle, ou Dashboard, para onde o usuário é direcionado após fazer o login:

Linux: Hyperic HQ: monitore sua rede like a boss     Linux: Hyperic HQ: monitore sua rede like a boss
Configuração do agente Hyperic HQ

Agora que o servidor está funcionando, precisamos configurar um agente do Hyperic HQ para monitorar a primeira máquina.

Quando instalamos o servidor, o agente foi instalado também, portanto, tudo o que precisamos fazer é inicializá-lo e conectá-lo ao servidor, executando o comando abaixo:

$ hq-agent.sh start

Na primeira inicialização do agente do Hyperic HQ, será necessário fornecer algumas informações para que ele consiga conectar-se ao servidor e enviar os dados de monitoramento:

  • What is the HQ server IP address: hyperic.davidsonpaulo.com
  • Should Agent communications to HQ always be secure: yes
  • What is the HQ server SSL port: 7443
  • Are you sure you want to continue connecting? Yes
  • What is your HQ login: loginadministrativo
  • What is your HQ password: senhadeadministrador
  • What IP should HQ use to contact the agent: hyperic.davidsonpaulo.com
  • What port should HQ use to contact the agent: 2144
  • Are you sure you want to continue connecting? yes

Uma vez concluída a configuração do agente, retorne à interface administrativa do Hyperic HQ e veja se a máquina é exibida no portlet Auto-Discovery.

Para começar a coletar as métricas e gerar gráficos para este servidor, clique no botão Add to Inventory. A máquina sairá do portlet Auto-Discovery e será exibida no portlet Recently Added.

Clique no link para abrir os detalhes de monitoramento da máquina, que a princípio estarão quase totalmente vazios.

Como você pode ver, muitas coisas são detectadas e começam a ser monitoradas automaticamente. Abaixo, uma listagem completa de todos os componentes e serviços que foram detectados neste exemplo:

  • Platform services
    • Free Memory;
    • Free Memory (+buffers/cache);
    • Load Average 5 Minutes;
    • Swap Used.
  • FileServer Mount
    • /dev/mapper/VolGroup00-LogVol00
    • /dev/sda1
  • NetworkServer Interface
    • Métricas
      • Bits Received per Second;
      • Bits Transmitted per Second;
      • Packets Received per Minute;
      • Packets Transmitted per Minute.
    • Interfaces
      • Linux Network Interface eth0 (ethernet);
      • Linux Network Interface eth1 (ethernet);
      • Linux Network Interface lo (loopback).
  • Linux CPU 1 (2916MHz Intel Core(TM) i7 CPU 870 @ 2.93GHz)
    • CPU Idle;
    • CPU Usage;
    • System Cpu;
    • User Cpu.
  • Linux sshd Process
    • Cpu Usage;
    • Resident Memory Size.
  • HQ ActiveMQ Embedded 5.3
    • Métricas
      • Process Cpu Usage;
      • Process Resident Memory Size.
    • Serviços
      • ActiveMQ Embedded 5.3 Topic
        • Dequeue Count per Minute;
        • Enqueue Count per Minute;
        • Queue Size.
      • Localhost Broker
        • Total Enqueue Count per Minute;
        • Total Message Count per Minute.
    • HQ Agent 4.6.6
      • JVM Free Memory;
      • JVM Total Memory;
      • Number os Metrics Collected per Minute;
      • Number of Metrics Sent to Server per Minute;
      • Server Offset;
      • Total Time Spent Fetching Metrics per Minute.
    • HQ PostgreSQL 8.2
      • Métricas
        • Backends;
        • Blocks Read per Minute;
        • Commits per Minute;
        • Data Space Used.
      • Serviços
        • Table
          • Data Space Used;
          • Index Space Used;
          • Number Of Row Inserts per Minute;
          • Sequential Scans per Minute.
    • HQ Tomcat 6.0
      • Métricas
        • Heap Memory Free;
        • Process Cpu Time per Minute;
        • UpTime.
      • Serviços
        • Global Request Processor
          • Error Count per Minute;
          • Processing Time per Minute;
          • Request Count per Minute.
        • Servlet Monitor
          • Error Count per Minute;
          • Request Count per Minute.
        • Thread Pools
          • Current Trhead Busy;
          • Current Thread Count.
        • HQ Internals
          • Metric Inserts Per Minute;
          • Metrics Collected Per Minute.
        • hq Hibernate Session Factory
          • Entity Fetch Count per Minute;
          • Entity Insert Count per Minute;
          • Query Execution Count per Minute;
          • Query Execution Max Time.
        • Cache
          • Access Count per Minute;
          • Hits Count per Minute.
        • Web Module Stats
          • Processing Time.
        • JSP Monitor
          • JSP Count per Minute;
          • JSP Reload Count per Minute.
        • tomcat.jdbc Hyperic Data Source
          • Active Connections;
          • Idle Connections.

Impressionante, não?

Imagine só quanto tempo levaria para habilitar todos estes monitoramentos, com indicadores de disponibilidade e gráficos em soluções, como Nagios, Icinga, Zabbix ou Cacti. Sentiu calafrios ao pensar em todo o trabalho que teria?

Monitoramento e visualização

Personalizando o monitoramento

Agora que o servidor já está sendo monitorado, é hora de revisar as métricas, descartando aquelas que não nos interessam e habilitando outras que necessitamos.

Vamos tomar como exemplo, as métricas básicas do servidor, as chamadas Platform Services:

  • Free Memory;
  • Free Memory (+buffers/cache);
  • Load Average 5 Minutes;
  • Swap Used.

Primeiramente, vamos desligar o monitoramento da métrica Free Memory(+buffers/cache). Para isso, clique na aba METRIC DATA, selecione a métrica e clique no botão DISABLE COLLECTION.

Depois, clique em INDICATORS e remova o gráfico da métrica excluída, clicando no botão em formato de X à direita de seu título e clicando no botão em formato de seta para à direita ao lado de “Update Default”.

Para habilitar uma métrica que não está sendo monitorada, clique em METRIC DATA e depois em Show All Metrics. Selecione a(s) métrica(s) que você deseja monitorar (Ex.: System CPU, Used Memory e User CPU) e, logo abaixo, selecione o intervalo de atualização das métricas no campo Collection Interval for Selected (Ex.: 5 minutos). Depois, confirme clicando no botão em formato de seta à direita.

Clique, então, em INDICATORS e aguarde de 2 a 5 minutos até que as novas métricas sejam exibidas na seção All Metrics e, então, clique no botão em formato de seta à direita para cada uma delas, e seus gráficos serão adicionados ao painel de visualização central.

Para tornar a alteração permanente, clique no botão em formato de seta à direita, ao lado de Update Default.

Use estes procedimentos para personalizar as métricas monitoradas, para cada serviço que tenha sido detectado pelo agente do Hyperic HQ.

Criando painéis de visualização

Como você deve ter percebido, os gráficos das métricas ficam empilhados um sobre o outro num painel central, chamado painel de visualização, ou apenas View.

Para fins de organização, você pode criar diversos painéis de visualização, colocando diferentes gráficos em cada um deles de acordo com os critérios que lhe forem mais convenientes.

Para demonstrar a funcionalidade, vamos criar um painel adicional contendo informações de estados de conexões TCP. O primeiro passo é habilitar o monitoramento dessas métricas, clicando em METRIC DATA, Show All Metrics, selecionando todas as métricas do tipo Tcp State e habilitando o Collection Interval para 5 minutos.

Depois clique em INDICATORS e aguarde de 2 a 5 minutos até que as métricas sejam exibidas na seção All Metrics. Então, remova todos os gráficos do painel central e adicione somente as métricas do tipo Tcp State.

Em seguida, ao lado da opção View, selecione a opção Create New View, digite o nome da nova visualização (TCP State) e clique no botão em forma de seta, à direita.

Você terá agora dois painéis de visualização: o Default, que já existia e que contém os gráficos de memória e CPU, e o TCP State, que foi criado e que contém os gráficos de Tcp State.

Você pode criar quantos painéis de visualização desejar, organizando os gráficos da maneira que lhe for mais conveniente.

Configurando novos monitoramentos manualmente

O sistema de detecção e monitoramento automático do Hyperic HQ é excelente, mas não detecta tudo. Existem serviços que, embora sejam suportados, simplesmente não serão detectados ou precisarão de alguns ajustes para serem monitorados totalmente.

Veremos a seguir, como habilitar manualmente o monitoramento de alguns serviços que não tenham sido detectados automaticamente pelo Hyperic HQ, para que você tenha uma ideia de como isso é feito.

Monitorando um processo genérico

Ao instalar o agente Hyperic HQ num servidor Linux ou Unix que possua o servidor SSH roddando, o processo sshd é monitorado automaticamente.

Se quisermos configurar outros processos, isso pode ser feito facilmente. Basta clicar em Tools Menu e selecionar a opção New Service e fornecer o nome, a descrição e o tipo do serviço que será monitorado (nesse caso, Process).

Na tela que se abre, vá na seção Configuration Properties e clique em EDIT. Preencha o campo “process.query” com o valor:

Pid.PidFile.eq=/var/run/crond.pid

E clique em OK. Depois, clique na aba Monitor, aguarde 5 minutos e atualize a página.

Monitorando Apache 2.2

Acesse o servidor onde o Apache está instalado e insira o conteúdo abaixo, no arquivo /etc/httpd/conf.d/hyperic.conf (no CentOS):

ExtendedStatus On
NameVirtualHost localhost:80

<VirtualHost localhost:80>
ServerName localhost:80

<Location /server-status>
SetHandler server-status
Allow From 127.0.0.1
</Location>
</VirtualHost>

Em seguida, reinicie o serviço para que as alterações entrem em vigor.

# apachectl restart

Depois, ajustes as permissões dos logs do Apache. Isto é necessário para que o usuário “hyperic” consiga acessá-los.

# chgrp -R apache /var/log/httpd
# find /var/log/httpd -type d -exec chmod 0750 {} \;
# find /var/log/httpd -type f -exec chmod 0640 {} \;

Em seguida, adicione o usuário “hyperic” ao grupo apache e reinicie o agente de monitoramento:

# gpasswd -a hyperic apache
# su – hyperic

$ hq-agent.sh restart
$ exit

Por fim, edite o arquivo /etc/sudoers e adicione a linha abaixo para permitir que o Hyperic HQ possa controlar o Apache usando o comando apachectl, através do comando sudo.

hyperic ALL=(root) NOPASSWD: /usr/sbin/apachectl

Agora, acesse a interface de gerenciamento do Hyperic e faça login. Se o Apache ainda não estava instalado, é provável que ele tenha sido detectado e seja exibido no portlet Auto-Discovery.

Se for esse o caso, clique em Add to Inventory. Se, por outro lado, o Apache já estava instalado na máquina antes de o agente do Hyperic ser configurado, é já deve ter sido detectado anteriormente, e só necessitará ser configurado adequadamente.

Clique na aba Resources, localize o servidor onde o Apache está instalado e clique sobre ele. O Apache deverá ser então listado na seção Deployed Servers Health, clique sobre ele, acesse a aba Inventory e, na seção Configuration Properties, clique em EDIT.

Preencha os campos como mostrados na lista abaixo, clique em OK e depois acesse a aba Monitor.

hostname: localhost;
port: 80;
path: /server-status
pidfile: /etc/httpd/run/httpd.pid;
program: /usr/sbin/apachectl;
prefix: sudo

Para o Apache e para outros tipos de servidores, o Hyperic HQ oferece o recurso de controle remoto, ou seja, você pode iniciar, parar, reiniciar ou consultar o status do serviço diretamente a partir da console do Hyperic. Essas funções, quando disponíveis, ficam dispostas na aba Control.

Definindo um alerta

Um dos recursos fundamentais de qualquer software de monitoramento, é a geração de alertas, que notificam o administrador quando algum serviço não está funcionando dentro das condições consideradas satisfatórias.

Para definir um novo alerta no Hyperic HQ, o primeiro passo é localizar o objeto que contem a métrica que será analisada para gerar o alarme. Como exemplo, vamos criar um alerta para quando houver pouca memória RAM livre no servidor “hyperic.davidsonpaulo.com”.

Ao abrirmos este servidor, encontramos a métrica Free Memory que indica a quantidade de memória livre. Ao clicar sobre o título da métrica, somos direcionados para seu gráfico detalhado. No canto superior direito, existe um link chamado Define New Alert.

Basta clicar nele e seremos direcionados para o formulário de definição de novo alerta.

Primeiramente, preenchemos os campos da seção Alert Properties: nome, descrição, prioridade, e o alerta deverá ficar ativo imediatamente após a sua configuração.

Depois, devemos selecionar qual será o gatilho do alarme, na subseção If Condition da seção Condition Set. Existem quatro possibilidades:

  1. Metric → Se o valor absoluto da métrica selecionada for menor, maior, igual ou diferente de um valor escolhido;
  2. Inventory Property → Se alguma propriedade fixa do servidor (ex.: arquitetura do processador, IP, gateway padrão etc) for alterada;
  3. Events/Logs Level → Se for encontrada um registro em algum arquivo de log associado que possua os caracteres escolhidos;
  4. Config changed → Se o arquivo de configuração selecionado for alterado.

Neste exemplo, nosso objetivo é disparar o alerta caso o nível da métrica Free Memory seja muito baixo. Então, selecionamos a opção Metric e a métrica Free Memory.

Abaixo, selecionamos a opção: is < (Less than)

E digitamos o limite escolhido de 64MB.

Em seguida, selecionamos o critério para disparo do alarme e sua periodicidade. Os critérios para disparo são dois, a saber:

  1. Each time conditions are met → O alarme será disparado assim que as condições de alarme ocorrerem;
  2. Once every <N> times conditions are met within a time period of <M><unidades> → O alarme só será disparado se as condições alarme ocorrerem N vezes dentro de um período de M unidades de tempo.

A periodicidade do alerta é definida pela opção Generate on alert and then disable alert definition until fixed. Se esta opção estiver desmarcada, um novo alerta será gerado a cada vez que as condições de alarme ocorrerem até que o problema seja resolvido. Se estiver marcada, um único alerta será gerado.

Em nosso exemplo, definiremos o alerta para somente ser disparado se as condições de alarme ocorrem 10 vezes, seguidas, ou seja, 10 vezes nos últimos 10 minutos. Também definiremos que ele seja gerado uma única vez.

Depois de criar o alarme, precisamos configurar a notificação externa. O Hyperic HQ suporta quatro tipos de notificações:

  1. Escalation→ Uma espécie de roteiro de notificação que permite escalar o problema automaticamente para diferentes níveis do suporte. É possível configurar, por exemplo, uma sequência similar a:
    1. Notificar o suporte nível 1 e aguardar 20 minutos;
    2. Notificar o suporte nível 2 e aguardar 20 minutos;
    3. Notificar a supervisão e aguardar 15 minutos;
    4. Notificar a gerência e aguardar 20 minutos;
    5. Notificar a diretoria, aguardar 20 minutos e então, repetir o ciclo de notificações.
  2. Notify HQ Users → É possível cadastrar usuários no Hyperic HQ e associar endereços de e-mail para facilitar a seleção dos destinatários dos alertas;
  3. Notify Other Recipients → Enviar os alertas para endereços de e-mail que não estejam associados a nenhum usuário do Hyperic HQ;
  4. OpenNMS → Notificar o alerta através do OpenNMS, caso haja algum servidor instalado na rede.

Em nosso exemplo, escolheremos a opção Notify HQ Users. Clique em ADD TO LIST, selecione o usuário administrador, clique na seta para a direita e então, em OK.

Linux: Hyperic HQ: monitore sua rede like a boss    Linux: Hyperic HQ: monitore sua rede like a boss

Feito isso, o alerta estará definido.

Quando a métrica Free Memory indicar um valor menor que 64MB 10 vezes seguidas num intervalo de 10 minutos, um alerta será gerado e enviado por e-mail para o destinatário admin@davidsonpaulo.com.

Dicas valiosas

Os exemplos mostrados nesta matéria devem permitir que o amigo leitor consiga realizar a instalação e configuração básica do Hyperic HQ em seu ambiente de testes e então, descubra mais de suas várias funcionalidades, que não tratei nesta matéria para não deixá-la demasiadamente grande.

Então, antes de encerrar, deixarei algumas dicas que serão de grande valia para você.

  • O Hyperic não monitorá corretamente uma máquina se o seu horário estiver com alguns segundos de diferença em relação à máquina do servidor Hyperic. Para evitar problemas, configure um servidor de hora na sua rede e configure todos os seus servidores para sincronizarem seus relógios com ele utilizando NTP;
  • Para criar, editar e excluir escalations, acesse a aba Administration e clique em Escalation Schemes Configuration;
  • Se tiver dúvidas, consulte a documentação oficial do Hyperic HQ, que é excelente (em inglês);
  • Em meu blog você pode encontrar tutoriais de como monitorar Oracle 9g e Squid usando o Hyperic HQ.