全面介紹Prometheus的官方導(dǎo)出器Blackbox
譯文【51CTO.com快譯】眾所周知,Prometheus是一個(gè)開源的、基于指標(biāo)的監(jiān)控系統(tǒng)。它能夠通過強(qiáng)大的數(shù)據(jù)模型和查詢語言,來分析應(yīng)用程序和基礎(chǔ)架構(gòu)的執(zhí)行方式與狀態(tài)。目前,Prometheus棧是由多個(gè)部分組成,其中包括:負(fù)責(zé)存儲和提供數(shù)據(jù)的Prometheus服務(wù)器、負(fù)責(zé)管理警告的警報(bào)管理器、以及具體執(zhí)行指標(biāo)收集任務(wù)的大量Prometheus導(dǎo)出器。導(dǎo)出器通過從一個(gè)應(yīng)用程序處獲取統(tǒng)計(jì)信息,并將它們公布給特定的端點(diǎn)(通常是某個(gè)端口和路徑),以允許遠(yuǎn)程Prometheus服務(wù)器收集到此類指標(biāo)。
在應(yīng)用社區(qū)中,我們可以輕松地獲取各種導(dǎo)出器。它們有的是作為官方的Prometheus GitHub組織的一部分被維護(hù),其他則是由外部貢獻(xiàn)者進(jìn)行維護(hù)的。我們即將介紹到的Blackbox,便是一種由Prometheus組織維護(hù)的官方導(dǎo)出器。
作為一種導(dǎo)出工具,Blackbox能夠協(xié)助系統(tǒng)管理員執(zhí)行HTTP/S、DNS、TCP和ICMP端點(diǎn)的可用性檢查等日常任務(wù)。簡單而言,我們可以將Prometheus Blackbox導(dǎo)出器視為PingDOM、Freshping或Uptime.com等工具的免費(fèi)、簡單替代品,可以被用于監(jiān)控那些未在互聯(lián)網(wǎng)上公布的內(nèi)部端點(diǎn)。
為什么需要Prometheus Blackbox?
Prometheus Blackbox導(dǎo)出器的主要功能是檢測遠(yuǎn)程的內(nèi)、外部端點(diǎn),在HTTP/S、DNS、TCP和ICMP等方面的響應(yīng)時(shí)間。其具體捕獲的指標(biāo)包括:
- HTTP延遲 - 訪問遠(yuǎn)程端點(diǎn)需要多長時(shí)間?
- DNS查找延遲 - 解析DNS記錄需要多長時(shí)間?
- SSL證書信息 - 遠(yuǎn)程端點(diǎn)是否安全?是否持有有效的證書?證書的有效期到何時(shí)?
- TLS版本 - 遠(yuǎn)程端點(diǎn)使用什么版本的TLS?
- 基本身份驗(yàn)證 – 是否可以在遠(yuǎn)程端點(diǎn)上運(yùn)行一個(gè)簡單的網(wǎng)絡(luò)場景,比如身份驗(yàn)證?
- 標(biāo)頭(Header)驗(yàn)證 – 是否可以在HTTP標(biāo)頭中找到必需的參數(shù)?其標(biāo)頭是否符合安全合規(guī)性?
這些指標(biāo)對于應(yīng)用基礎(chǔ)架構(gòu)來說,都是重要的組成部分。我們需要通過針對各個(gè)面向客戶(外部)和內(nèi)部端點(diǎn)的持續(xù)監(jiān)控,以確保應(yīng)用服務(wù)的連續(xù)性,以及某些安全認(rèn)證的合規(guī)性。
應(yīng)用程序通常需要顯性地將各種客戶端庫添加到代碼之中,以公布出待檢測的指標(biāo)。而Blackbox則會隱性地驗(yàn)證諸如:DNS解析、網(wǎng)絡(luò)連接、證書頒發(fā)機(jī)構(gòu)(CA)等外部服務(wù)的狀態(tài),而且側(cè)重于檢測應(yīng)用程序的性能。因此,Blackbox通常會被部署在 Kubernetes集群上,提供免費(fèi)、具有高度可用性的監(jiān)控過程,以全面了解遠(yuǎn)程端點(diǎn)。
如何部署
與其他Prometheus導(dǎo)出器類似,Blackbox可以被部署在任何操作系統(tǒng)上,或以容器的形式被部署。不過,鑒于其主要目的是為了監(jiān)控應(yīng)用基礎(chǔ)架構(gòu)的關(guān)鍵方面,因此我強(qiáng)烈建議您將其部署在容器編排的平臺上,并發(fā)揮如下優(yōu)勢:
- 高可用性 – 作為最重要的方面,保證監(jiān)控工具的可用性,是每位管理員的頭等大事。
- 可擴(kuò)展性 - 根據(jù)檢查的次數(shù)需要,Blackbox可以按需擴(kuò)展。
- 可移植性 – 由于無法預(yù)知應(yīng)用基礎(chǔ)架構(gòu)的演變,因此我們需要確保可以在本地或云端,以不同的方式流暢地部署該工具。這也是其作為監(jiān)控棧的另一個(gè)重要方面。
- 靈活性 – 能夠與Kubernetes等現(xiàn)有平臺輕松地集成。這是該工具的一大優(yōu)勢所在。
由于Blackbox是由Prometheus組織在GitHub上管理的官方導(dǎo)出器,因此Helm chart能夠很容易地被部署到Kubernetes群集上。具體設(shè)置與部署,請參見如下命令行:
部署Prometheus
由于在完成默認(rèn)安裝后,它會自帶有了一個(gè)簡單的HTTP探測器,因此我們可以輕松地啟動針對不同HTTP/S端點(diǎn)的監(jiān)控。
Prometheus的默認(rèn)安裝
Blackbox會帶有一個(gè)簡單的Web UI,可以輕松地訪問到每個(gè)健康檢查服務(wù)的日志。您可以在Helm chart中啟用一個(gè)入口規(guī)則(ingress rule),以開啟對于UI的訪問,并調(diào)試針對的各項(xiàng)Web檢查:
用Blackbox進(jìn)行健康檢查
為何以及如何使用Kubernetes ServiceMonitor
如今,監(jiān)控不再只是某個(gè)專職團(tuán)隊(duì)的任務(wù)。它往往會被分散到各個(gè)協(xié)作團(tuán)隊(duì),以確保能夠覆蓋到應(yīng)用架構(gòu)的每個(gè)部分。因此,我們只有讓整個(gè)監(jiān)測過程越易于被理解,也就越易于被頻繁使用。
為此,Prometheus operator引入了一個(gè)名為ServiceMonitor的全新Kubernetes對象。該資源可以被用于描述Prometheus監(jiān)控的一組目標(biāo),而無需在Prometheus服務(wù)器端進(jìn)行任何額外的配置。
通過這種自動化配置Prometheus新目標(biāo)的簡單方法,服務(wù)器就能夠找到任何被配置了特定標(biāo)簽的Kubernetes ServicesMonitor,并自動將其添加到當(dāng)前的列表中(默認(rèn)情況下,它使用的標(biāo)簽是“release=kube-prometheus-stack”)。
我們推薦您使用帶有Blackbox的ServiceMonitor對象,去監(jiān)視各個(gè)內(nèi)、外部端點(diǎn)。值得注意的是,添加新的檢測節(jié)點(diǎn)屬于創(chuàng)建的獨(dú)立對象,它是與Prometheus服務(wù)器的配置相分離的。這就意味著任何想要部署新應(yīng)用的運(yùn)維人員,都可以獨(dú)立地管理對其應(yīng)用的監(jiān)控,而無需借助管理員的干預(yù),去配置Prometheus scratch。這樣設(shè)計(jì)的主要好處在于,它分擔(dān)了運(yùn)維人員對于每個(gè)部署資源進(jìn)行監(jiān)控的責(zé)任。
如下配置所示,Blackbox Helm chart也可以通過ServiceMonitor,去輕松創(chuàng)建并管理任何新加入到監(jiān)控目標(biāo)。
可用于服務(wù)監(jiān)控的Blackbox Helm chart
上述配置命令的結(jié)果是創(chuàng)建了三個(gè)具有特定標(biāo)簽:kube-prometheus-stack的不同ServiceMonitor對象。每個(gè)對象都被專用于配置新的Prometheus目標(biāo)。
如何繪制數(shù)據(jù)圖表
Blackbox自帶有一個(gè)Web UI,可提供檢測的相關(guān)信息。不過,該UI無法持續(xù)被用來監(jiān)控多個(gè)端點(diǎn)的狀態(tài)。對此,為了繪制由Prometheus導(dǎo)出器收集到的指標(biāo)圖表,我們需要根據(jù)默認(rèn)選項(xiàng),將Grafana與Prometheus相集成。
具體說來,我們可以通過如下兩種Blackbox儀表板,來構(gòu)建可讀的數(shù)據(jù)圖表。
- 9115-blackbox - 在單個(gè)圖表中,提供所有受監(jiān)控端點(diǎn)的整體概覽,以快速獲取每個(gè)端點(diǎn)的狀態(tài)。
- Prometheus Blackbox Exporter - 在每個(gè)端點(diǎn)的專用部分,提供每個(gè)受監(jiān)控端點(diǎn)的概覽。
當(dāng)然,我們也可以將上述儀表板合并在一起,通過優(yōu)化和渲染,一站式地呈現(xiàn)數(shù)據(jù),以避免將同一數(shù)據(jù)源的儀表板數(shù)量翻倍。如果您想了解更多的儀表板類型,請參見--https://grafana.com/grafana/dashboards?search=blackbox。
通過合并兩個(gè)儀表板,以實(shí)現(xiàn)更好的可視化
小結(jié)
作為一種新的導(dǎo)出器,Blackbox可以輕松地被部署到Prometheus平臺上,以檢測應(yīng)用基礎(chǔ)架構(gòu)的關(guān)鍵指標(biāo)。通過將其與Grafana儀表板動態(tài)結(jié)合,我們不但可以改進(jìn)SLA的檢測質(zhì)量,還能夠?yàn)閳?zhí)行團(tuán)隊(duì)提供應(yīng)用基礎(chǔ)架構(gòu)的整體概覽。如果您有興趣了解更多有關(guān)Prometheus Blackbox的信息,請參見:
- Github 存儲庫
- 在Kubernetes上部署B(yǎng)lackbox的Helm chart
- 使用Blackbox導(dǎo)出器和Sysdig來監(jiān)控各項(xiàng)可用性指標(biāo)
- Prometheus和Blackbox導(dǎo)出器如何讓監(jiān)控微服務(wù)端點(diǎn)變得簡單且免費(fèi)
- Prometheus operator入門
原文標(biāo)題:Prometheus Blackbox: What? Why? How?,作者: Nicolas Giron
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】