1,什么是Prometheus?
Prometheus是最初在SoundCloud上構建的開源系統監(jiān)視和警報工具包,自2012年成立以來,許多公司和組織都采用了Prometheus,該項目擁有非常活躍的開發(fā)人員和用戶社區(qū)?,F在,它是一個獨立的開源項目,并且獨立與任何公司維護。為了強調這一點并闡明項目的治理結構,Prometheus在2016年加入了 Cloud Native Computing Foundation(云原生計算基金會(CNCF)),這是繼kubernetes之后的第二個托官項目。
2,Prometheus的優(yōu)勢
Prometheus 的主要優(yōu)勢有:
- 由指標名稱和鍵/值識別時間序列數據組成的多維數據模型。
- 強大的查詢語言 (PromQL)
- 不依賴分布式存儲;單個服務節(jié)點具有自治能力。
- 通過基于HTTP的拉取方式采集時間序列數據。
- 可以通過中間網關來推送時間序列數據。
- 可以通過靜態(tài)配置文件或服務發(fā)現來獲取監(jiān)控目標。
- 支持多種類型的圖標和儀表盤,比如Grafana等。
3,Prometheus的核心組件
Prometheus生態(tài)系統有多個組件組成,其中有許多組件是可選的:
- Prometheus Server:用于收集指標和存儲時間序列數據,并提供查詢接口。
- client Library:客戶端庫(例如Go,python,java等),為需要監(jiān)控的服務產生相應的/metrics(服務指標度量)并暴露給Prometheus server。
- push gateway:推送網關,主要用于臨時性的jobs。由于這類jobs存在時間較短,可能在Prometheus來pull之前就消失了,對此jobs定時將指標push到pushgateway,再由Prometheus server從pushgateway上pull。
- Exporter:用于暴露已有的第三方服務的 metrics 給Prometheus。
- alertmanager:用來處理告警,從Prometheus server端接收警告后,會進行去除重復數據,分組,并路由到對收的接收方式,發(fā)出報警。最常見的接收方式:電子郵件。
4,Prometheus的架構
Prometheus 的整體架構以及生態(tài)系統組件如下圖所示:
Prometheus server直接從監(jiān)控目標中或者間接通過推送網關來拉取監(jiān)控指標,它在本地存儲所有抓取到的樣本數據,并對此數據執(zhí)行一系列規(guī)則,以匯總和記錄現有數據的新時間序列和生成告警??梢酝ㄟ^Grafana或者其他工具來實現監(jiān)控數據的可視化。
5,Prometheus的優(yōu)缺點
Prometheus對于采集純數字值的時間序列非常在行,所以它適合以物理機為中心的監(jiān)控,也適合監(jiān)控高度動態(tài)的面向服務的架構體。在微服務領域,它的多維數據采集以及查詢非常獨到且很有競爭力。
Prometheus大的價值在于可靠性,用戶可以再任何時候看到整個被監(jiān)控系統的統計信息,即使在系統有問題的是時候。但它不能做到100%的精確,比如如果你要按請求數據計費,那么Prometheus不太適合你,因為它收集的數據可能不夠詳細完整。這種情況下你最好使用其他系統來收集和分析數據以進行計費,并使用Prometheus來監(jiān)控系統的其余部分。
部署環(huán)境:
節(jié)點名 | 主機ip | 操作系統 |
---|---|---|
master | 172.16.1.30 | Centos7 |
node01 | 172.16.1.31 | Centos7 |
node02 | 172.16.1.32 | Centos7 |
1,獲得Prometheus的git項目:
1)安裝git工具包:
[root@master ~]# yum install git -y
2)獲取Prometheus的git項目:
[root@master prometheus]# git clone https://github.com/coreos/kube-prometheus.git
#執(zhí)行git pull命令進行更新,確??寺〉奖镜氐氖亲钚碌模?[root@master kube-prometheus]# git pull
Already up-to-date.
2,導入部署Prometheus所需組件鏡像:
1)在集群中的所有node上進行上傳鏡像包(包括master)
2)分別在集群中的node上進行l(wèi)oad操作:
#注意:確定在當前路徑下執(zhí)行
[root@master images]# for i in `ls`; do docker load < $i; done
[root@node01 images]# for i in `ls`; do docker load < $i; done
[root@node02 images]# for i in `ls`; do docker load < $i; done
以上鏡像都是我通過國內阿里云鏡像站下載好的(已修改tag),我已上傳至網盤,大家可以去進行下載:鏈接:https://pan.baidu.com/s/1c8pP3vAS9qHCQqc-XaYRXQ
提取碼:8zk2
注意:
考慮到以上組件的鏡像版本在git項目上會經常的更新,所以大家就得根據最新版本去下載相對應的鏡像;yaml文件中默認是從quay.io和gcr.io進行鏡像拉?。ㄆ渌膰鴥瓤芍苯永。?,我們知道,國內訪問外網是被屏蔽的,我們無法直接將鏡像下載下來,所以可以分別通過 quay-mirror.qiniu.com 和 registry.aliyuncs.com鏡像站去拉取。
###例如:
拉取鏡像:quay.io/coreos/prometheus-operator:v0.36.0
可以改為:quay-mirror.qiniu.com/coreos/prometheus-operator:v0.36.0
拉取鏡像:gcr.io/google_containers/kube-proxy
可以改為:registry.aliyuncs.com/google_containers//kube-proxy
3,修改訪問模式為nodeport
1)修改grafana-service文件:
[root@master kube-prometheus]# cd manifests/
[root@master manifests]# vim grafana-service.yaml
2)修改Prometheus-service文件:
[root@master manifests]# vim prometheus-service.yaml
3)修改alertmanager-service文件:
4,執(zhí)行安裝操作
1)先安裝Prometheus所需要的資源(在manifests/setup目錄下的yaml文件):
[root@master manifests]# kubectl apply -f setup/
2)安裝Prometheus(在manifests/路徑下的yaml文件):
[root@master manifests]# cd ..
[root@master kube-prometheus]# kubectl apply -f manifests/
5,查看Prometheus資源(確保以下pod都達到所期望的狀態(tài)值)[root@master kube-prometheus]# kubectl get pod -n monitoring
[root@master kube-prometheus]# kubectl get svc -n monitoring
以上各組件說明:
- MerticServer: k8s集群資源使用情況的聚合器,收集數據給k8s集群內使用;如kubectl,hpa,scheduler等。
- PrometheusOperator:是一個系統監(jiān)測和警報工具箱,用來存儲監(jiān)控數據。
- NodeExPorter:用于各個node的關鍵度量指標狀態(tài)數據。
- kubeStateMetrics:收集k8s集群內資源對象數據,指定告警規(guī)則。
- Prometheus:采用pull方式收集apiserver,scheduler,control-manager,kubelet組件數據,通過http協議傳輸。
- Grafana:是可視化數據統計和監(jiān)控平臺。
6,Prometheus監(jiān)控頁面展示
1)訪問Prometheus web頁面:
訪問url:http://172.16.1.30:30200/
#部署成功后,會顯示集群節(jié)點各個組件的詳細信息,并且狀態(tài)為up。
2)訪問alertmanager web頁面:
訪問url: http://172.16.1.30:30300
3)訪問Grafana 圖形化界面:
訪問url: http://172.16.1.30:30100 , 初始用戶名和密碼都為:admin
#修改用戶名和密碼后點擊登錄:
1,為grafana添加Prometheus數據源
上圖所示,可以看到當部署完Prometheus后默認已經為我們添加了一個Prometheus數據源,大家也可以點擊右上角的"Add data source"選項自定義添加所需要的數據源。如下圖所示:
2,為grafana添加dashboard
3,監(jiān)控集群資源
如上圖所示,已為我們提供了一些內置資源監(jiān)控模板,大家可以選擇查看需要監(jiān)控的資源。下面將展示幾個重要監(jiān)控的資源對象信息:
1)查看集群資源信息:
#可以看到集群中cpu,memory,network以及磁盤IO等使用信息的展示。
2)查看各個節(jié)點資源的使用情況:
3)Pod資源查看:
#如上所示,可以看到Prometheus為我們提供的資源監(jiān)控項還是非常全面的。其他資源監(jiān)控項大家可以自行查看。
4,其他監(jiān)控模板
grafana提供自帶的監(jiān)控模板是非常豐富的,不過我們也可以進入Grafana官網下載其他監(jiān)控模板。
1)下載監(jiān)控模板,如下圖所示:
比如,我們選擇Node Exporter for Prometheus 模板:
2)在Grafana web界面上導入模板:
模板導入成功,其他類型的監(jiān)控模板大家可以自己在Grafana官網上去下載。
Alertmanager實現郵箱告警可參考博文:監(jiān)控利器-Prometheus安裝與部署+實現郵箱報警
另外有需要云服務器可以了解下創(chuàng)新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享標題:Prometheus+Grafan監(jiān)控k8s集群詳解-創(chuàng)新互聯
鏈接URL:http://www.muchs.cn/article32/cdespc.html
成都網站建設公司_創(chuàng)新互聯,為您提供網站改版、域名注冊、ChatGPT、營銷型網站建設、企業(yè)網站制作、品牌網站建設
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