Pular para o conteúdo principal

Monitorando o Geth com InfluxDB e Grafana

clientesnós
Intermediário
Mário Havel
13 de janeiro de 2021
5 minutos de leitura minute read

Esse tutorial ajudará você a configurar o monitoramento do seu Geth para você poder entender melhor o seu desempenho e identificar possíveis problemas.

Pré-Requisitos

Stack de monitoramento

Um cliente Ethereum coleta muitos dados que podem ser lidos na forma de uma base de dados cronológica. Para facilitar o monitoramento, você pode inserir isso em um software de visualização de dados. Existem múltiplas opções disponíveis:

Também há o Geth Prometheus Exporter(opens in a new tab), uma opção pré-configurada com InfluxDB e Grafana. Você pode configurá-lo facilmente usando docker e Ethbian OS(opens in a new tab) para RPi 4.

Neste tutorial, nós configuramos seu cliente Geth para enviar dados para o InfluxDB para criar um banco de dados e o Grafana para criar um gráfico de visualização dos dados. Fazer isso manualmente ajudará você a entender melhor o processo, alterá-lo e fazer deploy em diferentes ambientes.

Configurando o InfluxDB

Primeiro, vamos baixar e instalar o InfluxDB. Várias opções de download podem ser encontradas na página de release do Influxdata(opens in a new tab). Escolha o que mais se adequa ao seu ambiente. Você também pode instalá-lo a partir de um repositório(opens in a new tab). Por exemplo, em uma distribuição baseada em Debian:

1curl -tlsv1.3 --proto =https -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add
2source /etc/lsb-release
3echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
4sudo apt update
5sudo apt install influxdb -y
6sudo systemctl enable influxdb
7sudo systemctl start influxdb
8sudo apt install influxdb-client

Após instalar o InfluxDB com sucesso, certifique-se de que ele está sendo executado em segundo plano. Por padrão, ele é acessível em localhost:8086. Antes de usar o cliente influx você tem que criar um novo usuário com privilégios de administrador. Este usuário servirá para gerenciamento de alto nível, criando bancos de dados e usuários.

1curl -XPOST "http://localhost:8086/query" --data-urlencode "q=CREATE USER username WITH PASSWORD 'password' WITH ALL PRIVILEGES"

Agora você pode usar o cliente influx para entrar no shell do InfluxDB(opens in a new tab) com este usuário.

1influx -username 'username' -password 'password'

Comunificando diretamente com o InfluxDB em seu shell, você pode criar banco de dados e usuário para métricas do geth.

1create database geth
2create user geth with password choosepassword

Verifique as entradas criadas com:

1show databases
2show users

Saia do Shell InfluxDB.

1exit

O InfluxDB está rodando e configurado para armazenar métricas do Geth.

Preparando o Geth

Depois de configurar o banco de dados, precisamos habilitar a coleção de métricas no Geth. Preste atenção em METRICS AND STATS OPTIONS com geth --help. Várias opções podem ser encontradas lá, neste caso queremos que o Geth envie dados para o InfluxDB. A configuração básica especifica o endpoint onde o InfluxDB é acessível e a autenticação para o banco de dados.

1geth --metrics --metrics.influxdb --metrics.influxdb.endpoint "http://0.0.0.0:8086" --metrics.influxdb.username "geth" --metrics.influxdb.password "chosenpassword"

Estas flags podem ser anexadas a um comando que inicie o cliente ou salvas no arquivo de configuração.

Você pode verificar que o Geth está fazendo push de dados com sucesso, por exemplo, listando as métricas no banco de dados. Saia do shell do InfluxDB:

1use geth
2show measurements

Configurando o Grafana

O próximo passo é instalar o Grafana que interpretará os dados graficamente. Siga o processo de instalação do seu ambiente na documentação do Grafana. Certifique-se de instalar a versão OSS se você não quiser o contrário. Etapas de instalação de exemplo para distribuições Debian usando o repositório:

1curl -tlsv1.3 --proto =https -sL https://packages.grafana.com/gpg.key | sudo apt-key add -
2echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
3sudo apt update
4sudo apt install grafana
5sudo systemctl enable grafana-server
6sudo systemctl start grafana-server

Quando você estiver rodando o Grafana, ele deve ser acessível em localhost:3000. Use seu navegador preferido para acessar esta URL e, em seguida, faça login com as credenciais padrão (usuário: admin e senha: admin). Quando solicitado, altere a senha padrão e salve.

Você vai ser redirecionado para a página principal do Grafana. Primeiro, configure seu source data. Clique no ícone de configuração na barra esquerda e selecione "Data sources".

Ainda não existem data sources criados, clique em "Add data source" para definir um.

Para esta configuração, selecione "InfluxDB" e prossiga.

A configuração do data source é bem simples se você estiver rodando ferramentas na mesma máquina. Você precisa configurar o endereço e os detalhes do InfluxDB para acessar o banco de dados. Consulte a imagem abaixo.

Se tudo estiver completo e o InfluxDB estiver acessível, clique em "Save and test" e aguarde a confirmação aparecer.

O Grafana está agora configurado para ler dados do InfluxDB. Agora você precisa criar um painel que o interprete e o exiba. As propriedades dos Dashboards são codificadas em arquivos JSON que podem ser criados por qualquer um e podem ser facilmente importados. Na barra esquerda, clique em "Create and Import".

Para um dashboard de monitoramento do Geth, copie o ID deste dashboard(opens in a new tab) e cole-o em "Import page" no Grafana. Depois de salvar o dashboard, ele deve ficar assim:

Você pode modificar seus dashboards. Cada dashboard pode ser editado, movido, removido ou adicionado. Você pode alterar suas configurações. É com você! Para saber mais sobre como os dashboards funcionam, consulte a documentação do Grafana(opens in a new tab). Você também pode estar interessado sobre Notificações / Alertas(opens in a new tab). Isso permite configurar notificações de alerta para quando as métricas alcançarem certos valores. Vários canais de comunicação são suportados.

Última edição: @matheuspoleza(opens in a new tab), 22 de janeiro de 2024

Este tutorial foi útil?