Prometheus Monitoring System & Time Series Database

什麼是 TSDB (Time Series Database):

咱們能夠簡單的理解爲.一個優化後用來處理時間序列數據的軟件,而且數據中的數組是由時間進行索引的.node

時間序列數據庫的特色:

  • 大部分時間都是寫入操做
  • 寫入操做幾乎是順序添加;大多數時候數據到達後都以時間排序.
  • 寫操做不多寫入好久以前的數據,也不多更新數據.大多數狀況在數據被採集到數秒或者數分鐘後就會被寫入數據庫.
  • 刪除操做通常爲區塊刪除,選定開始的歷史時間並指定後續的區塊.不多單獨刪除某個時間或者分開的隨機時間的數據.
  • 數據通常遠遠超過內存大小,因此緩存基本無用.系統通常是 IO 密集型
  • 讀操做是十分典型的升序或者降序的順序讀,
  • 高併發的讀操做十分常見.

所以很是適用於用來存儲和處理監控數據。mysql

 

什麼是Prometheus

Prometheus是SoundCloud發佈的一個開源的系統監控和報警工具。自2012成立以來,許多公司和組織都採用了普羅米修斯,該項目擁有一個很是活躍的開發人員和用戶社區。它如今是一個獨立的開源項目,而且獨立於任何公司。爲了強調這一點,並明確項目的治理結構,Prometheus在2016年加入了Cloud Native Computing Foundation,做爲在 kubernetes以後的第二個由基金會主持的項目。git

Prometheus是一個強大的監控平臺,提供了監控數據蒐集、存儲、處理、可視化和告警一套完整的解決方案。github

官方網站:https://prometheus.iogolang

 

Features

prometheus主要的特性:web

  • 多維數據模型(時序列數據由metric名和一組key/value組成)
  • 在多維度上靈活的查詢語言(PromQl)
  • 不依賴分佈式存儲,單主節點工做.
  • 經過基於HTTP的pull方式採集時序數據
  • 能夠經過中間網關進行時序列數據推送(pushing)
  • 目標服務器能夠經過發現服務或者靜態配置實現
  • 多種可視化和儀表盤支持

Components

prometheus生態系統由多個組件組成,其中許可能是可選的:sql

Most Prometheus components are written in Go, making them easy to build and deploy as static binaries.數據庫

 

Architecture

 從這個架構圖,也能夠看出 Prometheus 的主要模塊包含, prometheus server, exporters, pushgateway, PromQL, Alertmanager, WebUI 等。下面我就簡單介紹各個組件實現的功能:數組

  1. prometheus server: 按期從靜態配置的 targets 或者服務發現(主要是DNS、consul、k8s、mesos等)的 targets 拉取數據。緩存

  2. exporters:負責向prometheus server作數據彙報的程序統。而不一樣的數據彙報由不一樣的exporters實現,好比監控主機有node-exporters,mysql有MySQL server exporter,更多請參考連接

  3. pushgateway:主要使用場景爲:

       Prometheus 採用 pull 模式,可能因爲不在一個子網或者防火牆緣由,致使 Prometheus 沒法直接拉取各個 target 數據。在監控業務數據的時候,須要將不一樣數據彙總, 由 Prometheus 統一收集。

    總結:實現相似於zabbix-proxy功能;

  4. Alertmanager:實現prometheus的告警功能。

  5. webui:主要經過grafana來實現webui展現。

 

環境搭建

Prometheus Server

  Prometheus Server 自己也將以容器的方式運行。

Exporter

  Prometheus 有不少現成的 Exporter,完整列表請參考 https://prometheus.io/docs/instrumenting/exporters/

咱們將使用:

  1. Node Exporter,負責收集 host 硬件和操做系統數據。它將以容器方式運行在全部 host 上。

  2. cAdvisor,負責收集容器數據。它將以容器方式運行在全部 host 上。

相關文章
相關標籤/搜索