收藏|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 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 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
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 服務會每隔 15s 從 node exporter 上拉取一次數據。
查詢數據
Prometheus Server 提供了簡易的 WebUI 可以進數據查詢並展示,它默認監聽的埠為 9090。接下來我們進行一次簡單的查詢來驗證本文安裝配置的系統。
在瀏覽器中訪問 Prometheus Server 的 9090 埠:
在下拉菜單中選擇 "node_memory_Buffers",然後點擊 "Execute" 按鈕:
查詢出來的結果略微有些粗獷,連單位都沒帶。請選擇 "Graph" 標籤頁:
通過圖表查看查詢結果就好多了!
總結
Prometheus 是當下比較流行的開源監控工具,這裡只是簡單的介紹了安裝過程及一個最基本的用例。但是不難看出 Prometheus 雖然支持靈活的查詢語言,但是自身只支持簡單的展示能力。如果要友好的展示 Prometheus 的查詢結果,還需要使用更專業的展示工具 Grafana。
(轉自博客園)
· 學IT,就來中公優就業:http://www.ujiuye.com/
· 2017年【中公教育】特別推出2017年就業促進計劃,500萬就業基金助你成為IT達人
詳情請戳http://www.ujiuye.com/zt/jycj/?wt.bd=bgz
· 什麼?海量IT學習資料白給你都不要?別想了,加群搶:584539956
※想學技能卻不敢去培訓機構?別怕!政府給你保駕護航!
※給你一個2018年初20萬年薪入職的機會,就現在!
※編譯期類型檢查 in ClojureScript
TAG:IT優就業 |