Como monitorar o Apache Zookeeper com o Metricbeat
Tags: zookeeper, elasticsearch, metricbeat
Published: 2020-12-21 12:58:49

## O que é o Apache Zookeeper

O Apache ZooKeeper é um software com a Licença Apache 2.0 da [Apache Software Foundation](https://en.wikipedia.org/wiki/Apache_Software_Foundation).

Ele é um serviço centralizado voltado para grandes sistemas distribuídos e através dele é possível  manter informações de configuração, registro de nomenclatura e fornecer sincronização distribuída por exemplo.

_"A arquitetura do ZooKeeper suporta alta disponibilidade através de serviços redundantes. Os clientes podem, assim, pedir a outro líder do ZooKeeper se o primeiro não responder. Os nós do ZooKeeper armazenam seus dados em um espaço de nomes hierárquico, muito parecido com um sistema de arquivos ou uma estrutura de dados em árvore. Os clientes podem ler e gravar nos nós e, desse modo, ter um serviço de configuração compartilhado. O ZooKeeper pode ser visto como um sistema de transmissão atômica, através do qual as atualizações são totalmente ordenadas. O protocolo ZooKeeper Atomic Broadcast (ZAB) é o núcleo do sistema."_ 
**Referência:** [Instalando SolrCloud com Zookeeper Externo](https://churrops.io/2018/03/30/solr-instalando-solrcloud-com-zookeeper-externo/) de Rodrigo Floriano

Para saber mais sobre o projeto, acesse o site oficial e a sua wiki.

* [Site oficial do Zookeeper](https://zookeeper.apache.org/)
* [Wiki do Zookeeper](https://cwiki.apache.org/confluence/display/ZOOKEEPER/Index)

## Como monitorar o Apache Zookeeper utilizando o Metricbeat?

Para começar esse lab, você precisará ter um ambiente com o Zookeeper de preferência em uma versão >= 3.4.0 e outro ambiente com o Elasticsearch e com o Kibana configurados.

Assim que você tiver esses pré requisitos, poderá começar a seguir os passos abaixo para configurar o Metricbeat para coletar os dados do Zookeeper.

Para instalar o Metricbeat nos hosts do Zookeeper, siga os passos descritos abaixo.

* Faça o download do Metricbeat nesse [link](https://www.elastic.co/pt/downloads/beats/metricbeat).

* Instale o Metricbeat:
**Windows:** `PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-metricbeat.ps1`
**Linux:** `sudo rpm -vi metricbeat-7.10.1-x86_64.rpm`

* Acesse o arquivo de configuração do Metricbeat:
**Windows:** `C:\Program Files\Metricbeat\metricbeat.yml`
**Linux:** `/etc/metricbeat/metricbeat.yml`

* Insira nele as informações de conexão com o Elasticsearch e com o Kibana:

```
output.elasticsearch:
  hosts: ["url_do_elasticsearch:9200"]
setup.kibana:
  host: ["url_do_kibana:5601"]
```
Se você estiver usando o Metricbeat OSS insira as seguintes configurações no fim do arquivo metricbeat.yml:

```
# Set to true to enable the monitoring reporter.
#monitoring.enabled: false
setup.ilm.enabled: false
setup.pack.security.enabled: false
setup.xpack.graph.enabled: false
setup.xpack.watcher.enabled: false
setup.xpack.monitoring.enabled: false
setup.xpack.reporting.enabled: false
```
* Habilite e configure o módulo do Apache Zookeeper:
**Windows:** `.\metricbeat.exe modules enable zookeeper`
**Linux:** `sudo metricbeat modules enable zookeeper`

* Para modificar as configurações do módulo, altere o arquivo zookeeper.yml:
**Windows:** `modules.d/zookeeper.yml`
**Linux:** `/etc/metricbeat/modules.d/zookeeper.yml`

Por padrão, o arquivo vem com as seguintes informações:
```
# Module: zookeeper
# Docs: https://www.elastic.co/guide/en/beats/metricbeat/7.10/metricbeat-module-zookeeper.html
- module: zookeeper
  #metricsets:
  #  - mntr
  #  - server
  period: 10s
  hosts: ["localhost:2181"]
```
* Carregue os dashboards do módulo:
**Windows:** `.\metricbeat.exe setup`
**Linux:** `sudo metricbeat setup`

* Inicie o serviço do Metricbeat:
**Windows:** `Start-Service metricbeat`
**Linux:** `sudo service metricbeat start`

Depois disso, você conseguirá ver os logs do seu ambiente no discover, além de ter dashboards com informações e métricas do estado do seu Zookeeper.

**Métricas**
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/0dlhhwy4ievt6soqt2gn.png)

**Logs**
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/0qebwfyvnwvl5cznvtlo.png)

Para obter mais informações, acesse a [documentação](https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-module-zookeeper.html) oficial desse módulo no site da Elastic.