Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como monitorar implantações do MySQL com Prometheus e Grafana no ScaleGrid

Monitorar o desempenho do banco de dados MySQL em tempo real ajuda a identificar imediatamente problemas e outros fatores que podem estar causando problemas agora ou no futuro. Também é uma boa maneira de determinar quais componentes do banco de dados podem ser aprimorados ou otimizados para aumentar sua eficiência e desempenho. Isso geralmente é feito por meio de software e ferramentas de monitoramento integrados ao software de gerenciamento de banco de dados ou instalados de fornecedores terceirizados.

Prometheus é um aplicativo de software de código aberto usado para monitoramento e alerta de eventos. Ele pode ser usado junto com uma ferramenta de visualização como o Grafana para criar e editar facilmente painéis, consultar, visualizar, alertar e entender suas métricas. O ScaleGrid fornece acesso total de administrador às suas implantações MySQL – isso facilita a integração do ecossistema de ferramentas MySQL existente com suas implantações MySQL do ScaleGrid na AWS ou no Azure. O Prometheus funciona bem para gravar qualquer série temporal puramente numérica e também oferece suporte para coleta e consulta de dados multidimensionais. O Grafana pode ser usado com ele para criar painéis que ajudam a visualizar esses dados de maneira fácil de interpretar e utilizar. Essas ferramentas fornecerão informações adicionais sobre suas métricas, padrões de uso e conjuntos de dados, além do monitoramento, análise de consultas e alertas do ScaleGrid MySQL. Nesta postagem do blog, discutimos como você pode configurar e usar o Prometheus e o Grafana com suas implantações do ScaleGrid MySQL para monitoramento e alertas avançados de banco de dados.

Como configurar seu monitoramento do MySQL

Vamos percorrer as etapas envolvidas na instalação e configuração do servidor Prometheus para armazenar e exibir as métricas, um exportador (exportador MySQL neste caso) para coletar as métricas e retransmiti-las para o servidor Prometheus e o Grafana para criar painéis. A ferramenta MySQL Exporter pode ser instalada localmente em um servidor MySQL ou centralmente no servidor Prometheus. No caso de uso abaixo, explicaremos como configurar e começar a usar o Prometheus, o MySQL Exporter e o Grafana a partir de um host central em execução no Ubuntu para monitorar vários servidores MySQL. Você também pode rever as instruções passo a passo em nosso documento de ajuda do Prometheus e do Grafana para MySQL.

O diagrama de blocos abaixo mostra a configuração de uma implantação do MySQL master-slave-quorum que inclui dois nós portadores de dados (mestre e escravo) e um membro votante (quorum) usando o MySQL Exporter, host Prometheus e Grafana:


Instalando e configurando o servidor Prometheus

O Prometheus é a ferramenta que usaremos para centralizar e armazenar suas métricas do MySQL. Ele extrai as métricas de um ou vários exportadores em intervalos regulares e as exibe em sua interface do usuário. Abaixo estão as etapas para instalar e configurar o Prometheus em um host central do Ubuntu. Para mais detalhes, você pode consultar este artigo.

1. Criar um grupo e usuário do sistema Prometheus

$sudo groupadd --system prometheus$sudo useradd -s /sbin/nologin --system -g prometheus prometheus

2. Crie um diretório de dados para o Prometheus

$sudo mkdir /var/lib/prometheus

3. Criar diretórios de configuração para o Prometheus

$for i em regras rules.d files_sd; faça sudo mkdir -p /etc/prometheus/${i}; feito

4. Baixe o arquivo do Prometheus e extraia o arquivo

Para baixar o arquivo binário mais recente do Prometheus:

$mkdir -p /tmp/prometheus &&cd /tmp/prometheus$curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest \| grep browser_download_url \| grep linux-amd64 \| cut -d '"' -f 4 \| wget -qi -

Para extrair o arquivo:

$tar xvf prometheus*.tar.gz$cd prometheus*/

5. Mova os arquivos do Prometheus para locais padrão

Mova os arquivos binários do Prometheus para /usr/local/bin:

$sudo mv prometheus promtool /usr/local/bin/

Mova o modelo de configuração do Prometheus para o diretório /etc:

$sudo mv prometheus.yml  /etc/prometheus/prometheus.yml

Mova também consoles e console_libraries para o diretório /etc/prometheus:

$sudo mv consoles/ console_libraries/ /etc/prometheus/

6. Criar/editar um arquivo de configuração do Prometheus

As configurações do modelo devem ser semelhantes às abaixo:

