Pesquisa de site

Configurando monitoramento em tempo real com 'Ganglia' para grades e clusters de servidores Linux


Desde que os administradores de sistema se tornaram responsáveis pelo gerenciamento de servidores e grupos de máquinas, ferramentas como aplicativos de monitoramento têm sido seus melhores amigos. Você provavelmente estará familiarizado com ferramentas como Nagios, Zabbix, Icinga e Centreon. Embora esses sejam os pesos pesados do monitoramento, configurá-los e aproveitar ao máximo seus recursos pode ser um tanto difícil para novos usuários.

Neste artigo apresentaremos o Ganglia, um sistema de monitoramento facilmente escalável e que permite visualizar uma ampla variedade de métricas de sistema de servidores e clusters Linux (além de gráficos) em tempo real.

Ganglia permite configurar grades (locais) e clusters (grupos de servidores) para uma melhor organização.

Assim, você pode criar uma grade composta por todas as máquinas em um ambiente remoto e depois agrupar essas máquinas em conjuntos menores com base em outros critérios.

Além disso, a interface web do Ganglia é otimizada para dispositivos móveis e também permite exportar dados nos formatos .csv e .json.

Nosso ambiente de teste consistirá em um servidor central CentOS 7 (endereço IP 192.168.0.29) onde instalaremos o Ganglia, e um Máquina Ubuntu 14.04 (192.168.0.32), a caixa que queremos monitorar através da interface web do Ganglia.

Ao longo deste guia nos referiremos ao sistema CentOS 7 como o nó mestre e à caixa Ubuntu como a máquina monitorada.

Instalando e configurando o Ganglia

Para instalar os utilitários de monitoramento no nó mestre, siga estas etapas:

1. Habilite o repositório EPEL e instale o Ganglia e utilitários relacionados a partir dele:

yum update && yum install epel-release
yum install ganglia rrdtool ganglia-gmetad ganglia-gmond ganglia-web 

Os pacotes instalados na etapa acima junto com o ganglia, o próprio aplicativo, executam as seguintes funções:

  1. rrdtool, o banco de dados Round-Robin, é uma ferramenta usada para armazenar e exibir a variação dos dados ao longo do tempo por meio de gráficos.
  2. ganglia-gmetad é o daemon que coleta dados de monitoramento dos hosts que você deseja monitorar. Nesses hosts e no nó mestre também é necessário instalar o ganglia-gmond (o próprio daemon de monitoramento):
  3. ganglia-web fornece o frontend web onde visualizaremos os gráficos históricos e dados sobre os sistemas monitorados.

2. Configure a autenticação para a interface web do Ganglia (/usr/share/ganglia). Usaremos a autenticação básica fornecida pelo Apache.

Se você quiser explorar mecanismos de segurança mais avançados, consulte a seção Autorização e Autenticação da documentação do Apache.

Para atingir esse objetivo, crie um nome de usuário e atribua uma senha para acessar um recurso protegido pelo Apache. Neste exemplo, criaremos um nome de usuário chamado adminganglia e atribuiremos uma senha de nossa escolha, que será armazenada em /etc/httpd/auth.basic (fique à vontade para escolha outro diretório e/ou nome de arquivo – contanto que o Apache tenha permissões de leitura nesses recursos, você estará bem):

htpasswd -c /etc/httpd/auth.basic adminganglia

Digite a senha do adminganglia duas vezes antes de continuar.

3. Modifique /etc/httpd/conf.d/ganglia.conf da seguinte forma:

Alias /ganglia /usr/share/ganglia
<Location /ganglia>
    AuthType basic
    AuthName "Ganglia web UI"
    AuthBasicProvider file
    AuthUserFile "/etc/httpd/auth.basic"
    Require user adminganglia
</Location>

4. Edite /etc/ganglia/gmetad.conf:

Primeiro, use a diretiva gridname seguida de um nome descritivo para a grade que você está configurando:

gridname "Home office"

Em seguida, use data_source seguido de um nome descritivo para o cluster (grupo de servidores), um intervalo de polling em segundos e o endereço IP dos nós mestre e monitorados:

