受益於大數據和物聯網技術的蓬勃發展,如今的智能設備越來越多。隨之而來的還有海量的數據,而對於這些隨時間變化容易產生大量數據的機器,類似influxDB這種時序資料庫,非常適合管理。
基礎設施環境的需求每年都在變化,相關的系統也變得越來越複雜。但是,如果我們不了解基礎設施以及它們在我們生活中所發生的變化,那麼這些變化將毫無意義。這時候,就到了監控工具和軟體用武之地的時候了。它們將給予操作者和管理員在他們的環境中查看問題並及時修復問題的能力。
但是,如果我們想在問題發生之前就預測出來呢?收集我們環境相關的指標和數據,可以讓我們在了解基礎架構的運行情況下,根據數據進行預測。當我們知道並了解正在發生的事情時,我們可以預防問題,而不僅僅是解決問題。
當我們使用這些數據之前,我們需要搞清楚如何收集和存儲它們。例如,如果我們想要收集100臺機器每十秒的CPU使用率,我們需要保存大量數據。甚至,如果每臺機器運行15個容器,並且您想保存每個容器的數據呢?或者,如果我想要保存每個流程生成的數據怎麼辦?這裡就是時序資料庫有用的地方。
時序資料庫存儲時序數據,什麼意思?下面,我們將對此進行解釋。並且向您介紹InfluxDB,一個開源的時序資料庫。到本文結束時,您將了解以下內容:
什麼是時序數據以及時序資料庫?
有關InfluxDB和TICK技術棧的基本信息。
如何安裝InfluxDB和其他工具。
一、介紹時序的概念
圖中的表,就是介紹像MySql這樣的RDBMS是如何存儲數據的?
如果您熟悉MySQL之類的關係資料庫管理軟體(RDBMS),則肯定對表,列和主鍵這類的術語比較熟悉。很像excel,數據都存儲在行和列中。關係資料庫被廣泛使用,遵從於ACID原則(原子性,一致性,隔離性和持久性),您可以通過相關的語句更新其中的某些數據。
但是,對於那些產生大量數據的東西,比如自動駕駛汽車,收集它的數據,關係型資料庫並不是一個好的選擇。因為,汽車不斷收集身邊環境的數據,它採用這些數據並分析隨時間變化的行為,以保證正確行使。數據量可能就是每小時數十億字節。雖然,您仍然可以使用關係資料庫來收集這些數據,但是在擴展和可用性上,這並不是最佳工具。
這是時序數據有意義的地方。假如您想收集有關城市交通、農業設備溫度或者裝配線生產率的數據。不要將數據放入包含行和列的表中,而是以時間戳為基線,推送多行數據,下圖可能更有助於您理解這一點:
想像一下行和行的數據,是按時間戳進行排序存儲
使用這種類型的數據,可以更輕鬆地跟蹤和觀察隨時間而發生變化的指標。當數據累積到一定程度時,您不僅可以看到過去的行為,現在的行為,甚至可以預測未來的行為。可以選擇更明智的數據決策!
好奇,時序資料庫如何存儲和格式化數據?不同的時序資料庫有不同的方式,InfluxDB以線路協議存儲數據。查詢時,可以以json格式返回數據。
2、InfluxDB:時序資料庫
InfluxDB是由InfluxData開發的開源時序資料庫,使用Go語言編寫的,這意味著你可以在不安裝任何依賴項的情況下使用它。它支持多種數據協議,例如:Telegraf(也來自於InfluxData),Graphite,Collectd和OpenTSDB。這使您可以靈活地選擇收集數據的方式。它是增長最快的時序資料庫之一,您可以在GitHub上找到源碼。
讓我們來了解在InfluxData的TICK技術棧中,是如何使用三個工具來構建時序資料庫,並且開始存儲和處理數據。
二、TICK stackInfluData的平臺基於四個開源項目,這些項目可以在時序數據中相互配合使用。通過一起使用,您可以輕鬆地收集、存儲、處理和查看數據。平臺的四個部分稱為TICK技術棧,代表:
Telegraf:收集系統和服務的統計數據的代理程序
InfluxDB:用於指標,事件和實時分析的可擴展數據存儲
Chronograf:用於TICK技術棧的監控/可視化用戶界面(本文未涉及)
Kapacitor:在時序數據中,用於處理,監控和警告的框架
在這裡,我們將探討TICK技術棧的三個部分:InfluxDB,Telegraf和Kapacitor。
該圖說明了TACK技術棧的不同組件如何相互連接
1、InfluxDB
如上所述,InfluxDB是TICK技術棧的時序資料庫。有一些因素使它從其他時序資料庫中脫穎而出。
強大的性能:性能是InfluxDB最重要的優點之一。這使您即使在高負載的情況下,也能輕鬆使用數據。並且,InfluxDB專注於快速查詢數據,以及通過壓縮來保持其可管理性。為了方便用戶查詢和寫入數據,它還提供了HTTP(S)方式的API接口。它的性能非常強大,可以每秒精確處理多達一百萬個數據點。
類SQL語句:如果您熟悉類似SQL的語法,那麼上手InfluxDB會非常快。它使用類似SQL的語法進行查詢數據。例如,假設您正在收集計算機上已用磁碟空間的數據,如果您想查看該數據,可以編寫一個如下的查詢,該查詢將從三個月的時間中提取已用磁碟空間的平均值,並以10天為增量進行分組:
SELECT mean(diskspace_used) as mean_disk_used FROM disk_stats WHERE time() >= 3m GROUPBY time(10d)
數據存儲策略:在處理大量數據時,如何存儲它成為了一個問題。隨著時間的推移,數據量可以累積成一個天文數字。InfluxDB可以採用正確的數據存儲策略,來減少磁碟的開銷。例如,假如您收集許多機器中內存使用率,雖然在30天內持續的數據可能是有意義的,但是在30天之後,您可能不需要那麼精確的數據,這些數據就不那麼重要了。30天後,您可以將數據的平均值設置的不那麼精確,並且您可以將這些數據保留六個月,永久或者您喜歡的時間。這樣,可以在歷史數據和減少磁碟開銷之間取得平衡。
一、安裝InfluxDB(centos7上示例)
1.下載:wget https://dl.influxdata.com/influxdb/releases/influxdb-0.13.0.x86_64.rpm
2.安裝:sudo yum localinstallinfluxdb-0.13.0.x86_64.rpm
3.啟動:systemctl start influxdb
二、庫操作(類似MySQL)
1.顯示資料庫:showdatabases
2.新建資料庫:createdatabase 庫名
3.刪除資料庫:dropdatabase 庫名
4.選擇資料庫:use 庫名
三、表操作(與MySQL有些區別)
1.顯示數據表:showmeasurements
2.新建數據表,通過插入的數據的方式新建表:
Insert test,domain=www.tyun.cn,name=tyun
3.刪除數據表:drop measurement test
如果InfluxDB是您存儲數據的工具,那麼Telegraf就是您收集數據最佳的工具。Telegraf是一個指標收集的守護程序,它從系統組件,物聯網(IoT)傳感器等中收集各種指標。它是開源的,完全用Go編寫。與InfluxDB一樣,Telegraf由InfluxData團隊編寫,它可以與InfluxDB一起使用。它還包括對不同資料庫的支持,例如:MySQL/MariaDB,MongoDB,Redis等。您可以在InfluxData的網站上閱讀更多相關信息。
Telegraf是模塊化的,基於插件,開箱即用,它支持100多個插件。用於各種輸入源(包括Apache,Ceph,Docker,Iptables,Kubernetes,Nginx和Varnish),處理和輸出。
即使您沒有將InfluxDB做為數據存儲,您也可以使用Telegraf當做收集有關系統或傳感器的數據和信息的有用方法。
一、安裝Telegraf(centos7上示例)
1.下載:wgethttp://get.influxdb.org/telegraf/telegraf-0.11.1-1.x86_64.rpm
2.安裝:sudo yum localinstall telegraf-0.11.1-1.x86_64.rpm
3.啟動:systemctl start telegraf
二、配置
現在我們有辦法收集和存儲我們的數據,但是用它做什麼呢?Kapacitor是技術棧的一部分,它允許您以幾種不同的方式處理數據。它支持流數據和批數據。
Kapacitor最大的優點之一:它可以為您環境中發生的事件提供實時警報。 CPU使用率過載或溫度過高?您可以設置多個不同的警報系統,包括但不限於電子郵件,觸發命令,Slack,HipChat,OpsGenie等等。 您可以在文檔中看到完整列表。
三、安裝TICK技術棧
幾乎每個作業系統發行版都提供了安裝包。您可以從命令行安裝這些軟體包。使用說明如下:
1、Fedora:
4、其他作業系統:
請登錄InfluxData官網,進行了解。
四、總結
本文只是對TICK技術棧的相關組件進行了一個大概的導讀,深層次的東西還沒有講道。譯者翻譯這篇文章的主要原因,其實就是想起到一個拋磚引玉的作用,給那些只使用過關係型資料庫或者沒接觸過TICK技術棧的同行們開闊一下視野(有時候,思路比技術更重要)。以後有時間,我會專門寫一些關於TICK技術棧更深層次的東西。希望大家多多關注新鈦雲服,關注本公眾號。
原文:https://opensource.com/article/17/8/influxdb-time-series-database-stack
了解新鈦雲服
新鈦雲服正式獲批工信部ISP/IDC(含網際網路資源協作)牌照
深耕專業,矗立鰲頭,新鈦雲服獲千萬Pre-A輪融資
原電訊盈科中國區副總裁加入新鈦雲服「附專訪」
新鈦雲服,打造最專業的Cloud MSP+,做企業業務和雲之間的橋梁
新鈦雲服出品的部分精品技術乾貨
七個用於Docker和Kubernetes防護的安全工具
運維人的終身成長,從清單管理開始|萬字長文!
99%運維不知道,系統文件md5變了,竟然是因為.
OpenStack與ZStack深度對比:架構、部署、計算存儲與網絡、運維監控等
什麼是雲原生?
IT混合雲戰略:是什麼、為什麼,如何構建?