參考文檔:node
- Prometheus github:https://github.com/prometheus
- grafana github:https://github.com/grafana/grafana
- Prometheus getting_started:https://prometheus.io/docs/prometheus/latest/getting_started/
- Prometheus node_exporter:https://github.com/prometheus/node_exporter
- Prometheus部署(docker,optional):https://prometheus.io/docs/prometheus/latest/installation/
- Prometheus配置文件詳解:https://prometheus.io/docs/prometheus/latest/configuration/configuration/
-
grafana 部署:http://docs.grafana.org/installation/rpm/
一.環境
1. 拓撲
2. 節點
Nodemysql |
OSlinux |
Hostnamegit |
IPgithub |
Remarkweb |
prometheus& grafana serversql |
centos 7.4docker |
prometheusjson |
172.20.1.211vim |
|
prometheus node |
centos 7.4 |
node1 |
172.20.1.212 |
3. 版本(截止20171130)
Soft/Node |
Version |
Download |
prometheus |
2.0.0 |
|
node_exporter |
v0.15.1 |
|
grafana |
4.6.2-1 |
https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.2-1.x86_64.rpm |
二.部署prometheus
在prometheus& grafana server節點部署prometheus服務。
1. 下載&部署
# 下載 [root@prometheus src]# cd /usr/local/src/ [root@prometheus src]# wget https://github.com/prometheus/prometheus/releases/download/v2.0.0/prometheus-2.0.0.linux-amd64.tar.gz # 部署到/usr/local/目錄 # promethus不用編譯安裝,解壓目錄中有配置文件與啓動文件 [root@prometheus src]# tar -zxvf prometheus-2.0.0.linux-amd64.tar.gz -C /usr/local/ [root@prometheus src]# cd /usr/local/ [root@prometheus local]# mv prometheus-2.0.0.linux-amd64/ prometheus/ # 驗證 [root@prometheus local]# cd prometheus/ [root@prometheus prometheus]# ./prometheus --version
2. 配置文件
# 解壓目錄中的prometheus.yml # 簡單驗證,主要配置採用默認文件配置,有修改/新增處用紅色標示 [root@prometheus prometheus]# vim prometheus.yml # 全局配置 global: scrape_interval: 15s # 設置抓取(pull)時間間隔,默認是1m evaluation_interval: 15s # 設置rules評估時間間隔,默認是1m # scrape_timeout is set to the global default (10s). # 告警管理配置,暫未使用,默認配置 alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # 加載rules,並根據設置的時間間隔按期評估,暫未使用,默認配置 rule_files: # - "first_rules.yml" # - "second_rules.yml" # 抓取(pull),即監控目標配置 # 默認只有主機自己的監控配置 scrape_configs: # 監控目標的label(這裏的監控目標只是一個metric,而不是指某特定主機,能夠在特定主機取多個監控目標),在抓取的每條時間序列表中都會添加此label - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. # 可覆蓋全局配置設置的抓取間隔,由15秒重寫成5秒。 scrape_interval: 5s # 靜態指定監控目標,暫不涉及使用一些服務發現機制發現目標 static_configs: - targets: ['localhost:9090'] # (opentional)再添加一個label,標識了監控目標的主機 labels: instance: prometheus - job_name: 'linux' scrape_interval: 10s static_configs: # 採用node_exporter默認開放的端口 - targets: ['172.20.1.212:9100'] labels: instance: node1
3. 設置用戶
# 添加用戶,後期用此帳號啓動服務 [root@prometheus prom etheus]# groupadd prometheus [root@prometheus prometheus]# useradd -g prometheus -s /sbin/nologin prometheus # 賦權 [root@prometheus prometheus]# cd ~ [root@prometheus ~]# chown -R prometheus:prometheus /usr/local/prometheus/ # 建立prometheus運行數據目錄 [root@prometheus ~]# mkdir -p /var/lib/prometheus [root@prometheus ~]# chown -R prometheus:prometheus /var/lib/prometheus/
4. 設置開機啓動
[root@prometheus ~]# touch /usr/lib/systemd/system/prometheus.service [root@prometheus ~]# chown prometheus:prometheus /usr/lib/systemd/system/prometheus.service [root@prometheus ~]# vim /usr/lib/systemd/system/prometheus.service [Unit] Description=Prometheus Documentation=https://prometheus.io/ After=network.target [Service] # Type設置爲notify時,服務會不斷重啓 Type=simple User=prometheus # --storage.tsdb.path是可選項,默認數據目錄在運行目錄的./dada目錄中 ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus Restart=on-failure [Install] WantedBy=multi-user.target # 設置開機啓動 [root@prometheus ~]# systemctl enable Prometheus [root@prometheus ~]# systemctl start prometheus
5. 設置iptables
[root@prometheus ~]# vim /etc/sysconfig/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 9090 -j ACCEPT [root@prometheus ~]# service iptables restart
6. 啓動並驗證
1)查看服務狀態
[root@prometheus ~]# systemctl status prometheus
[root@prometheus ~]# netstat -tunlp | grep 9090
2)web ui
Prometheus自帶有簡單的UI,http://172.20.1.211:9090
在Status菜單下,Configuration,Rule,Targets等,
Statu-->Configuration展現prometheus.yml的配置,以下:
Statu-->Targets展現監控具體的監控目標,這裏監控目標"linux"暫未設置node_exporter,未scrape數據,以下:
7. 繪圖
訪問:http://172.20.1.211:9090/metrics,查看從exporter具體能抓到的數據,以下:
訪問:http://172.20.1.211:9090,在輸入框中任意輸入1個exporter能抓取得值,點擊"Execute"與"Execute"按鈕,便可見相應抓取數據的圖形,同時可對時間與unit作調整,以下:
三.部署node_exporter
Node_exporter收集機器的系統數據,這裏採用prometheus官方提供的exporter,除node_exporter外,官方還提供consul,memcached,haproxy,mysqld等exporter,具體可查看官網。
這裏在prometheus node節點部署相關服務。
1. 下載&部署
# 下載 [root@node1 ~]# cd /usr/local/src/ [root@node1 src]# wget https://github.com/prometheus/node_exporter/releases/download/v0.15.1/node_exporter-0.15.1.linux-amd64.tar.gz # 部署 [root@node1 src]# tar -zxvf node_exporter-0.15.1.linux-amd64.tar.gz -C /usr/local/ [root@node1 src]# cd /usr/local/ [root@node1 local]# mv node_exporter-0.15.1.linux-amd64/ node_exporter/
2. 設置用戶
[root@node1 ~]# groupadd prometheus [root@node1 ~]# useradd -g prometheus -s /sbin/nologin prometheus [root@node1 ~]# chown -R prometheus:prometheus /usr/local/node_exporter/
3. 設置開機啓動
[root@node1 ~]# 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=/usr/local/node_exporter/node_exporter Restart=on-failure [Install] WantedBy=multi-user.target [root@node1 ~]# systemctl enable node_exporter [root@node1 ~]# systemctl start node_exporter
4. 設置iptables
# 官方node_exporter默認使用9100端口 [root@node1 ~]# vim /etc/sysconfig/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 9100 -j ACCEPT [root@node1 ~]# service iptables restart
5. 驗證
訪問:http://172.20.1.211:9090,可見node1主機已經可被監控,以下:
四.部署grafana
在prometheus& grafana server節點部署grafana服務。
1. 下載&安裝
# 下載 [root@prometheus ~]# cd /usr/local/src/ [root@prometheus src]# wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.2-1.x86_64.rpm # 安裝 [root@prometheus src]# yum localinstall grafana-4.6.2-1.x86_64.rpm
2. 配置文件
配置文件位於/etc/grafana/grafana.ini,這裏暫時保持默認配置便可。
3. 設置開機啓動
[root@prometheus src]# systemctl enable grafana-server [root@prometheus src]# systemctl start grafana-server
4. 設置iptables
# grafana-server默認使用3000端口 [root@prometheus src]# vim /etc/sysconfig/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 3000 -j ACCEPT [root@prometheus src]# service iptables restart
5. 添加數據源
1)登錄
訪問:http://172.20.1.211:3000,默認帳號/密碼:admin/admin
2)添加數據源
在登錄首頁,點擊"Add data source"按鈕,跳轉到添加數據源頁面,配置以下:
Name: prometheus
Type: prometheus
URL: http://localhost:9090/
Access: proxy
取消Default的勾選,其他默認,點擊"Add",以下:
在"Dashboards"頁簽下"import"自帶的模版,以下:
6. 導入dashboard
從grafana官網下載相關dashboaed到本地,如:https://grafana.com/dashboards/405
Grafana首頁-->左上角圖標-->Dashboard-->import
Upload已下載至本地的json文件(或者使用dashboard id,如這裏的405),以下:
數據源選擇"prometheus",即添加的數據源name,點擊"Import"按鈕,以下:
7. 查看dashboard
Grafana首頁-->左上角圖標-->Dashboard-->Home,Home下拉列表中可見有已添加的兩個dashboard,"Prometheus Stats"與"Node Exporter Server Metrics",選擇1個便可,以下: