Use o Filebeat para coletar logs do MySQL, como o log de consultas lentas e o log de erros, e enviá-los a uma instância do Alibaba Cloud Elasticsearch para consulta, análise e visualização no Kibana.
Procedimento
-
Crie uma instância do Alibaba Cloud Elasticsearch para receber os logs, um console do Kibana para análise e uma instância ECS para hospedar o MySQL e o Filebeat.
-
Step 1: Instale e configure o MySQL
Instale o MySQL e ative o log de erros e o log de consultas lentas no arquivo de configuração do MySQL. O Filebeat coleta esses logs somente após a ativação.
-
Step 2: Instale e configure o Filebeat
Instale o Filebeat para coletar os logs do MySQL e enviá-los a uma instância do Alibaba Cloud Elasticsearch. Ative o módulo do MySQL e especifique os endereços de acesso do Kibana e do Alibaba Cloud Elasticsearch no arquivo de configuração do Filebeat.
-
Step 3: Visualize logs do MySQL no Kibana
Execute uma consulta de teste e visualize o log de erros e o log de consultas lentas em um painel do Kibana.
Pré-requisitos
-
Uma instância do Alibaba Cloud Elasticsearch foi criada.
Para mais informações, consulte Crie uma instância do Alibaba Cloud Elasticsearch. Este guia usa uma instância de uso geral (v6.7.0) como exemplo.
-
Uma instância ECS foi criada.
Para mais informações, consulte Crie uma instância usando a aba de inicialização personalizada. Este guia usa uma instância ECS baseada em CentOS como exemplo.
Etapa 1: Instalar e configurar o MySQL
-
Conecte-se à instância ECS.
Para mais informações, consulte Connect to a Linux instance by using a password.
NotaOs comandos neste guia são executados como um usuário não root.
-
Baixe e instale o repositório do MySQL.
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm -
Instale o MySQL.
sudo yum install mysql-server -
Configure o arquivo de log de erros e o arquivo de log de consultas lentas no arquivo my.cnf.
NotaPor padrão, os arquivos de log do MySQL ficam desativados. É necessário ativá-los manualmente. Também é possível executar um comando do MySQL para ativar temporariamente o log de consultas lentas.
-
Abra o arquivo my.cnf.
sudo vim /etc/my.cnf -
Configure os arquivos de log.
[mysqld] log_queries_not_using_indexes = 1 slow_query_log=on slow_query_log_file=/var/log/mysql/slow-mysql-query.log long_query_time=0 [mysqld_safe] log-error=/var/log/mysql/mysqld.logParâmetro
Descrição
log_queries_not_using_indexesDefine se as consultas sem uso de índices devem ser registradas no log de consultas lentas. O valor
1ativa o registro e0o desativa.slow_query_logAtiva ou desativa o log de consultas lentas. O valor
onativa o log eoffo desativa.slow_query_log_fileO caminho de armazenamento do log de consultas lentas.
long_query_timeO limiar de consulta lenta em segundos. O MySQL registra no arquivo especificado por
slow_query_log_fileas consultas que excedem esse limiar.ImportantePara fins de teste, este parâmetro está definido como
0neste tópico. Em um ambiente de produção, defina o valor conforme os requisitos do seu negócio. -
(Opcional) Crie os arquivos de log.
ImportanteO MySQL 5.6 não cria arquivos de log automaticamente. É necessário criá-los manualmente.
sudo mkdir /var/log/mysql sudo touch /var/log/mysql/mysqld.log sudo touch /var/log/mysql/slow-mysql-query.log -
Conceda permissões de leitura e gravação nos arquivos de log para todos os usuários.
sudo chmod 777 /var/log/mysql/slow-mysql-query.log /var/log/mysql/mysqld.log
-
-
Inicie o MySQL e verifique seu status.
sudo systemctl start mysqld sudo systemctl status mysqld
Etapa 2: Instalar e configurar o Filebeat
-
Faça login no console do Kibana da sua instância do Alibaba Cloud Elasticsearch.
Para mais informações, consulte Log on to the Kibana console.
No painel de navegação à esquerda, clique em Logs.
Clique em View setup instructions.
Na página Add Data to Kibana, clique em MySQL logs.
-
Na página Self managed, clique em RPM.
NotaEste guia utiliza uma instância baseada em Linux, portanto RPM está selecionado. Escolha o método de instalação adequado ao seu sistema operacional.
Siga as instruções na tela para instalar o Filebeat na sua instância ECS.
-
Modifique a configuração do módulo do MySQL para especificar os caminhos dos arquivos de log de erros e de consultas lentas.
-
Ative o módulo do MySQL.
sudo filebeat modules enable mysql -
Abra o arquivo mysql.yml.
sudo vim /etc/filebeat/modules.d/mysql.yml -
Modifique a configuração do módulo do MySQL.
- module: mysql # Error logs error: enabled: true var.paths: ["/var/log/mysql/mysqld.log"] # Set custom paths for the log files. If left empty, # Filebeat will choose the paths depending on your OS. #var.paths: # Slow logs slowlog: enabled: true var.paths: ["/var/log/mysql/slow-mysql-query.log"] # Set custom paths for the log files. If left empty, # Filebeat will choose the paths depending on your OS. #var.paths:Parâmetro
Descrição
enabledDefina o valor como
true.var.pathsO caminho do arquivo de log. Esse caminho deve corresponder ao caminho especificado no arquivo de configuração do MySQL. Para mais informações, consulte Step 1: Instale e configure o MySQL.
-
-
Configure o arquivo filebeat.yml.
-
Abra o arquivo filebeat.yml.
sudo vim /etc/filebeat/filebeat.yml -
Modifique a configuração dos módulos do Filebeat.
filebeat.config.modules: # Glob pattern for configuration loading path: /etc/filebeat/modules.d/mysql.yml # Set to true to enable config reloading reload.enabled: true # Period on which files under path should be checked for changes reload.period: 1s -
Modifique a configuração do Kibana.
#================================ Kibana ===================================== # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API. # This requires a Kibana endpoint configuration. setup.kibana: # Kibana Host # Scheme and port can be left out and will be set to the default (http and 5601) # In case you specify and additional path, the scheme is required: http://localhost:5601/path # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601 host: "https://es-cn-xxx.kibana.elasticsearch.aliyuncs.com:5601"host: O endereço de acesso do console do Kibana, obtido na página de configuração do Kibana. Para mais informações, consulte Visualize o endpoint público do console do Kibana. O formato é<Kibana public endpoint>:5601. -
Modifique a configuração de saída do Elasticsearch.
output.elasticsearch: # Array of hosts to connect to. hosts: ["es-cn-0pp1jxvcl000*****.elasticsearch.aliyuncs.com:9200"] # Optional protocol and basic auth credentials. #protocol: "https" username: "elastic" password: "<your_password>"Parâmetro
Descrição
hostsO endereço de acesso da sua instância do Alibaba Cloud Elasticsearch no formato
<Instance private IP address or public IP address>:9200. Você encontra esse endereço na página Basic Information da instância. Para mais informações, consulte Visualize as informações básicas de uma instância.NotaUtilize o endereço IP privado se as instâncias ECS e Alibaba Cloud Elasticsearch estiverem na mesma Virtual Private Cloud (VPC). Caso contrário, use o endereço IP público e configure uma lista de permissões de IP. Para mais informações, consulte Configure a public or private IP whitelist for an instance.
usernameO nome de usuário para acessar a instância do Alibaba Cloud Elasticsearch. Valor padrão: elastic.
passwordA senha correspondente ao nome de usuário especificado, definida durante a criação da instância. Se você a esquecer, poderá redefini-la. Para mais informações, consulte Reset the access password of an instance.
-
-
Execute os comandos a seguir para carregar painéis e outros ativos no Elasticsearch e no Kibana e iniciar o service do Filebeat.
sudo filebeat setup sudo service filebeat start
Etapa 3: Visualizar logs do MySQL no Kibana
-
Na instância ECS, reinicie o MySQL e execute uma consulta de teste.
Execute o seguinte comando para reiniciar o MySQL:
sudo systemctl restart mysqld -
Visualize o conteúdo do log.
Os exemplos a seguir mostram entradas de log de amostra.
[root@zl-test003 ~]# tail -50 /var/log/mysql/slow-mysql-query.log # Query_time: 0.000385 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0 SET timestamp=1590720469; ; # User@Host: root[root] @ localhost [] Id: 2 # Query_time: 0.000138 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0 SET timestamp=1590720469; ; # User@Host: root[root] @ localhost [] Id: 2 # Query_time: 0.000214 Lock_time: 0.000048 Rows_sent: 5 Rows_examined: 5 SET timestamp=1590720469; SELECT * from student; # Time: 200529 10:47:52 # User@Host: root[root] @ localhost [] Id: 2 # Query_time: 0.000231 Lock_time: 0.000117 Rows_sent: 2 Rows_examined: 10 SET timestamp=1590720472; SELECT * from runoob_tbl WHERE runoob_author='xxx'; # User@Host: root[root] @ localhost [] Id: 2 # Query_time: 0.000171 Lock_time: 0.000075 Rows_sent: 2 Rows_examined: 10 SET timestamp=1590720472; SELECT * from runoob_tbl WHERE runoob_author='xxx'; # Time: 200529 10:47:53 # User@Host: root[root] @ localhost [] Id: 2 # Query_time: 0.000149 Lock_time: 0.000075 Rows_sent: 2 Rows_examined: 10 SET timestamp=1590720473; SELECT * from runoob_tbl WHERE runoob_author='xxx'; # Time: 200529 10:47:56 # User@Host: root[root] @ localhost [] Id: 2 # Query_time: 0.000039 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0 SET timestamp=1590720476; sleep(4);[root@zl-test003 ~]# tail -50 /var/log/mysql/mysqld.log 2020-05-29 10:47:43 4240 [Note] Shutting down plugin 'INNODB_LOCKS' 2020-05-29 10:47:43 4240 [Note] Shutting down plugin 'INNODB_TRX' 2020-05-29 10:47:43 4240 [Note] Shutting down plugin 'InnoDB' 2020-05-29 10:47:43 4240 [Note] InnoDB: FTS optimize thread exiting. 2020-05-29 10:47:43 4240 [Note] InnoDB: Starting shutdown... 2020-05-29 10:47:45 4240 [Note] InnoDB: Shutdown completed; log sequence number 1666138 2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'BLACKHOLE' 2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'ARCHIVE' 2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'MRG_MYISAM' 2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'MyISAM' 2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'MEMORY' 2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'CSV' 2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'sha256_password' 2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'mysql_native_password' 2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'mysql_old_password' 2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'binlog' 2020-05-29 10:47:45 4240 [Note] /usr/sbin/mysqld: Shutdown complete 200529 10:47:45 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 200529 10:47:45 mysqld_safe Logging to '/var/log/mysql/mysqld.log'. 200529 10:47:45 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 2020-05-29 10:47:45 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_def_timestamp server option (see documentation for more details). 2020-05-29 10:47:45 0 [Note] /usr/sbin/mysqld (mysqld 5.6.48-log) starting as process 21710 ... 2020-05-29 10:47:45 21710 [Warning] Buffered warning: Changed limits: max_open_files: 1024 (requested 5000) -
Faça login no console do Kibana da instância de destino do Alibaba Cloud Elasticsearch.
Para mais informações, consulte Log on to the Kibana console.
No painel de navegação à esquerda, clique em Dashboard.
Na lista de dashboards, clique em [Filebeat MySQL] Overview.
-
No canto superior direito da página, selecione um intervalo de tempo para visualizar os logs.
