1. 程式人生 > >Prometheus+Grafana監控部署實踐

Prometheus+Grafana監控部署實踐

tle tom timeout 自帶 ora mct image none rest

參考文檔:

  1. Prometheus github:https://github.com/prometheus
  2. grafana github:https://github.com/grafana/grafana
  3. Prometheus getting_started:https://prometheus.io/docs/prometheus/latest/getting_started/
  4. Prometheus node_exporter:https://github.com/prometheus/node_exporter
  5. Prometheus部署(docker,optional):https://prometheus.io/docs/prometheus/latest/installation/
  6. Prometheus配置文件詳解:https://prometheus.io/docs/prometheus/latest/configuration/configuration/
  7. grafana 部署:http://docs.grafana.org/installation/rpm/

一.環境

1. 拓撲

技術分享圖片

2. 節點

Node

OS

Hostname

IP

Remark

prometheus& grafana server

centos 7.4

prometheus

172.20.1.211

prometheus node

centos 7.4

node1

172.20.1.212

3. 版本(截止20171130)

Soft/Node

Version

Download

prometheus

2.0.0

https://github.com/prometheus/prometheus/releases/download/v2.0.0/prometheus-2.0.0.linux-amd64.tar.gz

node_exporter

v0.15.1

https://github.com/prometheus/node_exporter/releases/download/v0.15.1/node_exporter-0.15.1.linux-amd64.tar.gz

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個即可,如下:

技術分享圖片

技術分享圖片

技術分享圖片

Prometheus+Grafana監控部署實踐