Centos7.X 搭建Prometheus+node_exporter+Grafana實時監控平台


Prometheus簡介

什么是 Prometheus

Prometheus是一個開源監控報警系統和時序列數據庫

 

主要功能

  • 多維數據模型(時序由 metric 名字和 k/v 的 labels 構成)
  • 靈活的查詢語句(PromQL)
  • 無依賴存儲,支持 local 和 remote 不同模型
  • 采用 http 協議,使用 pull 模式,拉取數據,簡單易懂
  • 監控目標,可以采用服務發現或靜態配置的方式
  • 支持多種DashBoard,圖形化友好

 

核心組件

  • Prometheus Server, 主要用於抓取數據和存儲時序數據,另外還提供查詢和 Alert Rule 配置管理。
  • client libraries,用於對接 Prometheus Server, 可以查詢和上報數據。
  • push gateway ,用於批量,短期的監控數據的匯總節點,主要用於業務數據匯報等。
  • 各種匯報數據的 exporters ,例如匯報機器數據的 node_exporter, 匯報 MongoDB 信息的 MongoDB exporter 等等。
  • 用於告警通知管理的 alertmanager 。

 

基礎架構

主要模塊包含: Server, Exporters, Pushgateway, PromQL, Alertmanager, WebUI 等。

  • Prometheus Server:主要是負責存儲、抓取、聚合、查詢方面
  • Alertmanager:主要是負責實現報警功能
  • Pushgateway :主要是實現接收由Client push過來的指標數據,在指定的時間間隔,由主程序來抓取
  • exporter:數據采樣器

 

學習參考網站(此章博客有參考以下網站~用作學習)

技術大牛博客: https://www.k8stech.net/

中文技術文檔:https://www.prometheus.wang/visualiztion/grafana.html

 

Prometheus+node_exporter+Grafana資源監控架構圖

 

Centos7.x安裝Prometheus

下載安裝Prometheus

PROM_PATH='/data/prometheus'
mkdir -p ${PROM_PATH}
mkdir -p ${PROM_PATH}/{data,conf,logs,bin}
useradd prometheus
cd /usr/local/src
wget https://github.com/prometheus/prometheus/releases/download/v2.13.0/prometheus-2.13.0.linux-amd64.tar.gz
tar -xvf prometheus-2.13.0.linux-amd64.tar.gz
cd prometheus-2.13.0.linux-amd64/
cp prometheus promtool ${PROM_PATH}/bin/
cp prometheus.yml ${PROM_PATH}/conf/
chown -R prometheus.prometheus /data/prometheus
# Setting Variables
cat >> /etc/profile <<EOF
PATH=/data/prometheus/bin:$PATH:$HOME/bin
EOF

 

將Prometheus配置系統服務

cat >>/etc/systemd/system/prometheus.service <<EOF
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/data/prometheus/bin/prometheus --config.file=/data/prometheus/conf/prometheus.yml --storage.tsdb.path=/data/prometheus/data --storage.tsdb.retention=90d
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

 

現在使用下面的systemctl命令重新加載systemd系統,並查看服務是否啟動

systemctl daemon-reload
systemctl enable prometheus.service
systemctl start prometheus.service
systemctl status prometheus.servic

 

查看端口是否正常

netstat -plntu |grep 9090 

 

這里需要放行9090端口,也可以直接關閉防火牆

systemctl stop firewalld
systemctl status firewall

 

訪問http://IP:9090

出現上圖就是成功了!!

 

Centos7.x安裝Node_exporter

下載安裝Node_exporter

NODE_PATH='/data/prometheus/node_exporter/'
cd /usr/local/src/
mkdir -p ${NODE_PATH}
wget https://github.com/prometheus/node_exporter/releases/download/v0.18.0/node_exporter-0.18.0.linux-amd64.tar.gz 
tar -xvf node_exporter-0.18.0.linux-amd64.tar.gz
cp node_exporter-0.18.0.linux-amd64/node_exporter ${NODE_PATH}
chown -R prometheus.prometheus ${NODE_PATH}

 

配置Node_exporter系統服務

cat > /lib/systemd/system/node_exporter.service <<EOF
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
 
[Service]
Type=simple
User=prometheus
ExecStart=/data/prometheus/node_exporter/node_exporter
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF

 

現在使用下面的systemctl命令重新加載systemd系統,並查看服務是否啟動

systemctl daemon-reload
systemctl enable node_exporter.service
systemctl start node_exporter.service
systemctl status node_exporter.service

 

查看端口是否正常

netstat -plntu |grep 9100 

這里需要放行9100端口

 

訪問http://IP:9100/metrics

如果出現上圖,就成功啦!!!

 

最后一步,配置prometheus.yml

如果是跟着我的安裝步驟走的話,它的路徑是 /data/prometheus/conf 

# 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).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
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: ['localhost:9090']

   # 主要是新增了node_exporter的job,如果有多個node_exporter,在targets數組后面加即可

  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']

 

配置Grafana

這里就不展開如何安裝Grafana了哈,不懂的可以查看這篇博客:https://www.cnblogs.com/poloyy/p/12219145.html 

 

配置完之后,就能自動讀取prometheus存儲的數據,然后就dengdengdengdeng!!厲酷炫吧!!

 

 

如果你讀取失敗,請務必檢查自己的prometheus和Node_exporter是否有安裝成功,通過訪問9090和9100端口的網址來判斷即可!

 


免責聲明!

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



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