概述
前言部分,作為第一印象(雖然很多人,包括我有時候不怎麼看),寫得很牛逼,總結的結論很中肯:
海量監控資料的真正挑戰在于以下幾點:
1.能否做到實時。實時是種質變的能力,可将一個離線監控平台提升為一個實時決策系統。難點在于能否設計實作高性能的架構,以及能否實作水準擴充等。
2.分叢集後,單個業務的流量大小、标簽集多少是關鍵。流量大,相對容易解決,主要涉及系統性能和水準擴充等。标簽集多,海量标簽,海量時間序列線,如何做查詢優化是挑戰,如筆者遇到的一些業務上報的監控資料,有幾十個次元的标簽,并将QQ号和URL作為标簽值,有非常海量的時間序列線。
3.針對監控資料多寫少讀、成本敏感的特點,如何設計高效的存儲引擎?既能充分發揮硬體性能,又能在高效壓縮存儲的同時保障查詢效率。
技術理念定位:技術降成本,堅決反對開源軟體堆砌。
要做的是借助強大的技術和工程能力,直面問題,在架構和源碼層面解決它,而不是引入和堆砌更多的開源軟體。
第一章 初識InfluxDB
時序資料
時序資料的定義,總結的若幹個特點:
- 抵達的資料幾乎總是作為新條目被記錄,無更新操作。
- 資料通常按照時間順序抵達。
- 時間是一個主坐标軸。
InfluxData與TICK
InfluxData公司的開源高性能時序中台TICK(Telegraf +InfluxDB + Chronograf +Kapacitor), InfluxDB是作為TICK的存儲系統進行設計和開發的。TICK專注于DevOps監控、IoT監控、實時分析等應用場景,是一個內建了采集、存儲、分析、可視化等能力的開源時序中台,由Telegraf、 InfluxDB、Chronograf、Kapacitor 4個元件以一種靈活松散但緊密配合、互為補充的方式構成,各個子產品互相配合、互為補充,整體系統架構:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICciV2dsQXYtJ3bm9CX0gTMx81dsQWZ4lmZf1GLlpXazVmcvwVZnFWbp1zczV2YvJHctM3cv1Ces0zaHRGcWdUYuVzVa9GczoVdG1mWfVGc5RHLwIzX39GZhh2csATMflHLwEzX4xSZz91ZsAzMfRHLGZkRGZkRfJ3bs92YskmNhVTYykVNQJVMRhXVEF1X0hXZ0xCNx8VZ6l2cssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwgDN1ImY5AzYiFjYkRWNzYzXzAjMwATMwMzLcBTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
該公司開源InfluxDB-Relay的高可用套件後,宣布閉源其叢集功能,作為商業付費版本(InfluxDB Enterprise和InfluxDB Cloud)分發。
使用場景
時序資料的存儲、分析與監控
優勢
特性與簡介
第二章 InfluxDB入門
安裝
指令行簡介
配置檔案
第三章 寫入和查詢
寫入
InfluxDB寫操作支援簡明的行協定(Line Protocol,一種基于文本格式的協定),以及CollectD、Graphite、OpenTSDB、Prometheus、UDP等第三方協定。
行協定
單行文本,表示一條時序資料,由表、标簽集、名額集和時間戳4部分組成
第四章 連續查詢和保留政策
連續查詢
保留政策
第五章 認證與授權
通過認證和授權,InfluxDB的不同賬戶擁有完全獨立的資料空間和權限空間。
認證
授權
第六章 叢集和高可用
第七章 備份管理和節點管理
備份管理
InfluxDB企業版提供兩個工具集:
-
備份和還原備份工具集
用于大多數場景,通用型工具;支援以資料庫、保留政策、分片3個次元標明要操作的資料,進行備份或還原備份操作,
-
導出和導入資料工具集
針對海量資料集(100G以上)場景補充設計的備份工具。
- 導出:influx_inspect export,以行協定格式導出資料,參數選項:
- -compress:使用gzip壓縮資料,預設不壓縮
- -database
:要導出的資料對應的資料庫名稱<db_name>
- -datadir
:DATA節點資料對應的存儲目錄,預設值<data_dir>
$HOME/.influxdb/data
- -end
:時間範圍結束的時間戳,rfc3339格式<timestamp>
- -out
:導出資料的存儲目錄,預設值<export_dir>
$HOME/.influxdb/export
- -retention
:要導出的資料對應的保留政策名稱<rp_name>
- -start
:時間範圍開始的時間戳,rfc3339格式<timestamp>
- -waldir
:DATA節點WAL檔案對應的存儲目錄,預設值為<wal_dir>
$HOME/.influxdb/wal
- 導入:influx-import,選項:
- -path:要導入的資料檔案的存儲目錄
- -compressed:如果導入檔案為壓縮檔案,則設定為true,支援.gz格式壓縮
- -pps:導入允許的速率。預設pps為0不限速。
- -precision ‘h|m|s|ms|u|ns’:指定導入資料的時間戳精度,支援h小時、m分鐘、s秒、ms毫秒、u微秒、ns納秒,精度預設為ns。
節點管理
第八章 第三方協定
現今的開源世界太繁榮,閉門造車一家獨大,大機率會玩死。是以,需要支援與其他系統原生內建或者以插件形式內建的可擴充能力。
UDP
CollectD
官網,
架構圖:
多名額插件(Multi-value Plugins)用于指定多名額資料的處理方式,有兩種處理方式:split和join
Graphite
OpenTSDB
OpenTSDB是基于HBase的分布式、可伸縮的時序型資料庫,由時間序列守護程式(Time Series Daemon,TSD)及指令行實用程式集組成。可以通過運作一個或多個TSD來提供OpenTSDB服務,每個TSD都是獨立的,沒有主裝置和共享狀态,是以使用者可以根據需要運作任意數量的TSD,以支撐業務需求。每個TSD使用HBase或托管的Google Bigtable服務來存儲和檢索時間序列資料,資料模式針對類似時間序列的快速聚合進行高度優化,以最大程度節省存儲空間。使用者不需要直接通路底層存儲,可通過telnet協定、HTTP API或内置GUI與TSD通信,來擷取相關的資料或執行預設操作。所有通信都在同一指定端口上進行,TSD通過檢視接收的前幾個位元組來确定用戶端的協定。OpenTSDB架構:
Prometheus
Prometheus的靈感來源于Google的Borgmon監控系統,主要子產品包括Prometheus Server、Exporters、Push Gateway、PromQL、Alertmanager以及圖形界面,系統架構:
第九章 基于TICK的DevOps監控實戰
TICK,即Telegraf、InfluxDB、Chronograf、Kapacitor4個元件,是一個集采集能力、運算和存儲能力、告警能力、可視化能力為一體,支援數百種第三方系統和軟體的監控系統,專注于DevOps監控、IoT監控、實時分析。
TICK架構圖:
Telegraf采集配置檔案指定的監控資料,并通過InfluxDB API接口上報到InfluxDB伺服器,InfluxDB伺服器接收到上報的時序資料後,執行預設的連續查詢、聚合運算等操作并進行壓縮存儲。通過Chronograf可以檢視Dashboard等可視化資訊,通過Kapacitor可以對接收到的時序資料執行預設的告警政策。
Telegraf
InfluxDB
Chronograf
Kapacitor
第十章 基于InfluxDB、Prometheus、Grafana的DevOps監控實戰
開源世界,開放和生态才是未來。InfluxDB支援內建Prometheus、Grafana。Prometheus缺乏資料持久存儲能力的問題?
Prometheus
安裝,略過。
Grafana
- 可視化:從熱圖到直方圖,從圖表到地理地圖,Grafana支援大量的可視化選項,通過一種精美呈現的方式幫助讀者了解資料。
- 告警:可以可視化地定義門檻值、配置告警政策、處理名額資料和生成相應的告警資訊,并支援Slack、PagerDuty、VictorOps、OpsGenie等通知系統。
- 統一顯示:将多種資料源的資料整合起來統一顯示,支援30多個開源和商業資料源,也可以基于多種資料源建構統一儀表盤。
- 開放:完全開源的,并由一個充滿活力的社群開發和營運;安裝友善,支援全部主流作業系統,提供Docker安裝鏡像;提供雲托管的Grafana服務。
- 可擴充性:目前Grafana官方庫支援數百個儀表盤和插件,充滿激情和活力的Grafana社群每周都會推出新的儀表盤或插件。
- 協同:可在團隊之間共享資料和儀表盤。