Prometheus 是一個(gè)開(kāi)源的監(jiān)控系統(tǒng)。支持靈活的查詢(xún)語(yǔ)言(PromQL),采用 http 協(xié)議的 pull 模式拉取數(shù)據(jù)等特點(diǎn)使 Prometheus
即簡(jiǎn)單易懂又功能強(qiáng)大。
Prometheus 的主要特點(diǎn)
*
多維度數(shù)據(jù)模型
*
靈活的查詢(xún)語(yǔ)言
*
不依賴(lài)分布式存儲(chǔ),單個(gè)服務(wù)器節(jié)點(diǎn)是自主的
*
通過(guò) pull 方式采集時(shí)序數(shù)據(jù)
*
可以通過(guò)中間網(wǎng)關(guān)進(jìn)行時(shí)序列數(shù)據(jù)推送
*
通過(guò)服務(wù)發(fā)現(xiàn)或者靜態(tài)配置來(lái)發(fā)現(xiàn)目標(biāo)服務(wù)對(duì)象
*
支持多種界面展示方案,比如 grafana 等
Prometheus 由 server, client, push gateway, exporter, alertmanager
等核心組件構(gòu)成。Prometheus server 主要用于抓取和存儲(chǔ)數(shù)據(jù)。Client libraries 可以用來(lái)連接 server
并進(jìn)行查詢(xún)等操作。Push gateway? 用于批量,短期的監(jiān)控?cái)?shù)據(jù)的匯總節(jié)點(diǎn),主要用于業(yè)務(wù)數(shù)據(jù)匯報(bào)等。不同的 exporter
用于不同場(chǎng)景下的數(shù)據(jù)收集,如收集主機(jī)信息的 node_exporter,收集 MongoDB 信息的 MongoDB exporter 等等。下圖是
Prometheus 官方提供的架構(gòu)圖:
從這個(gè)架構(gòu)圖,我們可以看出它的運(yùn)行邏輯大概是這樣的:
Prometheus server 定期從數(shù)據(jù)源拉取數(shù)據(jù),然后將數(shù)據(jù)持久化到磁盤(pán)。Prometheus 可以配置
rules,然后定時(shí)查詢(xún)數(shù)據(jù),當(dāng)條件觸發(fā)的時(shí)候,會(huì)將 alert 推送到配置的 Alertmanager。Alertmanager
收到警告的時(shí)候,可以根據(jù)配置,聚合,去重,降噪,最后發(fā)送警告。同時(shí)還可以使用 API, Prometheus Console 或者 Grafana
查詢(xún)和聚合數(shù)據(jù)。
本文將介紹在 ubuntu 16.04 系統(tǒng)中安裝 Prometheus Server,并配置它從一臺(tái)主機(jī)上拉取監(jiān)控信息,然后通過(guò) Prometheus
Server 提供的簡(jiǎn)易 UI 查詢(xún)數(shù)據(jù)。
在 Ubuntu 16.04 中安裝 Prometheus Server
請(qǐng)從 Prometheus 官方下載 <https://prometheus.io/download/> linux
版的二進(jìn)制壓縮包。注意在下載前要選擇操作系統(tǒng)為 linux。
執(zhí)行下面的命令把 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
理論上來(lái)說(shuō)這樣就算是安裝完成了,但是無(wú)論如何這都太簡(jiǎn)陋了。因?yàn)槊看螁?dòng) Prometheus server 都需要手動(dòng)執(zhí)行命令:
$ /usr/local/share/prometheus/prometheus -config.file
=/usr/local/share/prometheus/prometheus.yml
這實(shí)在是太不方便了!應(yīng)該把它配置成服務(wù),用 systemd 來(lái)管理。
先創(chuàng)建一個(gè)名為 prometheus 的用戶(hù):
$ sudo adduser prometheus
把目錄 /usr/local/share/prometheus/ 的所有者設(shè)置為 prometheus 用戶(hù):
$ sudo chown -R prometheus:prometheus /usr/local/share/prometheus/
然后創(chuàng)建文件 /etc/systemd/system/prometheus.service,內(nèi)容如下:
[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
好了,現(xiàn)在可以通過(guò) systemd 來(lái)控制 Prometheus 服務(wù)了,先啟動(dòng)服務(wù):
$ sudo systemctl daemon-reload $ sudo systemctl start prometheus
再把服務(wù)配置為開(kāi)機(jī)時(shí)啟動(dòng):
$ sudo systemctl enable prometheus
檢查一下服務(wù)的狀態(tài):
$ sudo systemctl status prometheus
到此為止 Prometheus Server 已經(jīng)開(kāi)始運(yùn)行了。接下來(lái)我們就可以收集數(shù)據(jù)了。
使用 Node Exporter 收集主機(jī)信息
數(shù)據(jù)收集的任務(wù)由不同的 exporter 來(lái)完成,如果要收集 linux 主機(jī)的信息,可以使用 node exporter。然后由 Prometheus
Server 從 node exporter 上拉取信息。接下來(lái)我們介紹如何安裝并配置 node exporter。
請(qǐng)從 Prometheus 官方下載 <https://prometheus.io/download/> node exporter
的二進(jìn)制壓縮包。執(zhí)行下面的命令把 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 也配置成通過(guò) systemd 管理。創(chuàng)建文件
/etc/systemd/system/node-exporter.service,內(nèi)容如下:
[Unit] Description=Prometheus Node Exporter After=network.target [Service]
ExecStart=/usr/local/sbin/node_exporter User=nobody [Install] WantedBy
=multi-user.target
執(zhí)行下面的命令設(shè)置為開(kāi)機(jī)啟動(dòng)并啟動(dòng)服務(wù):
$ sudo systemctl daemon-reload $ sudo systemctl enable node-exporter $ sudo
systemctl start node-exporter
node exporter 默認(rèn)監(jiān)聽(tīng) 9100 端口,讓我們檢查一下端口的監(jiān)聽(tīng)情況:
$ ss -tunl
Node exporter 已經(jīng)可以收集主機(jī)上的信息了,接下來(lái)我們還需要配置 Prometheus Server 從 node exporter
那里拉取數(shù)據(jù)。
配置 Prometheus 從 Node Exproter 拉取數(shù)據(jù)
Prometheus Server 可以從不同的 exporter 上拉取數(shù)據(jù),對(duì)于上面的 node exporter 我們可以利用 Prometheus
的 static_configs 來(lái)拉取 node exporter 的數(shù)據(jù)。編輯 Prometheus server 的配置文件:
$ sudo vim /usr/local/share/prometheus/prometheus.yml
在 scrape_configs 中添加一個(gè) 名稱(chēng)為 node 的 static_configs:
- job_name: "node" static_configs: - targets: ["127.0.0.1:9100"]
注意,要把上面的 IP 地址替換為運(yùn)行 node exporter 的主機(jī)的 IP。
保存文件然后重啟 prometheus 服務(wù)!重啟后 prometheus 服務(wù)會(huì)每隔 15s 從 node exporter 上拉取一次數(shù)據(jù)。
查詢(xún)數(shù)據(jù)
Prometheus Server 提供了簡(jiǎn)易的 WebUI 可以進(jìn)數(shù)據(jù)查詢(xún)并展示,它默認(rèn)監(jiān)聽(tīng)的端口為
9090。接下來(lái)我們進(jìn)行一次簡(jiǎn)單的查詢(xún)來(lái)驗(yàn)證本文安裝配置的系統(tǒng)。
在瀏覽器中訪(fǎng)問(wèn) Prometheus Server 的 9090 端口:
在下拉菜單中選擇 "node_memory_Buffers",然后點(diǎn)擊 "Execute" 按鈕:
查詢(xún)出來(lái)的結(jié)果略微有些粗獷,連單位都沒(méi)帶。請(qǐng)選擇 "Graph" 標(biāo)簽頁(yè):
通過(guò)圖表查看查詢(xún)結(jié)果就好多了!
總結(jié)
Prometheus 是當(dāng)下比較流行的開(kāi)源監(jiān)控工具,這里只是簡(jiǎn)單的介紹了安裝過(guò)程及一個(gè)最基本的用例。但是不難看出 Prometheus
雖然支持靈活的查詢(xún)語(yǔ)言,但是自身只支持簡(jiǎn)單的展示能力。如果要友好的展示 Prometheus 的查詢(xún)結(jié)果,還需要使用更專(zhuān)業(yè)的展示工具 Grafana。
熱門(mén)工具 換一換

感谢您访问我们的网站,您可能还对以下资源感兴趣:
调教肉文小说-国产成本人片免费av-空姐av种子无码-在线观看免费午夜视频-综合久久精品激情-国产成人丝袜视频在线观看软件-大芭区三区四区无码-啊啊好爽啊啊插啊用力啊啊-wanch视频网-国产精品成人a免费观看