Prometheus+Grafana打造Mysql監控平臺
- prometheus/node_exporter/mysqld_exporter都是由go語言編寫,需要先安裝GoLang環境
- 下載 ofollow,noindex">node_exporter (監控伺服器的CPU、記憶體、儲存使用情況)和 mysqld_exporter 放到Mysql伺服器(被監控端)
- 需要為mysqld_exporter在Mysql資料庫新建一個使用者,並賦予相應許可權
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
-
配置mysql_exporter啟動時連線mysql的使用者名稱和密碼
- 環境變數方式:
export DATA_SOURCE_NAME='user:password@(hostname:3306)/' ./mysqld_exporter <flags>
- 配置.my.cnf檔案
[client] user=exporter password=exporter 然後啟動mysqld_exporter mysqld_exporter -config.my-cnf=".my.cnf"
- 下載 Prometheus 放到監控端(或被監控端)。
- 配置檔案prometheus.yml
scrape_configs: - job_name: prometheus static_configs: - targets: ['localhost:9090'] labels: instance: prometheus - job_name: linux static_configs: # 192.168.1.7為node_exporter所在伺服器的IP;9100為node_exporter暴露的埠 - targets: ['192.168.1.7:9100'] labels: #db1為例項名,以後在Grafana獲取prometheus時,要配置prometheus所有伺服器的host為db1 instance: db1 - job_name: mysql static_configs: # 192.168.1.7為mysqld_exporter所在伺服器的IP;9100為mysqld_exporter暴露的埠 - targets: ['192.168.1.7:9104'] labels: instance: db1
3.啟動prometheus,並檢視配置的Linux和Mysql節點狀態是否為Up
4.下載 Grafana ,並按文件安裝
5.下載Percona提供的 Dashboards

datasource
如果grafana與prometheus不在一臺伺服器,需要指定prometheus的主機名(此例中應該為db1),access要選擇proxy,表示由grafana處理請求,而不是直接請求prometheus。
6.啟動Grafana,並新增Prometheus資料來源(注意必須為"Prometheus",因為Percona提供的dashboards使用的是Prometheus資料來源)
7.正常情況下可以看見Mysql和System的儀表盤,如果顯示不出來,請檢查下面幾個方面
- 檢查Grafana和grafana-dashboards版本(grafana-4.2 匹配grafana-dashboards-1.3.2,不匹配當前最新版本1.15).
- Grafana使用grafana使用者執行,所以需要檢查/etc/grafana,/var/lib/grafana,/usr/grafana目錄所有者和使用者組是否是grafana
- 對於grafana 3.X版本,還需要做如下處理,參見 grafana-dashboards
sed -i 's/expr=\(.\)\.replace(\(.\)\.expr,\(.\)\.scopedVars\(.*\)var \(.\)=\(.\)\.interval/expr=\1.replace(\2.expr,\3.scopedVars\4var \5=\1.replace(\6.interval, \3.scopedVars)/' /usr/share/grafana/public/app/plugins/datasource/prometheus/datasource.js sed -i 's/,range_input/.replace(\/"{\/g,"\\"").replace(\/}"\/g,"\\""),range_input/; s/step_input:""/step_input:this.target.step/' /usr/share/grafana/public/app/plugins/datasource/prometheus/query_ctrl.js
- grafana所有伺服器是否配置prometheus所有伺服器的IP與Host對映,如上的Prometheus的配置,host應該配置成db1
-
安裝成功結果如下圖:
mysql overview

system overview

mysql innodb metrics