Categories
程式開發

Prometheus 監控實戰(四):數據模型


Prometheus 會收集時間序列數據,為了處理這些數據,它使用一個多維時間序列數據模型。這個時間序列數據模型結合了時間序列名稱和稱為標籤(label)的鍵/值對,這些標籤提供了維度。每個時間序列由時間序列名稱和標籤的組合唯一標識。

指標名稱

時間序列名稱通常描述收集的時間序列數據的一般性質—例如,website_visits_total為網站訪問的總數。

名稱可以包含ASCII字符、數字、下劃線和冒號。

標籤

標籤為Prometheus數據模型提供了維度。它們為特定時間序列添加上下文。例如,total_website_visits時間序列可以使用能夠識別網站名稱、請求IP或其他特殊標識的標籤。 Prometheus可以在一個時間序列、一組時間序列或者所有相關的時間序列上進行查詢。

標籤共有兩大類:插樁標籤(instrumentation label)和目標標籤(target label)。插樁標籤來自被監控的資源—例如,對於與HTTP相關的時間序列,標籤可能會顯示所使用的特定HTTP動詞。這些標籤在由諸如客戶端或exporter抓取之前會被添加到時間序列中。目標標籤更多地與架構相關—它們可能會識別時間序列所在的數據中心。目標標籤由Prometheus在抓取期間和之後添加。

時間序列由名稱和標籤標識(儘管從技術上講,名稱本身也是名為__name__的標籤)。如果你在時間序列中添加或更改標籤,那麼Prometheus會將其視為新的時間序列。

你可以理解label就是鍵/值形式的標籤,並且新的標籤會創建新的時間序列。

標籤名稱可以包含ASCII字符、數字和下劃線。

帶有__前綴的標籤名稱保留給Prometheus內部使用。

採樣數據

時間序列的真實值是採樣(sample)的結果,它包括兩部分:

  • 一個float64類型的數值

  • 一個毫秒精度的時間戳

符號表示

結合這些元素,我們可以看到Prometheus如何將時間序列表示為符號(notation),如下所示。

代碼清單2-1 時間序列符號

{

例如,帶有標籤的total_website_visits時間序列可能如下所示。

代碼清單2-2 時間序列示例

total_website_visits{site="MegaApp",location="NJ",instance="webserver",job="web"}

首先是時間序列名稱,後面跟著一組鍵/值對標籤。通常所有時間序列都有一個instance標籤(標識源主機或應用程序)以及一個job標籤(包含抓取特定時間序列的作業名稱)。

這與OpenTSDB使用的符號大致相同,受到了Borgmon的影響。

保留時間

Prometheus專為短期監控和警報需求而設計。默認情況下,它在其數據庫中保留15天的時間序列數據。如果要保留更長時間的數據,則建議將所需數據發送到遠程的第三方平台。

安全模型

Prometheus可以通過多種方式進行配置和部署,關於安全有以下兩個假設:

  • 不受信任的用戶將能夠訪問Prometheus服務器的HTTP API,從而訪問數據庫中的所有數據。

  • 只有受信任的用戶才能訪問Prometheus命令行、配置文件、規則文件和運行時配置。

從Prometheus 2.0開始,默認情況下某些HTTP API的管理功能被禁用。

因此,Prometheus及其組件不提供任何服務器端的身份驗證、授權或加密。如果你在一個更加安全的環境中工作,則需要自己實施安全控制—例如,通過反向代理訪問Prometheus服務器或者正向代理exporter。由於不同版本的配置會潛在地發生較大變化,因此本書沒有記錄如何執行這些操作。

作者介紹:

詹姆斯·特恩布爾(James Turnbull)是一位作家和工程師。他最近出版的書包括《The Packer Book》《The Terraform Book》和《The Art of Monitoring》,以及關於開源容器虛擬化技術的《The Docker Book》,還有關於開源日誌工具的《The Logstash Book》 。詹姆斯還撰寫了兩本關於Puppet的書:《Pro Puppet》和《Pulling Strings with Puppet》。同時他還是另外三本書的作者:《Pro Linux System Administration》《Pro Nagios 2.0》和《Hardening Linux》。

他目前是Empatico公司的首席技術官,並且曾擔任過Kickstarter公司的首席技術官、Docker公司服務和支持副總裁、Venmo公司工程副總裁以及Puppet公司技術運營副總裁。他喜歡品嚐美食、喝酒、讀書、攝影和養貓。

本文節選自《Prometheus 監控實戰》,更多內容請點擊此處查看。

相關閱讀:

Prometheus 監控實戰(三):Prometheus 架構

Prometheus 監控實戰(二):監控方法論與報警通知

Prometheus 監控實戰(一):監控機制