「時間掌控者」:InfluxDB

2021-12-22 新鈦雲服

受益於大數據和物聯網技術的蓬勃發展,如今的智能設備越來越多。隨之而來的還有海量的數據,而對於這些隨時間變化容易產生大量數據的機器,類似influxDB這種時序資料庫,非常適合管理。

基礎設施環境的需求每年都在變化,相關的系統也變得越來越複雜。但是,如果我們不了解基礎設施以及它們在我們生活中所發生的變化,那麼這些變化將毫無意義。這時候,就到了監控工具和軟體用武之地的時候了。它們將給予操作者和管理員在他們的環境中查看問題並及時修復問題的能力。

但是,如果我們想在問題發生之前就預測出來呢?收集我們環境相關的指標和數據,可以讓我們在了解基礎架構的運行情況下,根據數據進行預測。當我們知道並了解正在發生的事情時,我們可以預防問題,而不僅僅是解決問題。

當我們使用這些數據之前,我們需要搞清楚如何收集和存儲它們。例如,如果我們想要收集100臺機器每十秒的CPU使用率,我們需要保存大量數據。甚至,如果每臺機器運行15個容器,並且您想保存每個容器的數據呢?或者,如果我想要保存每個流程生成的數據怎麼辦?這裡就是時序資料庫有用的地方。

時序資料庫存儲時序數據,什麼意思?下面,我們將對此進行解釋。並且向您介紹InfluxDB,一個開源的時序資料庫。到本文結束時,您將了解以下內容:

什麼是時序數據以及時序資料庫?

有關InfluxDB和TICK技術棧的基本信息。

如何安裝InfluxDB和其他工具。

 

一、介紹時序的概念

圖中的表,就是介紹像MySql這樣的RDBMS是如何存儲數據的?

如果您熟悉MySQL之類的關係資料庫管理軟體(RDBMS),則肯定對表,列和主鍵這類的術語比較熟悉。很像excel,數據都存儲在行和列中。關係資料庫被廣泛使用,遵從於ACID原則(原子性,一致性,隔離性和持久性),您可以通過相關的語句更新其中的某些數據。

但是,對於那些產生大量數據的東西,比如自動駕駛汽車,收集它的數據,關係型資料庫並不是一個好的選擇。因為,汽車不斷收集身邊環境的數據,它採用這些數據並分析隨時間變化的行為,以保證正確行使。數據量可能就是每小時數十億字節。雖然,您仍然可以使用關係資料庫來收集這些數據,但是在擴展和可用性上,這並不是最佳工具。


1、為什麼時序資料庫是一個很好的選擇?

這是時序數據有意義的地方。假如您想收集有關城市交通、農業設備溫度或者裝配線生產率的數據。不要將數據放入包含行和列的表中,而是以時間戳為基線,推送多行數據,下圖可能更有助於您理解這一點:

     

想像一下行和行的數據,是按時間戳進行排序存儲

 

使用這種類型的數據,可以更輕鬆地跟蹤和觀察隨時間而發生變化的指標。當數據累積到一定程度時,您不僅可以看到過去的行為,現在的行為,甚至可以預測未來的行為。可以選擇更明智的數據決策!

好奇,時序資料庫如何存儲和格式化數據?不同的時序資料庫有不同的方式,InfluxDB以線路協議存儲數據。查詢時,可以以json格式返回數據。

 

2、InfluxDB:時序資料庫

InfluxDB是由InfluxData開發的開源時序資料庫,使用Go語言編寫的,這意味著你可以在不安裝任何依賴項的情況下使用它。它支持多種數據協議,例如:Telegraf(也來自於InfluxData),Graphite,Collectd和OpenTSDB。這使您可以靈活地選擇收集數據的方式。它是增長最快的時序資料庫之一,您可以在GitHub上找到源碼。

讓我們來了解在InfluxData的TICK技術棧中,是如何使用三個工具來構建時序資料庫,並且開始存儲和處理數據。

