使用Prometheus和Grafana對MySQL服務器性能進行監控。
使用兩個exporter:
node_exporter: 服務器系統數據,指標如 CPU、內存、磁盤等。
mysqld_exporter: MySQL服務器數據收集。
監控架構圖:
- Prometheus安裝配置
安裝方式二進制安裝,詳見這裏 CentOS7部署Prometheus
版本:目前最新版本prometheus-2.18.1
修改Prometheus配置文件prometheus.yml,主要配置scrape configuration項。scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['10.20.1.63:9090'] - job_name: 'local_node' static_configs: - targets: ['10.20.1.63:9100'] labels: instance: prometheus_node - job_name: 'mysql01' static_configs: - targets: ['10.20.10.18:9104'] labels: instance: db1 - job_name: 'mysql02' static_configs: - targets: ['10.20.10.19:9104'] labels: instance: db2
- 安裝exporter
下載安裝node_exporter、mysqld_exporter。從官網下載https://prometheus.io/download/
版本分別爲node_exporter-0.18.1、mysqld_exporter-0.12.1。
1) 安裝node_exporterwget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz mkdir -p /opt/prometheus tar xzvf node_exporter-0.18.1.linux-amd64.tar.gz mv node_exporter-0.18.1.linux-amd64 /opt/prometheus/ ln -s /opt/prometheus/node_exporter-0.18.1.linux-amd64/ /opt/prometheus/node_exporter
添加系統服務啓動.
先創建prometheus用戶,用於啓動node_exporter。useradd -s /sbin/nologin -M prometheus
vim /usr/lib/systemd/system/node_exporter.service
[Unit] Description=node_exporter Documentation=https://prometheus.io/ After=network.target [Service] Type=simple User=prometheus ExecStart=/opt/prometheus/node_exporter/node_exporter Restart=on-failure [Install] WantedBy=multi-user.target
啓動node_exporter服務
systemctl status node_exporter.service
2) 安裝mysqld_exporter
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz mkdir -p /opt/prometheus mv /usr/local/mysqld_exporter-0.12.1.linux-amd64/ /opt/prometheus/ ln -s /opt/prometheus/mysqld_exporter-0.12.1.linux-amd64/ /opt/prometheus/mysqld_exporter chown -R prometheus:prometheus /opt/prometheus/
添加系統服務啓動.
先創建prometheus用戶,用於啓動mysqld_exporter。useradd -s /sbin/nologin -M prometheus
vim /usr/lib/systemd/system/mysqld_exporter.service
[Unit] Description=node_exporter Documentation=https://prometheus.io/ After=network.target [Service] Type=simple User=prometheus ExecStart=/opt/prometheus/mysqld_exporter/mysqld_exporter --config.my-cnf=/opt/prometheus/mysqld_exporter/.my.cnf Restart=on-failure [Install] WantedBy=multi-user.target
啓動參數:--config.my-cnf=".my.cnf" #指定配置文件
啓動mysqld_exporter服務systemctl status mysqld_exporter.service
mysqld_exporter需要連接到Mysql,所以需Mysql的權限,創建mysql_exporter用戶並賦予所需的權限。
mysql> GRANT REPLICATION CLIENT,PROCESS ON *.* TO 'mysql_exporter'@'localhost' identified by 'xxxxxx'; mysql> GRANT SELECT ON *.* TO 'mysql_exporter'@'localhost';
創建.my.cnf文件,並重啓mysqld_exporter服務。
vim /opt/prometheus/mysqld_exporter/.my.cnf[client] user=mysql_exporter password=xxxxxx
- Prometheus監控
回到Prometheus,Web查看Status->Targets頁面,可以看到Target的State狀態都爲UP,說明exporter都已收集到監控數據了。
Prometheus監控使用promSQL查看mysql監控信息,如連接數信息mysql_global_status_connections。
但Prometheus自帶的圖形並不夠強大,所以結合Grafana作爲Prometheus的Dashboard。 - 配置Grafana
通過grafana的默認3000端口,訪問Grafana網頁,添加數據源
這裏選擇Prometheus數據源,其中URL填寫Prometheus地址,其他項保持默認。單擊 Save & Test 添加成功後如下。
Granfana 導入Mysql 監控圖表。推薦 https://grafana.com/grafana/dashboards/7362 監控模板,導出Download JSON。
Granfana進入Create->Import導入Dashboards。
監控項非常詳細,最終呈現如下: