通過自建Filebeat收集MySQL日志
如果您需要查看并分析MySQL的日志信息(例如慢日志、error日志等),可通過Filebeat采集MySQL日志并發(fā)送到阿里云Elasticsearch中,然后在Kibana控制臺中完成可視化查詢、分析和展示。
操作流程
創(chuàng)建阿里云Elasticsearch和ECS實例。Elasticsearch實例用來接收Filebeat采集的MySQL日志,并提供一個Kibana控制臺進行可視化查詢、分析與展示;ECS實例用來安裝MySQL和Filebeat。
安裝MySQL,并在MySQL的配置文件中開啟error和慢查詢?nèi)罩疚募渲谩i_啟后,F(xiàn)ilebeat才可采集到對應(yīng)的日志。
安裝Filebeat,用來將MySQL中的日志采集到阿里云Elasticsearch集群中。需要啟用Filebeat的MySQL模塊,并在配置文件中指定Kibana和阿里云Elasticsearch的訪問地址。
步驟三:使用Kibana Dashboard展示MySQL日志
進行查詢測試,并通過Kibana Dashboard展示對應(yīng)的error和慢查詢?nèi)罩尽?/p>
準備工作
創(chuàng)建阿里云Elasticsearch實例。
具體操作步驟請參見創(chuàng)建阿里云Elasticsearch實例,本文以通用商業(yè)版6.7.0版本為例。
創(chuàng)建阿里云ECS實例。
具體操作步驟請參見自定義購買實例,本文以CentOS操作系統(tǒng)為例。
步驟一:安裝并配置MySQL
連接ECS實例。
具體操作步驟請參見通過密碼認證登錄Linux實例。
說明本文檔以普通用戶權(quán)限為例。
下載并安裝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日志文件和慢查詢?nèi)罩疚募?/span>
說明默認情況下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
參數(shù)
說明
log_queries_not_using_indexes
是否將未使用索引的查詢記錄到慢查詢?nèi)罩局小?表示記錄,0表示不記錄。
slow_query_log
是否開啟慢查詢?nèi)罩尽n表示開啟,off表示關(guān)閉。
slow_query_log_file
指定慢查詢?nèi)罩镜拇鎯β窂健?/p>
long_query_time
慢查詢閾值,單位為秒。當(dāng)查詢時間超過設(shè)定的閾值時,MySQL會將日志寫入
slow_query_log_file
指定的文件中。重要本文為方便測試,將該參數(shù)值設(shè)置為0,實際情況中請根據(jù)業(yè)務(wù)需要合理設(shè)置該參數(shù)值。
(可選)創(chuàng)建日志文件。
重要MySQL 5.6版本不會主動創(chuàng)建日志文件,需要您手動創(chuàng)建對應(yīng)文件。
sudo mkdir /var/log/mysql sudo touch /var/log/mysql/mysqld.log sudo touch /var/log/mysql/slow-mysql-query.log
為所有用戶授予日志文件的讀寫權(quán)限。
sudo chmod 777 /var/log/mysql/slow-mysql-query.log /var/log/mysql/mysqld.log
啟動MySQL并查看服務(wù)狀態(tài)。
sudo systemctl start mysqld sudo systemctl status mysqld
步驟二:安裝并配置Filebeat
登錄目標(biāo)阿里云Elasticsearch實例的Kibana控制臺。
具體操作步驟請參見登錄Kibana控制臺。
在左側(cè)導(dǎo)航欄,單擊Logs。
單擊View setup instructions。
在Add Data to Kibana頁面,單擊MySQL logs。
在Self managed頁面,單擊RPM。
說明由于本文使用的是Linux系統(tǒng),因此選擇RPM。實際情況中,請根據(jù)您的操作系統(tǒng)類型選擇合適的安裝方式。
按照頁面提示,在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:
參數(shù)
說明
enabled
設(shè)置為
true
。var.paths
設(shè)置為對應(yīng)日志文件的路徑。需要與MySQL配置文件中設(shè)置的路徑保持一致,詳情請參見步驟一:安裝并配置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公網(wǎng)地址,格式為<Kibana公網(wǎng)地址>: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>"
參數(shù)
說明
hosts
阿里云Elasticsearch的訪問地址,格式為
<實例的私網(wǎng)或公網(wǎng)地址>:9200
。Elasticsearch實例的私網(wǎng)或公網(wǎng)地址可在實例的基本信息頁面獲取,詳情請參見查看實例的基本信息。說明如果ECS和Elasticsearch實例在同一專有網(wǎng)絡(luò)VPC(Virtual Private Cloud)下,請使用私網(wǎng)地址;如果不在同一VPC下,請使用公網(wǎng)地址。使用公網(wǎng)地址需要配置公網(wǎng)地址訪問白名單,詳情請參見配置實例公網(wǎng)或私網(wǎng)訪問白名單。
username
阿里云Elasticsearch實例的訪問用戶名,默認為elastic。
password
對應(yīng)用戶的密碼,一般在創(chuàng)建實例時設(shè)定。如果忘記,可重置,重置密碼的注意事項和操作步驟請參見重置實例訪問密碼。
執(zhí)行以下命令,將Dashboard等信息上傳到Elasticsearch和Kibana中,并啟用Filebeat服務(wù)。
sudo filebeat setup sudo service filebeat start
步驟三:使用Kibana Dashboard展示MySQL日志
在ECS中重啟MySQL數(shù)據(jù)庫,并查詢?nèi)我鈹?shù)據(jù)進行測試。
重啟命令如下。
sudo systemctl restart mysqld
查看日志內(nèi)容。
本文檢測到的日志內(nèi)容如下。
登錄目標(biāo)Elasticsearch實例的Kibana控制臺。
具體操作步驟請參見登錄Kibana控制臺。
在左側(cè)導(dǎo)航欄,單擊Dashboard。
在Dashboards列表中,單擊[Filebeat MySQL] Overview。
在頁面右上角選擇查詢時間,查看對應(yīng)時間段內(nèi)的日志。