二、TICK stack

InfluData的平臺基於四個開源項目,這些項目可以在時序數據中相互配合使用。通過一起使用,您可以輕鬆地收集、存儲、處理和查看數據。平臺的四個部分稱為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


2、Telegraf

如果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

二、配置


3、Kapacitor

現在我們有辦法收集和存儲我們的數據,但是用它做什麼呢?Kapacitor是技術棧的一部分,它允許您以幾種不同的方式處理數據。它支持流數據和批數據。

Kapacitor最大的優點之一:它可以為您環境中發生的事件提供實時警報。 CPU使用率過載或溫度過高?您可以設置多個不同的警報系統,包括但不限於電子郵件,觸發命令,Slack,HipChat,OpsGenie等等。 您可以在文檔中看到完整列表。

 

三、安裝TICK技術棧

幾乎每個作業系統發行版都提供了安裝包。您可以從命令行安裝這些軟體包。使用說明如下:

 

1、Fedora:


2、CentOS7/RHEL 7:


3、Ubuntu/Debian:

 

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混合雲戰略:是什麼、為什麼,如何構建?

相關焦點

  • 餓了麼 Influxdb 實踐之路
    這篇文章談論的 influxdb 版本在1.2.0以上。這篇文章只談論 influxdb 在監控中的數據存儲應用,不會談論 influxdb 提供的整套監控方案。本文主要談論五個方面:時序資料庫選型、influxdb 基本概念、存儲引擎、實踐、數據聚合。
  • 使用 Grafana+collectd+InfluxDB 打造現代監控系統
    安裝很容易:12$ wget https://s3.amazonaws.com/influxdb/influxdb_latest_amd64.deb$ sudo dpkg -i influxdb_latest_amd64.deb啟動 InfluxDB:123
  • Docker進階-容器監控cAdvisor+InfluxDB+Granfana
    InfluxDB主要功能:基於時間序列,支持與時間有關的相關函數(如最大、最小、求和等);可度量性:你可以實時對大量數據進行計算;基於事件:它支持任意的事件數據;InfluxDB:負責存儲時序數據Grafana:負責分析和展示時序數據安裝部署部署InfluxDB服務docker run -d --name influxdb -p 8086:8086 \-v /data/influxdb:/
  • 性能工具之JMeter+InfluxDB+Grafana打造壓測可視化實時監控
    使用網絡時間協議(NTP)同步主機之間的時間; 如果主機的時鐘與NTP不同步,寫入InfluxDB的數據的時間戳可能不準確。下載安裝wget et https://dl.influxdata.com/influxdb/releases/influxdb-1.6.2.x86_64.rpmsudo yum localinstall influxdb-1.6.2.x86_86_64.rpmInfluxDB配置找到InfluxDB配置文件(/etc/influxdb
  • Prometheus+InfluxDB+Grafana 打造高逼格監控平臺
    這樣看都沒有問題,我們在前面也強調過,對於壓力工具來說,我們最多只關心三條曲線的數據:TPS(T 由測試目標定義)、響應時間、錯誤率。這裡的錯誤率還只是輔助排查問題的曲線,沒有問題時,只看 TPS 和響應時間即可。
  • 時序資料庫 InfluxDB(一)
    首先,整個圖表可以看成是一個 measurement ,它包含了許多數據;然後我們根據 db 名稱構建 tag ,把 score 排名得分作為 field ,那麼所有數據行就類似於:measurement,db=InfluxDB score=5 timestampmeasurement,db=Kdb+ score=1 timestampmeasurement
  • 改變心智模式,做人生的掌控者!
    【改變心智模式,做人生的掌控者】第一,我們只會看到自己想要看到的世界。心智模式的影響非常大,人們認定自己是怎樣的人,就會慢慢成長為這樣的人,又因為大腦在接受外界刺激時會自動過濾大部分信息,所以我們只會看到自己想要看到的世界。內在世界由個人經歷、經驗和記憶決定,每個人經歷不同,看到的世界也不同。如果你的思維已成定式,就會變成心智模式裡的一道牆,限制你的思考和判斷。
  • 時間不是省出來的:能掌控時間的人,才能掌控人生
    在這個特別的春節假期,你我都成了疫情傳播的阻斷者,擁有了超多的時間。在這期間,面對突然閒暇的假期,有人直呼太無聊,不知道該做什麼,於是發明了很多消磨時間的方法,比如在魚缸裡釣魚、把榴槤外殼上的刺一一剔除……還有的人,絲毫沒有浪費這段時間,將這份特殊的假期安排的井井有條,面對疫情不慌張、不輕視,讓這段日子,與往日一樣充實。
  • 作為自我掌控者是怎樣一種感受?
    自我掌控者不像外物掌控者那樣喜歡立刻表現出他們的情緒,所以久而久之,當他們在心裡抑制這些情感時,這些感情會在他們的心裡得到強化。 因為自我掌控者對事情的感受很深,所以他們常常被人覺得過於敏感或過於情緒化也就不足為奇了。當自我掌控者體驗到痛苦的情感時,他們更可能露出悲傷的神情或者哭泣,而這些是恐懼情感的父母所不能容忍的。 另一方面,當外物掌控者有強烈的感情時,他們通常會經由行為表現出來。
  • 《掌控者3:無間》連載
    《掌控者3:無間》在本公眾號獨家連載。《掌控者》系列一共有3本,是為了講解「心理應激微反應」研究成果和應用技術而撰寫的著作。
  • 選庫命令(db/patent)與 (db/all) 的區別
    為了方便大家一次檢索出所有除去非專利文獻和專利翻譯文本的專利文獻,我們特別為大家提供一個資料庫選庫命令(db/patent),幫助大家在檢索時減少繁瑣的選庫流程。大家知道在patentics中選庫欄位為db/,在db/後面添加各資料庫代碼即選擇在某種資料庫中進行數據檢索。例如db/cn表示選擇在中國庫(包括中國發明實用庫(發明申請與實用新型)、中國發明授權庫和中國外觀庫)中進行檢索。
  • 深入淺出:了解時序資料庫InfluxDB
    數據模型1.時序數據的特徵: 時序數據應用場景就是在時間線上每個時間點都會從多個數據源湧入數據,按照連續時間的多種緯度產生大量數據需要寫入存儲。傳統的RDBMS資料庫對寫入的支持都是按行計算,B樹結構索引,難以做到大批量的寫入支撐,更何況多緯度數據連續的湧入存儲,因此時序數據的存儲設計都會將目光放在LSM-Tree或者列式的數據結構存儲方向。
  • 潘多拉-未來廣播電臺的掌控者
    首頁 > 外聞 > 關鍵詞 > 潘多拉最新資訊 > 正文 潘多拉-未來廣播電臺的掌控者
  • 狼蛛掌控者單手遊戲鍵盤體驗
    畢竟左右手距離的被迫加大,無論是對玩家的盲操,還有長時間緊張比賽造成肩膀疲累來說,都不是很有利。正是出於這般考慮,單手遊戲鍵盤應運而生:雷蛇金絲魔蛛、羅技G13,單手鍵盤的評測體驗我們不止一次推出,而今天我們要講的狼蛛掌控者則不得不讓我們感嘆設計師的腦洞大開。
  • 「比馬龍效應」,幫助孩子變成「時間掌控者」
    缺少時間觀念孩子做事情愛磨蹭,是因為他們不像成年人一樣具有時間緊迫感,他們沒有系統的時間觀念,對於時間這個觀念比較模糊,沒有一個明確的認識,注意力只放在除了這個任務之外的其他事情上,專注於其他件事,不能夠正確的認識時間和自己的任務,不能意識到事情的重要性,還不太清楚把一件事情儘快做完會有什麼更好的結果出現。