data_source "Labs" 60 192.168.0.29:8649 # Master node
data_source "Labs" 60 192.168.0.32 # Monitored node

5. Edite /etc/ganglia/gmond.conf.

a) Certifique-se de que o bloco do cluster tenha a seguinte aparência:

cluster {
name = "Labs" # The name in the data_source directive in gmetad.conf
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}

b) No bloco udp_send_chanel, comente a diretiva mcast_join:

udp_send_channel   {
  #mcast_join = 239.2.11.71
  host = localhost
  port = 8649
  ttl = 1
}

c) Por fim, comente as diretivas mcast_join e bind no bloco udp_recv_channel:

udp_recv_channel {
  #mcast_join = 239.2.11.71 ## comment out
  port = 8649
  #bind = 239.2.11.71 ## comment out
}

Salve as alterações e saia.

6. Abra a porta 8649/udp e permita que scripts PHP (executados via Apache) se conectem à rede usando o booleano SELinux necessário:

firewall-cmd --add-port=8649/udp
firewall-cmd --add-port=8649/udp --permanent
setsebool -P httpd_can_network_connect 1

7. Reinicie o Apache, gmetad e gmond. Além disso, certifique-se de que eles estejam habilitados para iniciar na inicialização:

systemctl restart httpd gmetad gmond
systemctl enable httpd gmetad httpd

Neste ponto, você poderá abrir a interface da web do Ganglia em http://192.168.0.29/ganglia e fazer login com as credenciais da #Etapa 2.

8. No host Ubuntu, instalaremos apenas o ganglia-monitor, o equivalente a ganglia-gmond em CentOS:

sudo aptitude update && aptitude install ganglia-monitor

9. Edite o arquivo /etc/ganglia/gmond.conf na caixa monitorada. Deve ser idêntico ao mesmo arquivo no nó mestre, exceto pelas linhas comentadas no cluster, udp_send_channel e udp_recv_channel deve estar habilitado:

cluster {
name = "Labs" # The name in the data_source directive in gmetad.conf
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}

udp_send_channel   {
  mcast_join = 239.2.11.71
  host = localhost
  port = 8649
  ttl = 1
}

udp_recv_channel {
  mcast_join = 239.2.11.71 ## comment out
  port = 8649
  bind = 239.2.11.71 ## comment out
}

Em seguida, reinicie o serviço:

sudo service ganglia-monitor restart

10. Atualize a interface da web e você poderá visualizar as estatísticas e os gráficos de ambos os hosts dentro da grade de escritório doméstico/cluster de laboratórios ( use o menu suspenso ao lado de Grade de escritório doméstico para escolher um cluster, Labs no nosso caso):

Usando as abas do menu (destacadas acima) você pode acessar muitas informações interessantes sobre cada servidor individualmente e em grupos. Você pode até comparar as estatísticas de todos os servidores em um cluster lado a lado usando a guia Comparar Hosts.

Basta escolher um grupo de servidores usando uma expressão regular e você poderá ver uma rápida comparação de seu desempenho:

Um dos recursos que pessoalmente considero mais atraentes é o resumo compatível com dispositivos móveis, que você pode acessar na guia Celular. Escolha o cluster de seu interesse e depois o host individual:

Resumo

Neste artigo apresentamos o Ganglia, uma solução de monitoramento poderosa e escalável para grades e clusters de servidores. Sinta-se à vontade para instalar, explorar e brincar com o Ganglia o quanto quiser (a propósito, você pode até experimentar o Ganglia em uma demonstração fornecida no site oficial do projeto.

Enquanto você faz isso, você também descobrirá que várias empresas conhecidas, tanto no mundo de TI quanto não, usam Ganglia. Existem muitos bons motivos para isso além dos que compartilhamos neste artigo, com facilidade de uso e gráficos junto com estatísticas (é bom dar uma cara ao nome, não é?) provavelmente no topo.

Mas não acredite apenas na nossa palavra, experimente você mesmo e não hesite em nos enviar uma mensagem usando o formulário de comentários abaixo se tiver alguma dúvida.