當前位置:
首頁 > 知識 > 收藏|Prometheus 入門

收藏|Prometheus 入門

收藏|Prometheus 入門

Prometheus 是一個開源的監控系統。支持靈活的查詢語言(PromQL),採用 http 協議的 pull 模式拉取數據等特點使 Prometheus 即簡單易懂又功能強大。

Prometheus 由 server, client, push gateway, exporter, alertmanager 等核心組件構成。Prometheus server 主要用於抓取和存儲數據。Client libraries 可以用來連接 server 並進行查詢等操作。Push gateway 用於批量,短期的監控數據的匯總節點,主要用於業務數據彙報等。不同的 exporter 用於不同場景下的數據收集,如收集主機信息的 node_exporter,收集 MongoDB 信息的 MongoDB exporter 等等。下圖是 Prometheus 官方提供的架構圖:

收藏|Prometheus 入門

從這個架構圖,我們可以看出它的運行邏輯大概是這樣的:

Prometheus server 定期從數據源拉取數據,然後將數據持久化到磁碟。Prometheus 可以配置 rules,然後定時查詢數據,當條件觸發的時候,會將 alert 推送到配置的 Alertmanager。Alertmanager 收到警告的時候,可以根據配置,聚合,去重,降噪,最後發送警告。同時還可以使用 API, Prometheus Console 或者 Grafana 查詢和聚合數據。

本文將介紹在 ubuntu 16.04 系統中安裝 Prometheus Server,並配置它從一台主機上拉取監控信息,然後通過 Prometheus Server 提供的簡易 UI 查詢數據。


在 Ubuntu 16.04 中安裝 Prometheus Server

請從 Prometheus 官方下載 linux 版的二進位壓縮包。注意在下載前要選擇操作系統為 linux。

執行下面的命令把 prometheus server 安裝到 /usr/local/share/prometheus 目錄:

$ tar -xf prometheus-1.7.2.linux-amd64.tar.gz
$ sudo mv prometheus-1.7.2.linux-amd64 /usr/local/share/prometheus

理論上來說這樣就算是安裝完成了,但是無論如何這都太簡陋了。因為每次啟動 Prometheus server 都需要手動執行命令:

$ /usr/local/share/prometheus/prometheus -config.file=/usr/local/share/prometheus/prometheus.yml

這實在是太不方便了!應該把它配置成服務,用 systemd 來管理。

先創建一個名為 prometheus 的用戶:

$ sudo adduser prometheus

把目錄 /usr/local/share/prometheus/ 的所有者設置為 prometheus 用戶:

$ sudo chown -R prometheus:prometheus /usr/local/share/prometheus/

然後創建文件 /etc/systemd/system/prometheus.service,內容如下:

[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/After=network.target
[Service]
User=prometheus
Restart=on-failure
WorkingDirectory=/usr/local/share/prometheus/ExecStart=/usr/local/share/prometheus/prometheus -config.file=/usr/local/share/prometheus/prometheus.yml
[Install]
WantedBy=multi-user.target

好了,現在可以通過 systemd 來控制 Prometheus 服務了,先啟動服務:

$ sudo systemctl daemon-reload
$ sudo systemctl start prometheus

再把服務配置為開機時啟動:

$ sudo systemctl enable prometheus

檢查一下服務的狀態:

$ sudo systemctl status prometheus

收藏|Prometheus 入門

到此為止 Prometheus Server 已經開始運行了。接下來我們就可以收集數據了。


使用 Node Exporter 收集主機信息

數據收集的任務由不同的 exporter 來完成,如果要收集 linux 主機的信息,可以使用 node exporter。然後由 Prometheus Server 從 node exporter 上拉取信息。接下來我們介紹如何安裝並配置 node exporter。

請從 Prometheus 官方下載 node exporter 的二進位壓縮包。執行下面的命令把 node exporter 安裝到 /usr/local/share/ 目錄:

$ tar -xf node_exporter-0.14.0.linux-amd64.tar.gz
$ sudo cp node_exporter-0.14.0.linux-amd64/node_exporter /usr/local/sbin/

同樣的我們把 node exporter 也配置成通過 systemd 管理。創建文件 /etc/systemd/system/node-exporter.service,內容如下:

[Unit]
Description=Prometheus Node Exporter
After=network.target
[Service]
ExecStart=/usr/local/sbin/node_exporter
User=nobody
[Install]
WantedBy=multi-user.target

執行下面的命令設置為開機啟動並啟動服務:

$ sudo systemctl daemon-reload
$ sudo systemctl enable node-exporter
$ sudo systemctl start node-exporter

node exporter 默認監聽 9100 埠,讓我們檢查一下埠的監聽情況:

$ ss -tunl

收藏|Prometheus 入門

Node exporter 已經可以收集主機上的信息了,接下來我們還需要配置 Prometheus Server 從 node exporter 那裡拉取數據。


配置 Prometheus 從 Node Exproter 拉取數據

Prometheus Server 可以從不同的 exporter 上拉取數據,對於上面的 node exporter 我們可以利用 Prometheus 的 static_configs 來拉取 node exporter 的數據。編輯 Prometheus server 的配置文件:

$ sudo vim /usr/local/share/prometheus/prometheus.yml

在 scrape_configs 中添加一個 名稱為 node 的 static_configs:

- job_name: "node"
static_configs: - targets: ["127.0.0.1:9100"]

注意,要把上面的 IP 地址替換為運行 node exporter 的主機的 IP。

收藏|Prometheus 入門

保存文件然後重啟 prometheus 服務!重啟後 prometheus 服務會每隔 15s 從 node exporter 上拉取一次數據。


查詢數據

Prometheus Server 提供了簡易的 WebUI 可以進數據查詢並展示,它默認監聽的埠為 9090。接下來我們進行一次簡單的查詢來驗證本文安裝配置的系統。

在瀏覽器中訪問 Prometheus Server 的 9090 埠:

收藏|Prometheus 入門

在下拉菜單中選擇 "node_memory_Buffers",然後點擊 "Execute" 按鈕:

收藏|Prometheus 入門

查詢出來的結果略微有些粗獷,連單位都沒帶。請選擇 "Graph" 標籤頁:

收藏|Prometheus 入門

通過圖表查看查詢結果就好多了!


總結

Prometheus 是當下比較流行的開源監控工具,這裡只是簡單的介紹了安裝過程及一個最基本的用例。但是不難看出 Prometheus 雖然支持靈活的查詢語言,但是自身只支持簡單的展示能力。如果要友好的展示 Prometheus 的查詢結果,還需要使用更專業的展示工具 Grafana。

(轉自博客園)



· 學IT,就來中公優就業:http://www.ujiuye.com/

· 2017年【中公教育】特別推出2017年就業促進計劃,500萬就業基金助你成為IT達人

詳情請戳http://www.ujiuye.com/zt/jycj/?wt.bd=bgz

· 什麼?海量IT學習資料白給你都不要?別想了,加群搶:584539956

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT優就業 的精彩文章:

想學技能卻不敢去培訓機構?別怕!政府給你保駕護航!
給你一個2018年初20萬年薪入職的機會,就現在!
編譯期類型檢查 in ClojureScript

TAG:IT優就業 |