Monitorando droplets MySQL e MariaDB usando o Prometheus MySQL Exporter
Introdução
O monitoramento eficaz dos bancos de dados MySQL e MariaDB é essencial para manter o desempenho ideal, identificar possíveis gargalos e garantir a confiabilidade geral do sistema. Prometheus MySQL Exporter é uma ferramenta robusta que oferece insights detalhados sobre métricas de banco de dados que são cruciais para gerenciamento proativo e solução de problemas.
Neste tutorial, você aprenderá como configurar o Prometheus MySQL Exporter para monitorar bancos de dados MySQL e MariaDB usando configuração manual e automação baseada em script. Esses métodos oferecem flexibilidade para selecionar a melhor estratégia de implantação e abordagem de fluxo de trabalho operacional.
Ao final, você terá um sistema de monitoramento operacional utilizando Prometheus e Grafana para análise de desempenho em tempo real.
Observação: o tempo aproximado de configuração deste tutorial é de cerca de 25 minutos
Pré-requisitos
Antes de começar, certifique-se de ter os seguintes pré-requisitos em vigor:
Você precisará ter servidores de banco de dados MySQL ou MariaDB configurados e rodando em um Ubuntu Droplet. Você pode consultar nossos tutoriais sobre Como instalar o MariaDB no Ubuntu e Como instalar o MySQL no Ubuntu. Os servidores que você deseja monitorar devem estar acessíveis na máquina onde você planeja instalar o Prometheus MySQL Exporter.
Você precisará de acesso SSH aos Droplets MySQL ou MariaDB Ubuntu para instalar e configurar o Prometheus MySQL Exporter.
O Prometheus MySQL Exporter integra-se ao Prometheus para coleta de métricas e ao Grafana para visualização. Aqui, você usará imagens Prometheus e Grafana do DigitalOcean Marketplace para monitorar o banco de dados Droplets.
Método 1 – Configuração Manual
Vamos prosseguir com o método de configuração manual nesta seção.
Adicionar usuário e grupo do sistema Prometheus
Nesta etapa, você configurará os Target Droplets. Vamos criar um usuário e grupo de sistema chamado “prometheus” para gerenciar o serviço de exportação.
sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus
Baixe e instale o exportador Prometheus MySQL
Nesta etapa, você fará download da versão mais recente do Prometheus MySQL Exporter do GitHub, extrairá os arquivos baixados e moverá o binário para o diretório /usr/local/bin/
.
curl -s https://api.github.com/repos/prometheus/mysqld_exporter/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -
tar xvf mysqld_exporter*.tar.gz
sudo mv mysqld_exporter-*.linux-amd64/mysqld_exporter /usr/local/bin/
sudo chmod +x /usr/local/bin/mysqld_exporter
Criar usuário do banco de dados do Prometheus Exporter
Faça login no MySQL como root e crie um usuário dedicado para o exportador com os privilégios necessários.
mysql -u root -p
Digite a senha root, se necessário, e você verá o prompt MySQL/MariaDB
. Em seguida, execute os seguintes comandos (substitua giveapassword
no comando abaixo por uma nova senha para o usuário do banco de dados mysqld_exporter
).
Crie um novo usuário MySQL chamado mysqld_exporter
com uma senha giveapassword
para conexões locais.
CREATE USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'giveapassword';
Conceda ao usuário mysqld_exporter
permissões para visualizar listas de processos, status de replicação do cliente e consultar dados de todos os bancos de dados.
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'localhost';
Recarregue as tabelas de concessão para aplicar as alterações feitas nas permissões do usuário.
FLUSH PRIVILEGES;
Saia da interface de linha de comando do MySQL.
EXIT
Configurar credenciais de banco de dados
Crie um arquivo de configuração para armazenar as credenciais do exportador MySQL.
sudo vi /etc/.mysqld_exporter.cnf
Adicione as seguintes credenciais de usuário ao arquivo:
[client]
user=mysqld_exporter
password=giveapassword
Defina permissões de propriedade para o arquivo de configuração:
sudo chown root:prometheus /etc/.mysqld_exporter.cnf
Criar arquivo de unidade systemd
Crie um arquivo de unidade de serviço systemd
para gerenciar o serviço MySQL Exporter:
sudo vi /etc/systemd/system/mysql_exporter.service
Adicione os seguintes dados ao arquivo:
[Unit]
Description=Prometheus MySQL Exporter
After=network.target
User=prometheus
Group=prometheus
[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/mysqld_exporter \
--config.my-cnf /etc/.mysqld_exporter.cnf \
--collect.global_status \
--collect.info_schema.innodb_metrics \
--collect.auto_increment.columns \
--collect.info_schema.processlist \
--collect.binlog_size \
--collect.info_schema.tablestats \
--collect.global_variables \
--collect.info_schema.query_response_time \
--collect.info_schema.userstats \
--collect.info_schema.tables \
--collect.perf_schema.tablelocks \
--collect.perf_schema.file_events \
--collect.perf_schema.eventswaits \
--collect.perf_schema.indexiowaits \
--collect.perf_schema.tableiowaits \
--collect.slave_status \
--web.listen-address=0.0.0.0:9104
[Install]
WantedBy=multi-user.target
Recarregue o systemd e inicie o MySQL Exporter Service
Recarregue a configuração do systemd
e inicie o serviço MySQL Exporter:
sudo systemctl daemon-reload
sudo systemctl enable mysql_exporter
sudo systemctl start mysql_exporter
Configurando o Droplet do Prometheus
Vamos começar fazendo um backup do arquivo prometheus.yml
:
cp /etc/prometheus/prometheus.yml /etc/prometheus/prometheus.yml-$(date +'%d%b%Y-%H:%M')
Agora faça login em seu servidor Prometheus e adicione os endpoints do MySQL Exporter a serem copiados.
Substitua os endereços IP e as portas pelos endpoints do MySQL Exporter (9104 é a porta padrão para o exportador Prometheus MySQLd).
vi /etc/prometheus/prometheus.yml
scrape_configs:
- job_name: server1_db
static_configs:
- targets: ['10.10.1.10:9104']
labels:
alias: db1
- job_name: server2_db
static_configs:
- targets: ['10.10.1.11:9104']
labels:
alias: db2
Método 2 – Configuração usando scripts
Você também pode conseguir isso executando dois scripts - um para os droplets de destino e outro para o droplet do Prometheus.
Vamos começar configurando os Target Droplets.
Etapa 1: SSH no Droplet de destino.
Etapa 2: baixe o script de configuração de destino usando o seguinte comando:
wget https://solutions-files.ams3.digitaloceanspaces.com/MySQL-MariaDB-Monitoring/DO_MySQL_MariaDB_Target_Config.sh
Etapa 3: após o download do script, certifique-se de que ele tenha permissões executáveis executando:
chmod +x DO_MySQL_MariaDB_Target_Config.sh
Etapa 4: execute o script executando:
./DO_MySQL_MariaDB_Target_Config.sh
Etapa 5: insira uma nova senha para o usuário mysql_exporter
e, em seguida, insira a senha root do MySQL:
A configuração está completa.
Nota - O script será encerrado nos seguintes casos:
- Se o mysql_exporter já existir no Droplet de destino
- Se você digitar a senha mysql errada
Configurando o Droplet Prometheus (Método Script)
Etapa 1: SSH no Droplet do Prometheus.
Etapa 2: baixe o script de configuração do Prometheus usando o seguinte comando:
wget https://solutions-files.ams3.digitaloceanspaces.com/MySQL-MariaDB-Monitoring/DO_MySQL_MariaDB_Prometheus_Config.sh
Este script bash automatiza a atualização do arquivo de configuração do Prometheus para adicionar novos endpoints do servidor. Ele começa fazendo backup do arquivo prometheus.yml atual com um nome de arquivo com carimbo de data e hora.
O script então solicita que o usuário especifique o número de servidores a serem adicionados e valida essa entrada.
Para cada servidor, ele solicita um nome de host e um endereço IP, garantindo que cada endereço IP seja exclusivo no arquivo de configuração. As configurações válidas do servidor são anexadas ao arquivo prometheus.yml. Após atualizar a configuração, o script reinicia o serviço Prometheus e verifica seu status para confirmar se as alterações foram aplicadas.
Finalmente, ele aguarda a entrada do usuário antes de sair.
Etapa 3: após o download do script, certifique-se de que ele tenha permissões executáveis executando:
chmod +x DO_MySQL_MariaDB_Prometheus_Config.sh
Etapa 4: execute o script executando:
./DO_MySQL_MariaDB_Prometheus_Config.sh
Etapa 5: insira o número de gotas a serem adicionadas ao monitoramento.
Etapa 6: insira os nomes de host e endereços IP.
Etapa 7: A configuração está concluída.
Etapa 8: Depois de adicionados, verifique se os destinos estão atualizados acessando a URLprometheushostname:9090/targets
.
Nota: Se você inserir um endereço IP já adicionado ao monitoramento, será solicitado que você insira os detalhes novamente. Além disso, se você não tiver mais servidores para adicionar, poderá inserir 0 para sair do script.
Configurando o Grafana
Etapa 1: Faça login no painel do Grafana visitando Grafana-IP:3000
em um navegador.
Etapa 2: vá para Configuração > Fontes de dados.
Etapa 3: clique em Adicionar fonte de dados.
Etapa 4: pesquise e selecione Prometheus.
Etapa 5: insira o nome como Prometheus e o URL (Prometheushostname:9090
) e clique em Salvar e testar. Se você vir “A fonte de dados está funcionando”, você adicionou a fonte de dados com sucesso. Feito isso, vá em Criar > Importar.
Etapa 6: você pode configurar manualmente o painel ou importar o painel fazendo upload do arquivo JSON. Um modelo JSON para monitoramento MySQL e MariaDB pode ser encontrado no link abaixo:
https://solutions-files.ams3.digitaloceanspaces.com/MySQL-MariaDB-Monitoring/DO_Grafana-Mysql-MariaDB_Monitoring.json
Etapa 7: Preencha os campos e importe.
Etapa 8: O painel do Grafana está pronto. Selecione o host e verifique se as métricas estão visíveis. Você pode modificar e editar o painel conforme necessário.
Conclusão
Neste tutorial, você aprendeu a automatizar o processo de configuração para implantar o Prometheus MySQL Exporter em seus servidores. Seguindo as etapas, você pode instalar e configurar com eficiência o exportador para coletar métricas do MySQL para monitoramento.
Ao automatizar essas etapas, você pode agilizar o processo de implantação, reduzir o risco de erro humano e garantir uma configuração consistente em vários servidores. Este tutorial é uma solução confiável e eficiente para implantar o Prometheus MySQL Exporter em sua infraestrutura de monitoramento.