Grafana+Prometheus 監控 MySQL


架構圖

環境

IP 環境 需裝軟件
192.168.0.237 mysql-5.7.20 node_exporter-0.15.2.linux-amd64.tar.gz
mysqld_exporter-0.10.0.linux-amd64.tar.gz
192.168.0.248 grafana+prometheus prometheus-2.1.0.linux-amd64.tar.gz
node_exporter-0.15.2.linux-amd64.tar.gz
grafana-4.6.3.linux-x64.tar.gz

在 192.168.0.248 上安裝 grafana prometheus

安裝 prometheus

# 創建保存軟件的目錄
mkdir /data/software/ -p

cd /data/software/

# 解壓 prometheus
tar xvf prometheus-2.1.0.linux-amd64.tar.gz -C /iba/
cd /iba/
mv prometheus-2.1.0.linux-amd64 prometheus

cd prometheus/
cp prometheus.yml /tmp/prometheus.yml.20181203

# 配置 prometheus.yml 
cat prometheus.yml 
# my global config
global:
  scrape_interval:    15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
- job_name: 'Host'  
  file_sd_configs: 
  - files:
    - host.yml
  metrics_path: /metrics   
  relabel_configs:        
  - source_labels: [__address__]
    regex: (.*)
    target_label: instance
    replacement: $1
  - source_labels: [__address__]
    regex: (.*)
    target_label: __address__
    replacement: $1:9100
    
- job_name: 'MySQL'
  file_sd_configs:
  - files:
    - mysql.yml
  metrics_path: /metrics
  relabel_configs:
  - source_labels: [__address__]
    regex: (.*)
    target_label: instance
    replacement: $1
  - source_labels: [__address__]
    regex: (.*)
    target_label: __address__
    replacement: $1:9104
    
- job_name: 'prometheus'
  static_configs:
  - targets:
    - localhost:9090

cat host.yml
- labels:
    service: test
  targets:
  - 192.168.0.248
  - 192.168.0.237

cat mysql.yml
- labels:
    service: test
  targets:
  - 192.168.0.237

# 測試 prometheus 是否可以正常啟動
/iba/prometheus/prometheus --storage.tsdb.retention=30d &

ps -ef|grep prometh
kill -9 14650

# 配置 prometheus.service 文件
vi /usr/lib/systemd/system/prometheus.service
# 內容為
[Unit]
Description=Prometheus instance
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Type=simple
Restart=on-failure
WorkingDirectory=/iba/prometheus/
RuntimeDirectory=prometheus
RuntimeDirectoryMode=0750
ExecStart=/iba/prometheus/prometheus  --storage.tsdb.retention=30d --config.file=/iba/prometheus/prometheus.yml
LimitNOFILE=10000
TimeoutStopSec=20

[Install]
WantedBy=multi-user.target

# 啟動 prometheus
systemctl start prometheus

systemctl status prometheus -l

# 開放防火牆
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept"
firewall-cmd --reload

瀏覽器輸入 http://192.168.0.248:9090 訪問

prometheus.yml 文件參考:
https://prometheus.io/docs/prometheus/latest/configuration/configuration/
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#<relabel_config>
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#<file_sd_config>

安裝 node_exporter 獲取主機信息

# 解壓 node_exporter
cd /data/software/
tar xf node_exporter-0.15.2.linux-amd64.tar.gz -C /usr/local
mv node_exporter-0.15.2.linux-amd64 node_exporter
nohup ./node_exporter &

安裝 grafana

cd /iba/software

# 解壓
tar xf grafana-4.6.3.linux-x64.tar.gz -C /iba/prometheus/
cd /iba/prometheus/
mv grafana-4.6.3 grafana
cd grafana/

# 測試
./bin/grafana-server 

# 停止
ctrl+c

cat /usr/lib/systemd/system/grafana-server.service
[Unit]
Description=Grafana instance
Documentation=http://docs.grafana.org
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Type=simple
Restart=on-failure
WorkingDirectory=/iba/prometheus/grafana
RuntimeDirectory=grafana
RuntimeDirectoryMode=0750
ExecStart=/iba/prometheus/grafana/bin/grafana-server
LimitNOFILE=10000
TimeoutStopSec=20

[Install]
WantedBy=multi-user.target

# 啟動
systemctl start grafana-server 
systemctl status grafana-server -l

訪問 http://192.168.0.248:3000,默認用戶和密碼是 admin/admin

配置數據源

下載 grafana-dashboards-1.6.1.tar.gz,解壓,使用瀏覽器導入 dashboard, 下載地址:https://github.com/percona/grafana-dashboards/archive/v1.6.1.tar.gz



在 192.168.0.237 安裝 node_exporter 和 mysqld_exporter

cd /iba/software/
tar zxf node_exporter-0.15.2.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/
mv node_exporter-0.15.2.linux-amd64 node_exporter

# 啟動
cd node_exporter/
nohup ./node_exporter &

幾分鍾后 grafana 出現了新服務器的信息

在mysql上配置監控使用的用戶

GRANT REPLICATION CLIENT, PROCESS, SELECT ON *.* TO 'mysql_monitor'@'%' IDENTIFIED BY 'mysql_monitor';
FLUSH PRIVILEGES;
cd /iba/software/
tar zxf mysqld_exporter-0.10.0.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/
mv mysqld_exporter-0.10.0.linux-amd64/ mysqld_exporter
cd mysqld_exporter/

# 在 mysql 上創建一個專門用於監控的用戶,
cat .my.cnf
[client]
user=mysql_monitor
password=mysql_monitor

# 啟動
nohup /usr/local/mysqld_exporter/mysqld_exporter  -config.my-cnf="/usr/local/mysqld_exporter/.my.cnf" &

導入 dashboard: MySQL_Overview.json


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM