Centos7.X 搭建Prometheus+node_exporter+Grafana實時監控平臺
阿新 • • 發佈:2020-02-28
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埠的網址來判斷即可!