如果您需要查看並分析MySQL的日誌資訊(例如慢日誌、error日誌等),可通過Filebeat採集MySQL日誌並發送到Elasticsearch中,然後在Kibana控制台中完成可視化查詢、分析和展示。
操作流程
建立Elasticsearch和ECS執行個體。Elasticsearch執行個體用來接收Filebeat採集的MySQL日誌,並提供一個Kibana控制台進行可視化查詢、分析與展示;ECS執行個體用來安裝MySQL和Filebeat。
安裝MySQL,並在MySQL的設定檔中開啟error和慢查詢記錄檔配置。開啟後,Filebeat才可採集到對應的日誌。
安裝Filebeat,用來將MySQL中的日誌採集到Elasticsearch叢集中。需要啟用Filebeat的MySQL模組,並在設定檔中指定Kibana和Elasticsearch的訪問地址。
步驟三:使用Kibana Dashboard展示MySQL日誌
進行查詢測試,並通過Kibana Dashboard展示對應的error和慢查詢日誌。
準備工作
建立Elasticsearch執行個體。
具體操作步驟請參見建立Elasticsearch執行個體,本文以通用商業版6.7.0版本為例。
建立阿里雲ECS執行個體。
具體操作步驟請參見自訂購買執行個體,本文以CentOS作業系統為例。
步驟一:安裝並配置MySQL
串連ECS執行個體。
具體操作步驟請參見通過密碼認證登入Linux執行個體。
說明本文檔以普通使用者權限為例。
下載並安裝MySQL源。
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
安裝MySQL。
sudo yum install mysql-server
在my.cnf檔案中配置error記錄檔和慢查詢記錄檔。
說明預設情況下MySQL會禁用記錄檔配置,因此您需要手動開啟。您也可通過MySQL命令開啟臨時慢日誌。
開啟my.cnf檔案。
sudo vim /etc/my.cnf
配置記錄檔。
[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.log
參數
說明
log_queries_not_using_indexes
是否將未使用索引的查詢記錄到慢查詢日誌中。1表示記錄,0表示不記錄。
slow_query_log
是否開啟慢查詢日誌。on表示開啟,off表示關閉。
slow_query_log_file
指定慢查詢日誌的儲存路徑。
long_query_time
慢查詢閾值,單位為秒。當查詢時間超過設定的閾值時,MySQL會將日誌寫入
slow_query_log_file
指定的檔案中。重要本文為方便測試,將該參數值設定為0,實際情況中請根據業務需要合理設定該參數值。
(可選)建立記錄檔。
重要MySQL 5.6版本不會主動建立記錄檔,需要您手動建立對應檔案。
sudo mkdir /var/log/mysql sudo touch /var/log/mysql/mysqld.log sudo touch /var/log/mysql/slow-mysql-query.log
為所有使用者授予記錄檔的讀寫權限。
sudo chmod 777 /var/log/mysql/slow-mysql-query.log /var/log/mysql/mysqld.log
啟動MySQL並查看服務狀態。
sudo systemctl start mysqld sudo systemctl status mysqld
步驟二:安裝並配置Filebeat
登入目標Elasticsearch執行個體的Kibana控制台。
具體操作步驟請參見登入Kibana控制台。
在左側導覽列,單擊Logs。
單擊View setup instructions。
在Add Data to Kibana頁面,單擊MySQL logs。
在Self managed頁面,單擊RPM。
說明由於本文使用的是Linux系統,因此選擇RPM。實際情況中,請根據您的作業系統類型選擇合適的安裝方式。
按照頁面提示,在ECS中安裝Filebeat。
修改MySQL模組配置,分別指定待採集的error和slow記錄檔。
啟用MySQL模組。
sudo filebeat modules enable mysql
開啟mysql.yml檔案。
sudo vim /etc/filebeat/modules.d/mysql.yml
修改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:
參數
說明
enabled
設定為
true
。var.paths
設定為對應記錄檔的路徑。需要與MySQL設定檔中設定的路徑保持一致,詳情請參見步驟一:安裝並配置MySQL。
配置filebeat.yml檔案。
開啟filebeat.yml檔案。
sudo vim /etc/filebeat/filebeat.yml
修改Filebeat modules配置。
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
修改Kibana配置。
setup.kibana: host: "https://es-cn-0pp1jxvcl000*****.kibana.elasticsearch.aliyuncs.com:5601"
host
:Kibana的訪問地址。可在Kibana配置頁面擷取,詳情請參見查看Kibana公網地址,格式為<Kibana公網地址>:5601
。修改Elasticsearch output配置。
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>"
參數
說明
hosts
Elasticsearch的訪問地址,格式為
<執行個體的私網或公網地址>:9200
。Elasticsearch執行個體的私網或公網地址可在執行個體的基本資料頁面擷取,詳情請參見查看執行個體的基本資料。說明如果ECS和Elasticsearch執行個體在同一Virtual Private Cloud(Virtual Private Cloud)下,請使用私網地址;如果不在同一VPC下,請使用公網地址。使用公網地址需要配置公網地址訪問白名單,詳情請參見配置執行個體公網或私網訪問白名單。
username
Elasticsearch執行個體的訪問使用者名稱,預設為elastic。
password
對應使用者的密碼,一般在建立執行個體時設定。如果忘記,可重設,重設密碼的注意事項和操作步驟請參見重設執行個體訪問密碼。
執行以下命令,將Dashboard等資訊上傳到Elasticsearch和Kibana中,並啟用Filebeat服務。
sudo filebeat setup sudo service filebeat start
步驟三:使用Kibana Dashboard展示MySQL日誌
在ECS中重啟MySQL資料庫,並查詢任意資料進行測試。
重啟命令如下。
sudo systemctl restart mysqld
查看日誌內容。
本文檢測到的日誌內容如下。
登入目標Elasticsearch執行個體的Kibana控制台。
具體操作步驟請參見登入Kibana控制台。
在左側導覽列,單擊Dashboard。
在Dashboards列表中,單擊[Filebeat MySQL] Overview。
在頁面右上方選取查詢時間,查看對應時間段內的日誌。