Prometheus+Grafana打造Mysql監控平台
- prometheus/node_exporter/mysqld_exporter都是由go語言編寫,需要先安裝GoLang環境
- 下載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
- 啟動prometheus,並查看配置的Linux和Mysql節點狀態是否為Up
- 下載Grafana,並按文檔安裝
- 下載Percona提供的Dashboards
- 如果grafana與prometheus不在一台伺服器,需要指定prometheus的主機名(此例中應該為db1),access要選擇proxy,表示由grafana處理請求,而不是直接請求prometheus。
- 啟動Grafana,並添加Prometheus數據源(注意必須為"Prometheus",因為Percona提供的dashboards使用的是Prometheus數據源)
- 正常情況下可以看見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](https://github.com/percona/grafana-dashboards)
> sed -i "s/expr=(.).replace((.).expr,(.).scopedVars(.*)var (.)=(.).interval/expr=1.replace(2.expr,3.scopedVars4var 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
9.安裝成功結果如下圖:


※線程中斷以及線程中斷引發的那些問題
※Promise實現原理
TAG:程序員小新人學習 |