prometheus概述
概述
什么是普羅米修斯?
Prometheus是最初在SoundCloud上構(gòu)建的開源系統(tǒng)監(jiān)視和警報工具包 提茁。自2012年成立以來淹禾,許多公司和組織都采用了Prometheus,該項目擁有非耻畋猓活躍的開發(fā)人員和用戶社區(qū)×宀恚現(xiàn)在,它是一個獨立的開源項目峭火,并且獨立于任何公司進行維護毁习。為了強調(diào)這一點并闡明該項目的治理結(jié)構(gòu),Prometheus在2016年加入了 Cloud Native Computing Foundation卖丸,這是繼Kubernetes之后的第二個托管項目纺且。
有關(guān)Prometheus的詳細說明,請參見媒體部分中的資源鏈接 稍浆。
特征
普羅米修斯的主要特點是:
- 一個多維數(shù)據(jù)模型载碌,其中包含通過度量標準名稱和鍵/值對標識的時間序列數(shù)據(jù)
- PromQL,一種靈活的查詢語言 衅枫,可利用此維度
- 不依賴分布式存儲嫁艇;單個服務(wù)器節(jié)點是自治的
- 時間序列收集通過HTTP上的拉模型進行
- 通過中間網(wǎng)關(guān)支持推送時間序列
- 通過服務(wù)發(fā)現(xiàn)或靜態(tài)配置發(fā)現(xiàn)目標
- 多種圖形和儀表板支持模式
組件
Prometheus生態(tài)系統(tǒng)由多個組件組成,其中許多是可選的:
- Prometheus主服務(wù)器弦撩,它會刮取并存儲時間序列數(shù)據(jù)
- 客戶端庫步咪,用于檢測應(yīng)用程序代碼
- 一個支持短期工作的推送網(wǎng)關(guān)
- 專用出口商,用于諸如HAProxy益楼,StatsD猾漫,Graphite等的服務(wù)。
- 一個alertmanager處理警報
- 各種支持工具
大多數(shù)Prometheus組件都是用Go編寫的感凤,因此易于構(gòu)建和部署為靜態(tài)二進制文件悯周。
建筑學
該圖說明了Prometheus的體系結(jié)構(gòu)及其某些生態(tài)系統(tǒng)組件:
Prometheus直接或通過中介推送網(wǎng)關(guān)從已檢測作業(yè)中刪除指標,以處理短暫的作業(yè)俊扭。它在本地存儲所有報廢的樣本队橙,并對這些數(shù)據(jù)運行規(guī)則,以匯總和記錄現(xiàn)有數(shù)據(jù)中的新時間序列或生成警報萨惑。Grafana或其他API使用者可以用來可視化所收集的數(shù)據(jù)捐康。
什么時候合適?
Prometheus可以很好地記錄任何純數(shù)字時間序列庸蔼。它既適用于以機器為中心的監(jiān)視解总,也適用于高度動態(tài)的面向服務(wù)的體系結(jié)構(gòu)的監(jiān)視。在微服務(wù)世界中姐仅,它對多維數(shù)據(jù)收集和查詢的支持是一種特別的優(yōu)勢花枫。
Prometheus是為可靠性而設(shè)計的刻盐,它是您在中斷期間要使用的系統(tǒng),可讓您快速診斷問題劳翰。每個Prometheus服務(wù)器都是獨立的敦锌,而不依賴于網(wǎng)絡(luò)存儲或其他遠程服務(wù)。當基礎(chǔ)結(jié)構(gòu)的其他部分損壞時佳簸,您可以依靠它乙墙,并且無需設(shè)置廣泛的基礎(chǔ)結(jié)構(gòu)即可使用它。
什么時候不適合生均?
普羅米修斯重視可靠性听想。即使在故障情況下,您始終可以查看有關(guān)系統(tǒng)的可用統(tǒng)計信息马胧。如果您需要100%的準確性(例如按請求計費)汉买,則Prometheus并不是一個不錯的選擇,因為所收集的數(shù)據(jù)可能不會足夠詳細和完整佩脊。在這種情況下蛙粘,最好使用其他系統(tǒng)來收集和分析數(shù)據(jù)以進行計費,并使用Prometheus進行其余的監(jiān)視邻吞。
prometheus下載安裝
歡迎來到普羅米修斯组题!Prometheus是一個監(jiān)視平臺葫男,它通過在這些目標上刮擦度量標準HTTP端點來從被監(jiān)視的目標收集度量標準抱冷。本指南將向您展示如何使用Prometheus安裝,配置和監(jiān)視我們的第一個資源梢褐。您將下載旺遮,安裝并運行Prometheus。您還將下載并安裝導出器盈咳,該工具可在主機和服務(wù)上顯示時間序列數(shù)據(jù)耿眉。我們的第一個導出器將是Prometheus本身,它提供有關(guān)內(nèi)存使用鱼响,垃圾回收等的各種主機級別指標鸣剪。
下載Prometheus
下載適用于您的平臺的最新版本的Prometheus,然后將其解壓縮:
tar xvfz prometheus-*.tar.gz
cd prometheus-*
Prometheus服務(wù)器是一個稱為prometheus
(或prometheus.exe
在Microsoft Windows上)的二進制文件丈积。我們可以運行二進制文件筐骇,并通過傳遞--help
標志來查看有關(guān)其選項的幫助。
./prometheus --help
usage: prometheus [<flags>]
The Prometheus monitoring server
. . .
在啟動Prometheus之前江滨,讓我們對其進行配置铛纬。
配置Prometheus
Prometheus配置為YAML。Prometheus下載在一個名為的文件中帶有一個示例配置唬滑,prometheus.yml
這是一個入門的好地方告唆。
我們刪除了示例文件中的大多數(shù)注釋棺弊,以使其更加簡潔(注釋以開頭的行#
)。
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
# - "first.rules"
# - "second.rules"
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
有示例配置文件中配置的三個模塊:global
擒悬,rule_files
模她,和scrape_configs
。
該global
塊控制Prometheus服務(wù)器的全局配置懂牧。我們有兩個選擇缝驳。第一個scrape_interval
控制,Prometheus多久刮一次目標归苍。您可以為單個目標覆蓋此目標用狱。在這種情況下,全局設(shè)置是每15秒刮一次拼弃。該evaluation_interval
選項控制Prometheus多久評估一次規(guī)則夏伊。Prometheus使用規(guī)則來創(chuàng)建新的時間序列并生成警報。
該rule_files
塊指定了我們希望Prometheus服務(wù)器加載的任何規(guī)則的位置吻氧。目前溺忧,我們還沒有任何規(guī)則。
最后一塊盯孙,scrape_configs
控制Prometheus監(jiān)視哪些資源鲁森。由于Prometheus還將有關(guān)自身的數(shù)據(jù)公開為HTTP端點,因此它可以抓取并監(jiān)視其自身的運行狀況振惰。在默認配置中歌溉,有一個名為的作業(yè),prometheus
它會刮擦Prometheus服務(wù)器公開的時間序列數(shù)據(jù)骑晶。該作業(yè)包含一個靜態(tài)配置的目標localhost
on端口9090
痛垛。Prometheus希望指標可用于路徑上的目標/metrics
。因此桶蛔,此默認作業(yè)是通過以下網(wǎng)址進行抓瘸淄贰:http:// localhost:9090 / metrics。
返回的時間序列數(shù)據(jù)將詳細說明Prometheus服務(wù)器的狀態(tài)和性能仔雷。
有關(guān)配置選項的完整說明蹂析,請參閱 配置文檔。
開始普羅米修斯
要使用我們新創(chuàng)建的配置文件啟動Prometheus碟婆,請切換到包含Prometheus二進制文件的目錄并運行:
./prometheus --config.file=prometheus.yml
普羅米修斯應(yīng)該開始电抚。您還應(yīng)該能夠在http:// localhost:9090上瀏覽到有關(guān)其自身的狀態(tài)頁。給它大約30秒鐘的時間脑融,以從其自己的HTTP指標終結(jié)點收集有關(guān)其自身的數(shù)據(jù)喻频。
您還可以通過導航到自己的指標終結(jié)點:http:// localhost:9090 / metrics來驗證Prometheus是否正在提供有關(guān)其自身的指標。
使用表達式瀏覽器
讓我們嘗試查看Prometheus收集的有關(guān)自身的一些數(shù)據(jù)肘迎。要使用Prometheus的內(nèi)置表達式瀏覽器甥温,請導航至 http:// localhost:9090 / graph锻煌,然后在“圖形”選項卡中選擇“控制臺”視圖。
正如您可以從http:// localhost:9090 / metrics收集的那樣姻蚓,稱為Prometheus導出的有關(guān)其自身的一個指標 promhttp_metric_handler_requests_total
(/metrics
Prometheus服務(wù)器已處理的請求總數(shù))宋梧。繼續(xù)并將其輸入到表達式控制臺中:
promhttp_metric_handler_requests_total
這將返回多個不同的時間序列(以及每個時間序列的最新值),所有時間序列均帶有度量名稱promhttp_metric_handler_requests_total
狰挡,但帶有不同的標簽捂龄。這些標簽指定不同的請求狀態(tài)。
如果我們只對導致HTTP代碼的請求感興趣200
加叁,則可以使用此查詢來檢索該信息:
promhttp_metric_handler_requests_total{code="200"}
要計算返回的時間序列數(shù)倦沧,您可以編寫:
count(promhttp_metric_handler_requests_total)
有關(guān)表達語言的更多信息,請參見 表達語言文檔它匕。
使用繪圖界面
要繪制表達式的圖形展融,請導航到http:// localhost:9090 / graph并使用“圖形”選項卡。
例如豫柬,輸入以下表達式以圖形化顯示在自抓取的Prometheus中發(fā)生的每秒HTTP請求速率返回狀態(tài)代碼200:
rate(promhttp_metric_handler_requests_total{code="200"}[1m])
您可以嘗試使用圖形范圍參數(shù)和其他設(shè)置告希。
安裝node_exporter
1.下載安裝包
下載地址:https://prometheus.io/download/
2.解壓安裝包
tar -zxvf node_exporter-1.1.2.linux-amd64.tar.gz
mv node_exporter-1.1.2.linux-amd64 node_exporter
3.添加到系統(tǒng)服務(wù)
- centos7以上
vi /usr/lib/systemd/system/node_exporter.service
添加以下內(nèi)容:
[Service]
ExecStart=/server/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
[Unit]
Description=node_exporter
After=network.target
systemctl daemon-reload #重加載系統(tǒng)服務(wù)
systemctl restart node_exporter.service #啟動node_exporter服務(wù)
systemctl enable node_exporter.service #加入開機自啟
systemctl status node_exporter.service#查看啟動狀態(tài)
以上代表啟動成功。
啟動成功后默認端口為9100,可以查看下烧给。
- centos7以下操作
nohup /server/node_exporter/node_exporter > /dev/null &
ps -ef | grep node
加入開機自啟:
vim /etc/rc.local
添加如下內(nèi)容
nohup /server/node_exporter/node_exporter > /dev/null &
4.開通端口
在prometheus服務(wù)器上telnet node_exporter端口,如果不通燕偶,則需要開啟端口,或者關(guān)閉防火墻(正式環(huán)境不允許)础嫡。
下面演示開啟防火墻:
systemctl status firewalld
firewall-cmd --zone=public --add-port=9100/tcp --permanent
systemctl restart firewalld.service
firewall-cmd --reload
5.添加prometheus規(guī)則
- job_name: 'k8s'
static_configs:
- targets: ['127.0.0.1:9100']
添加完成后務(wù)必重啟prometheus生效指么。
pkill -9 prometheus
nohup ./prometheus --config.file="/server/prometheus/prometheus.yml" &
安裝grafana
wget https://dl.grafana.com/oss/release/grafana-7.5.7-1.x86_64.rpm
sudo yum install grafana-7.5.7-1.x86_64.rpm
systemctl start grafana.service
網(wǎng)頁輸入ip:3000
默認賬戶密碼為admin admin,進去會提示修改密碼,修改即可驰吓。
然后點擊'+'涧尿,導入儀表。
儀表樣例官方地址:
https://grafana.com/grafana/dashboards?search=docker
輸入node搜索檬贰,點擊一個儀表樣例。
點擊copy,打開grafana界面缺亮,輸入id,加載翁涤,然后選擇數(shù)據(jù)源為prometheus,就會看到一個精細的儀表監(jiān)控了萌踱。
至此葵礼,完美實現(xiàn)prometheus+grafana+node_exporter監(jiān)控。