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:// 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. 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. Edite o arquivo de configuração do exportador no host central: Adicione o nome de usuário e a senha do usuário criado e do servidor MySQL do ScaleGrid que você deseja monitorar: Defina as permissões de propriedade: Crie um novo arquivo de serviço no host central: Adicione o seguinte conteúdo: 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: Faça alterações como abaixo no arquivo prometheus.yml: 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: 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. 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. Vá para a página Download Grafana para baixar a versão mais recente. O comando add-apt-repository não é um aplicativo padrão no Debian 9 e requer: Instale o repositório para versões estáveis: Existe um repositório separado se você quiser versões beta: 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: Atualize seus repositórios Apt e instale o Grafana: Ative o serviço systemd para que o Grafana inicie na inicialização: Para executar o Grafana, abra seu navegador e vá para http:// 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. 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. 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.
Como monitorar implantações #MySQL com Prometheus e Grafana no ScaleGridClique para Tweet
Instalando e configurando o MySQL Prometheus Exporter
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'@'
3. Configurar as credenciais do banco de dados
$sudo vim /etc/.mysqld_exporter.cnf
$sudo vim /etc/.mysqld_exporter.cnf[client]user=mysqld_exporterpassword=StrongPasswordhost=SG-mysqltestcluster-123456.servers.mongodirector.com
$sudo chown root:prometheus /etc/.mysqld_exporter.cnf
4. Criar arquivo de unidade systemd
$sudo vim /etc/systemd/system/mysql_exporter.service
[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
$sudo systemctl daemon-reload$sudo systemctl habilita mysql_exporter$sudo systemctl start mysql_exporter
5. Configure o MySQL Endpoint para ser raspado pelo Prometheus
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
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
Instalando o Grafana e criando painéis
1. Baixe a última versão do Grafana
$wget
2. Baixe o repositório APT e instale o Grafana
$apt-get install -y software-properties-common
$sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
$sudo add-apt-repository "deb https://packages.grafana.com/oss/deb beta main"
$wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
$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
$sudo systemctl enable grafana-server.service
4. Adicionando uma fonte de dados
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.
Veja um exemplo de painel do Grafana criado para uma implantação do MySQL no ScaleGrid: