架構圖
node
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 |
安裝 prometheusmysql
# 建立保存軟件的目錄 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 訪問
linux
prometheus.yml 文件參考:
https://prometheus.io/docs/prometheus/latest/configuration/configuration/
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#%3Crelabel_config%3E
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#%3Cfile_sd_config%3Egit
安裝 node_exporter 獲取主機信息github
# 解壓 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 &
安裝 grafanasql
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
json
配置數據源
瀏覽器
下載 grafana-dashboards-1.6.1.tar.gz,解壓,使用瀏覽器導入 dashboard, 下載地址:https://github.com/percona/grafana-dashboards/archive/v1.6.1.tar.gz
服務器
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