$cat /etc/prometheus/prometheus.yml #my global config global:scrape_interval:15s # Defina o intervalo de raspagem para cada 15 segundos. O padrão é a cada 1 minuto. assessment_interval:15s # Avalia as regras a cada 15 segundos. O padrão é a cada 1 minuto. #scrape_timeout está definido para o padrão global (10s). #Alertmanager configuration alerting:alertmanagers:- static_configs:- targets:#- alertmanager:9093 #Carregar regras uma vez e avaliá-las periodicamente de acordo com o 'evaluation_interval' global. rule_files:#- "first_rules.yml" #- "second_rules.yml" #Uma configuração de raspagem contendo exatamente um endpoint para raspar:#Aqui é o próprio Prometheus. scrape_configs:#O nome do job é adicionado como um rótulo `job=` para qualquer série temporal extraída desta configuração. - job_name:'prometheus' #metrics_path padrão para '/metrics' #scheme padrão para 'http'. static_configs:- destinos:['localhost:9090']

7. Criar um arquivo de unidade de serviço do Prometheus systemd

$sudo vim /etc/systemd/system/prometheus.service

Adicione o seguinte conteúdo:

 [Unidade] Description=Prometheus Documentation=https://prometheus.io/docs/introduction/overview/ Wants=network-online.target After=network-online.target [Service] Type=simple Environment="GOMAXPROCS=1" User=prometheus Group=prometheus ExecReload=/bin/kill -HUP $MAINPID ExecStart=/usr/local/bin/prometheus \ --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb. path=/var/lib/prometheus \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries \ --web.listen-address=0.0.0.0 :9090 \ --web.external-url=SyslogIdentifier=prometheus Restart=sempre [Instalar] WantedBy=multi-user.target

Lembre-se de editar a linha:Environment=”GOMAXPROCS=1 substituindo 1 pelo número de vcpus no seu servidor.

8. Alterar permissões do diretório

Altere a propriedade desses diretórios para usuário e grupo do Prometheus:

$for i em regras rules.d files_sd; faça sudo chown -R prometheus:prometheus /etc/prometheus/${i}; done$for i em regras rules.d files_sd; faça sudo chmod -R 775 /etc/prometheus/${i}; done$sudo chown -R prometheus:prometheus /var/lib/prometheus/

9. Recarregue o systemd Daemon e inicie o serviço

$sudo systemctl daemon-reload$sudo systemctl start prometheus$sudo systemctl habilita prometheus

Verifique o status usando systemctl status prometheus comando:


10. Configurar um firewall para abrir a porta 9090

$sudo firewall-cmd --add-port=9090/tcp --permanent$sudo firewall-cmd --reload

Quando a configuração estiver concluída, você poderá acessar a interface do usuário do Prometheus fazendo login em http://:9090

Como monitorar implantações #MySQL com Prometheus e Grafana no ScaleGridClique para Tweet

Instalando e configurando o MySQL Prometheus Exporter

O Prometheus requer um exportador para coletar as métricas do servidor MySQL. Este exportador pode ser executado centralmente no servidor Prometheus ou no servidor de banco de dados. Para ler mais, consulte a documentação do Prometheus.

Siga as etapas abaixo para instalar e configurar o MySQL Prometheus Exporter no host central do Prometheus. Para obter mais detalhes, consulte este artigo.

1. Baixe e instale o Prometheus MySQL Exporter

$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

2. Crie um usuário de banco de dados do Prometheus Exporter para acessar o banco de dados, extrair métricas e fornecer subsídios

CRIAR USUÁRIO 'mysqld_exporter'@'' IDENTIFICADO POR 'StrongPassword' COM MAX_USER_CONNECTIONS 2;GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'';FLUSH PRIVILEGES;EXIT 

COM MAX_USER_CONNECTIONS 2 é usado para definir um limite máximo de conexão para o usuário evitar sobrecarregar o servidor com monitoramento de rascunhos sob carga pesada.

3. Configurar as credenciais do banco de dados

Edite o arquivo de configuração do exportador no host central:

$sudo vim /etc/.mysqld_exporter.cnf

Adicione o nome de usuário e a senha do usuário criado e do servidor MySQL do ScaleGrid que você deseja monitorar:

$sudo vim /etc/.mysqld_exporter.cnf[client]user=mysqld_exporterpassword=StrongPasswordhost=SG-mysqltestcluster-123456.servers.mongodirector.com

Defina as permissões de propriedade:

$sudo chown root:prometheus /etc/.mysqld_exporter.cnf

4. Criar arquivo de unidade systemd

Crie um novo arquivo de serviço no host central:

$sudo vim /etc/systemd/system/mysql_exporter.service

Adicione o seguinte conteúdo:

 [Unidade] Descrição=Prometheus MySQL Exporter After=network.target User=prometheus Group=prometheus [Service] Type=simples Restart=sempre 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 

web.listen-address=0.0.0.0:9104 especifica que o servidor está escutando na porta 9104. Se o seu servidor tiver uma rede pública e privada, pode ser necessário substituir 0.0.0.0:9104 por IP privado, por exemplo – 192.168.4.5:9104.

Quando terminar, recarregue o systemd e inicie o serviço mysql_exporter:

$sudo systemctl daemon-reload$sudo systemctl habilita mysql_exporter$sudo systemctl start mysql_exporter

5. Configure o MySQL Endpoint para ser raspado pelo Prometheus

Faça alterações como abaixo no arquivo prometheus.yml:

scrape_configs:- job_name:mysql_server1static_configs:- targets:['localhost:9104']labels:alias:db1

Observação:se o exportador não estiver sendo executado no mesmo host que o Prometheus, forneça o endereço IP do servidor em vez do localhost. 9104 refere-se à porta que o Prometheus escuta, conforme especificado na etapa anterior.

Monitorando vários hosts MySQL de um host central do Prometheus

Vários servidores MySQL podem ser monitorados a partir de um servidor central. Isso pode ser feito com um serviço de exportação separado para cada servidor. Certifique-se de criar arquivos .mysqld_exporter.cnf e mysql_exporter.service (com números de porta exclusivos atribuídos ao sinalizador –web.listen-address) para cada serviço, conforme mencionado nas etapas 3 e 4 acima. Adicione destinos ao arquivo prometheus.yml conforme mencionado na etapa 5 acima. Os nomes dos trabalhos devem ser exclusivos para cada alvo. Por exemplo:

scrape_configs:- job_name:mysql_server1static_configs:- targets:['localhost:9104']labels:alias:db1- job_name:mysql_server2static_configs:- targets:['localhost:9105']labels:alias:db2- job_name:mysql_server3static_configs:- destinos:['localhost:9106']labels:alias:db3

Observação:o Prometheus Server deve ser capaz de alcançar os alvos pela rede. Certifique-se de que suas configurações de rede/firewall tenham sido modificadas de acordo.

Instalando o Grafana e criando painéis

O Grafana usa o Prometheus como fonte de dados, permitindo que você crie painéis para visualizar e entender melhor suas métricas. Ele fornece uma ótima maneira de obter informações sobre seus dados de série temporal.

Siga as etapas abaixo para instalar o Grafana em seu host central do Prometheus.

1. Baixe a última versão do Grafana

Vá para a página Download Grafana para baixar a versão mais recente.

$wget $sudo apt-get install -y adduser libfontconfig1$sudo dpkg -i grafana__amd64.deb

2. Baixe o repositório APT e instale o Grafana

O comando add-apt-repository não é um aplicativo padrão no Debian 9 e requer:

$apt-get install -y software-properties-common

Instale o repositório para versões estáveis:

$sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"

Existe um repositório separado se você quiser versões beta:

$sudo add-apt-repository "deb https://packages.grafana.com/oss/deb beta main"

Use a linha acima mesmo se você estiver no Ubuntu ou em outra versão do Debian. Em seguida, adicione nossa chave gpg. Isso permite que você instale pacotes assinados:

$wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

Atualize seus repositórios Apt e instale o Grafana:

$sudo apt-get update$sudo apt-get install grafana

3. Iniciar o serviço

$systemctl daemon-reload$systemctl start grafana-server$systemctl status grafana-server

Ative o serviço systemd para que o Grafana inicie na inicialização:

$sudo systemctl enable grafana-server.service

Para executar o Grafana, abra seu navegador e vá para http://:3000/ . 3000 é a porta http que o Grafana escuta, por padrão.

4. Adicionando uma fonte de dados

Quando instalado, faça login no painel do administrador e navegue até Configuração> Fontes de dados. Clique em Adicionar fonte de dados, selecione Prometheus em Bancos de dados de séries temporais e preencha os campos Nome e URL.

Nome:Prometheus-1 URL:http://localhost:9090


Observação:se o servidor Prometheus não estiver sendo executado no mesmo host que o Grafana, forneça o endereço IP do servidor em vez do localhost.


Agora você está pronto para criar e personalizar painéis para seu monitoramento MySQL. Você pode criar um novo painel clicando no link no lado direito do seletor de painel. Uma vez que o painel é criado, você pode adicionar painéis escolhendo as métricas a serem exibidas, estrelar o painel, salvá-lo e compartilhá-lo. Para instruções detalhadas, você pode consultar a documentação de primeiros passos do Grafana.

Veja um exemplo de painel do Grafana criado para uma implantação do MySQL no ScaleGrid:

O painel Grafana acima exibe as métricas MySQL Select Types, MySQL Client Thread Activity, MySQL Network Usage Hourly, e MySQL Table Locks métricas visualizadas nos gráficos, e o painel Grafana abaixo exibe MySQL Top Contadores de comandos e contadores de comandos principais do MySQL por hora.


Estamos sempre procurando facilitar a vida de nossos usuários, portanto, informe-nos sobre outras ferramentas que você gostaria de conectar às suas implantações do ScaleGrid por meio de nosso comentários ou via Twitter em @scalegridio.