如果您需要查看并分析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實例在同一專有網絡VPC(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。
在頁面右上角選擇查詢時間,查看對應時間段內的日志。