InfluxDB是一款時間序列數據庫,適合構建物聯網使用,您可以通過這款軟件管理遠程設備,將物聯網傳感器設備添加到這款數據庫使用,可以實時讀取數據變化,可以按照時間序列展示數據,將每時每刻設備生成的數據保存在數據庫,方便以后在客戶端界面顯示可視化的數據,例如可以通過這款軟件監控天氣數據,每天的天氣變化數據都可以按照時間序列保存,也可以監控股票數據,股票行情變化按照時間序列號展示,也支持物流數據管理,運輸數據實時更新,按照時間變化實時捕捉數據,監控數據,幫助用戶更快速構建自己的時間序列數據庫!
InfluxDB軟件功能
nfluxDB是一個時間序列平臺
InfluxDB使開發人員能夠構建物聯網,分析和監控軟件。它專門用于處理傳感器,應用程序和基架構所產生的大量和無數個帶有時間的數據源。
專為開發人員打造
專為增長而設計,具有企業級安全,允許開發人員在任何地方進行構建:邊緣,云,本地。
時間序列數據庫
在高能的時間序列數據庫中攝取指標,事件和志,該數據庫每秒可以攝取數百萬個數據點。
更快的時間
執行分析以獲得更快的檢測和解決方案,或者通過簡單的單擊設置警報或異常檢測。
強大的API和工具
使用InfluxDB平臺的開發人員可以以更少的精力,更少的代碼和更少的配置來構建他們的應用程序。
不受限制的開發人員生產力
客戶端和庫,包括React,JavaScpt,Go,Python等等。
搶先使用模板
每個用例的鼓舞人心的模板。易于創建和共享-找到適合您的內容。
InfluxDB軟件特色
為什么要使用InfluxDB
更快的時間變得很棒
InfluxDB通過單一二進制文件的時間序列平臺即可滿足您的所有需求-多租戶時間序列數據庫,UI和儀表板工具,后臺處理和監視代理。所有這些使部署和設置變得輕而易舉,并且更易于保護。
深刻的見解和分析
Flux是第四代編程語言,旨在用于數據腳本,ETL,監視和警報。作為一種功能語言,您可以構建查詢并將通用邏輯分離為易于共享并有助于加快開發速度的函數和庫。Flux還可以用于與其他SQL數據存儲庫(Postgres,Micsoft SQL Server,SQLite和SAP Hana)以及基于云的數據存儲庫(Google Bigtable,Amazon Athena和Snowflake)一起充實您的時間序列數據。豐富的時間序列數據提供了可以進一步深入了解您的數據的上下文。
優化開發人員的生產力
現在,可以在統一的API中訪問InfluxDB中的所有內容(提取,查詢,存儲和可視化)。因為現在可以通過編程方式訪問和控制平臺中的所有內容,所以這使開發人員能夠更快地獲得出色的表現。這與跨10種語言(例如Go,Java,PHP和Python)的一組強大的客戶端庫結合在一起,并且一組InfluxDB命令行工具可幫助開發人員以最熟悉的方式進行開發。
從UI開始
InfluxDB具有一流的UI,其中包括Data Explorer,儀表板工具和腳本編輯器。使用數據資源管理器快速瀏覽收集的指標和事件數據,并應用常見的轉換。儀表板工具隨附了方便的可視化列表,可幫助您更快地從數據中查看見解。最后,使用腳本編輯器通過易于訪問的示例,自動完成和實時語法來快速學習Flux。
易于構建,易于共享的模板
InfluxDB模板(一套新工具,其中包括打包程序和一套預制的監控解決方案)使您可以與全世界的同事和其他社區成員共享監控專業知識。InfluxDB模板庫提供了可用的模板,這些模板涵蓋了一些最流行的工具,應用程序和協議。還可以將這些模板作為代碼檢入,以適合您的持續集成和部署管道,以使部署(更重要的是回)更改輕松進行。
InfluxDB軟件優勢
InfluxDB是從頭開始構建的,是專用的時間序列數據庫。即,沒有將其重新設定為時間序列。時間從一開始就是內置的。InfluxDB是全面平臺的一部分,該平臺支持時間序列數據的收集,存儲,監視,可視化和警報。它不僅僅是一個時間序列數據庫。
InfluxDB數據模型與其他時間序列解決方案(如Graphite,RRD或OpenTSDB)完全不同。InfluxDB具有用于發送時間序列數據的線路協議,其格式如下:measurement-name tag-set field-set timestamp。度量名稱是一個字符串,標記集是鍵/值對的,其中所有值都是字符串,而字段集是鍵/值對的,其中值可以是int,float,bool或stng。測量名稱和標簽集保存在倒排索引中,這可以非常快速地查找特定系列。例如,如果我們有CPU指標:
cpu,host=A,region=uswest idle=23,user=42,system=12 14623548s
InfluxDB中的時間可以是秒,毫秒,微秒或納秒精度。微納級刻度使InfluxDB成為金融和科學計算用例的理想選擇,而其他解決方案將被排除在外。壓縮是可變的,具體取決于用戶所需的精度水平。在磁盤上,數據以柱狀樣式格式組織,其中為測量,標簽集,字段設置了連續的時間塊。因此,每個字段在磁盤上按時間順序進行組織,這使得在單個字段上計算聚合非常快速。可以使用的標簽和字段的數量沒有限制。
其他時間序列解決方案不支持多個字段,當使用共享標簽集傳輸數據時,這會使它們的網絡協議變得腫。大多數其他時間序列解決方案僅支持float值,這意味著用戶無法隨時間序列一起編碼其他元數據。甚至支持標簽(與Graphite和RRD不同)的OpenTSDB和KaisDB都對可使用的標簽數量有所限制。在大約5到6個標簽處,用戶將開始看到其HBase或Cassandra計算機集群中的熱點。
InfluxDB沒有此限制,因為InfluxDB數據模型是專門為時間序列設計的。它通過索引標簽并使字段保持未索引的方式,將開發人員推向正確的方向,以從數據庫中獲得良好的能。它的靈活在于它支持許多數據類型,并且用戶可以具有許多字段和標簽。由于所有這些因素,像InfluxDB這樣的專用時間序列數據庫是處理時間序列數據的最佳解決方案。
InfluxDB使用說明
時間序列數據是通過一段時間內重復測量獲得的觀測值的。將點繪制在圖形上,其中一個軸將始終是時間。
時間序列數據無處不在,因為時間是所有可觀察到的事物的組成部分。隨著我們對世界的儀器化程度越來越高,傳感器和系統不斷地發出無休止的時間序列數據流。這樣的數據在各個行業中都有大量應用。讓我們通過一些示例將其放在上下文中。
時間序列數據可用于:
跟蹤每,每小時或每周的天氣數據
跟蹤應用程序能的變化
醫療設備實時可視化生命體征
跟蹤網絡志
以下是一些時間序列數據的詳細示例。
時間序列示例
氣象記錄,經濟指標和患者健康發展指標-均為時間序列數據。時間序列數據還可以是指標,應用程序能監視,網絡數據,傳感器數據,事件,點擊和許多其他類型的分析數據。
請注意,時間(如下圖底部所示)是軸。
示例1:天氣情況
在下面的下一張圖表中,請注意時間作為衡量股價變化的軸。在投資中,時間序列會跟蹤數據點的移動,例如指定時間段內有價證券的價格,并定期記錄數據點。可以在短期(例如,一個工作內每小時的證券價格)或長期(例如在五年中的每個月的最后一天收盤價)上進行追蹤)。
示例2:股票交易所
下面的群集監視示例描述了磁盤作的寫入和使用情況數據,這是Network Operation Center團隊所熟悉的。請記住,監視數據是時間序列數據。
示例3:群集監視
時間序列數據的另一個常見示例是患者健康監測,例如心電圖(ECG),它可以監測心臟的活動以顯示其是否正常工作。
示例4:健康監控
除了按固定的時間間隔捕獲之外,還可以隨時捕獲時間序列數據,無論時間間隔如何,例如在志中。志是事件,進程,消息以及軟件應用程序與作系統之間的通信的注冊表。每個可執行文件都會生成一個志文件,其中記錄了所有活動。志數據是分類和解決問題的重要上下文資源。例如,在聯網中,事件志有助于提供有關網絡流量,使用情況和其他條件的。
示例5:志
跟蹤(應用程序在執行過程中執行的子例程調用的列表)也是時間序列數據。在下面的跟蹤圖中的彩色帶上,您可以看到時間序列數據的示例。跟蹤的目的是跟蹤程序的流程和數據進度。跟蹤包含對應用程序的廣泛,連續的視圖,以查找程序或應用程序中的錯誤。
示例6:痕跡
上面的示例包含兩種不同類型的時間序列數據,如下所述。時間序列數據的類型時間序列數據可以分為兩種類型:
1、以固定的時間間隔收集度量(度量標準)
2、以不規則的時間間隔(事件)收集測量結果
在上面的“時間序列數據示例”部分中:
示例3(集群監視)和示例4(運行狀況監視)描述了 指標。
示例5(志)和6(跟蹤)描述了 事件。
因為事件以不規則的間隔發生,所以事件是不可的,因此無法建模或,因為假設過去發生的任何事情都可以很好地指示將來發生的事情。
線與非線時間序列數據
線時間序列是一個線時間序列,其中對于每個數據點X t,該數據點都可以視為過去或將來的值或差異的線組合。非線時間序列是由非線動力學方程生成的。它們具有無法通過線過程建模的特征:時變方差,不對稱循環,更高矩的結構,閾值和中斷。使用線和非線時間序列數據時,有一些重要的注意事項:
如果回歸方程不遵循線模型的規則,則它必須是非線模型。
非線回歸可以擬合各種曲線。
兩種模型的定義特征是功能形式。
識別時間序列數據時間序列數據 的獨特之處在于它具有自然的時間順序:觀察數據的順序很重要。時間序列數據與常規數據的主要區別在于,隨著時間的推移,您總是會提出有關它的問題。確定您正在使用的數據集是否為時間序列的一種通常簡單的方法是查看您的坐標軸是否為時間。
時間序列注意事項
不變 –由于時間序列數據按時間順序排列,因此幾乎總是將其記錄在新條目中,因此,它應該是不變的,并且只能追加(附加到現有數據中)。它通常不會更改,而是按照事件發生的順序進行處理。此屬將時間序列數據與通常是易變的關系數據區分開來,并存儲在進行在線事務處理的關系數據庫中,在此關系數據庫中,行隨著事務的運行而更新,或多或少地隨機更新。例如,以一個現有客戶的訂單為例,更新客戶表以添加已購買的項目,還更新庫存表以顯示它們不再可供出售。
時間序列數據是有序的,這使得它在數據空間中是唯一的,因為它經常顯示出序列依賴。當某個時間點的數據點的統計值在另一時間統計地依賴于另一個數據點時,就會發生串行依賴(有關此主題的詳細說明,請閱讀“時序數據中的自相關”)。
盡管沒有時間以外的事件存在,但也有一些時間與時間無關的事件。時間序列數據不僅涉及按時間順序發生的事情,還涉及將時間添加為軸時其價值增加的事件。時間序列數據有時會以較高的粒度級別存在,頻率通常為微秒或什至納秒。有了 時間序列數據,隨時間變化就是一切。
時間序列數據的不同形式 –時間序列數據并不總是數字的-它可以是int,float,bool或stng。時間序列數據與橫截面和面板數據要確定您的數據是否為時間序列數據,請確定在數據集中確定唯一記錄所需的條件。
如果您只需要一個時間,則可能是時間序列數據。
如果您需要除時間之外的其他內容,則可能是橫截面數據。
如果您需要時間以及其他內容(例如ID),則可能是面板數據。
回顧以下三種數據類型中的每一種的定義(以及它們之間的區別),上述含義將變得更加清楚
InfluxDB教程
開始使用InfluxDB任務
一個InfluxDB任務是預定流量腳本,需要輸入數據,修改流或分析它以某種方式,存儲在一個新的桶或執行其他作修改的數據。
本文逐步編寫了一個基本的InfluxDB任務,該任務對數據進行降采樣并將其存儲在新的存儲桶中。
任務的組成部分
每個InfluxDB任務都需要以下四個組件。它們的形式和順序可以變化,但是它們都是任務的重要組成部分。
任務選項
資料來源
數據處理或轉換
目的地
定義任務選項
任務選項定義有關任務的特定。以下示例說明了如何在Flux腳本中定義任務選項:
InfluxDB用戶界面(UI)中創建任務時,任務選項在表單字段中定義。
定義數據源
使用Fluxfm()函數 或任何其他Flux輸入函數定義數據源。
為方便起見,請考慮創建一個變量,該變量包括具有所需時間范圍的源數據和任何相關過濾器。
在Flux腳本中使用任務選項
任務選項作為task選項記錄的一部分傳遞,可以在您的Flux腳本中引用。在上面的示例中,時間范圍定義為-task.ry。
task.ry是點符號,它引用ry了task選項記錄的屬。 ry定義為1h,因此-task.ry等于-1h。
使用任務選項在Flux腳本中定義值可以使重用任務更加容易。
處理或轉換您的數據
任務的目的是以某種方式處理或轉換數據。具體發生什么以及輸出數據采用什么形式取決于您和您的特定用例。
考慮帶有偏移量的潛在數據
要考慮潛在數據(例自邊緣設備的數據流),請在任務中使用偏移量。例如,如果您使用選項ry: 1h和將小時任務間隔設置為小時,則offset: 5m任務將在任務間隔后5分鐘執行,但查詢now()時間以確切的小時為單位。
下面的示例說明了通過計算設置間隔的平均值對數據進行下采樣的任務。它使用上面data定義的變量作為數據源。,將數據分成5分鐘的間隔,并使用函數計算每個窗口的平均值。aggregateWindow()
定義目的地
在絕大多數任務用例中,數據一旦轉換,就需要發送并存儲在某個地方。這可以是一個單獨的存儲桶或其他度量。
以下示例使用Fluxto()函數 將轉換后的數據發送到另一個存儲桶:
為了將數據寫入InfluxDB,你必須有_time,_measurement,_field,和_value列。
完整的示例任務腳本
下面是一個任務腳本,其中包含上述所有組件:
創建一個任務
InfluxDB提供了多種在InfluxDB用戶界面(UI)和influx命令行界面(CLI)中創建任務的方式。
從數據資源管理器創建任務
1、在左側的導航菜單中,選擇瀏覽(Data Explorer)。
2、生成查詢,單擊右上角的“另存為”。
3、選擇任務選項。
4、指定任務選項。 有關每個選項的詳細,請參見任務選項。
5、從令牌下拉列表中選擇要使用的令牌。
6、單擊另存為任務。
在任務界面中創建任務
1、在左側的導航菜單中,選擇任務。
2、點擊 在右上方創建任務。
3、選擇新建任務。
4、在左側面板中,指定任務選項。有關每個選項的詳細,請參見任務選項。
5、從令牌下拉列表中選擇要使用的令牌。
6、在右側面板中,輸入您的任務腳本。
省略選項任務分配
在InfluxDB任務UI中創建新任務時,請忽略option task 定義任務選項的分配。 保存任務時,InfluxDB UI使用左側面板中“任務選項”字段中指定的設置注入此代碼。
7、點擊右上角的保存。
導入任務
1、在左側的導航菜單中,選擇任務。
2、點擊右上角的+創建任務。
3、選擇導入任務。
4、使用以下選項之一上傳ON任務文件:
5、將ON任務文件拖放到指定區域中。
6、點擊上傳,從文件管理器中選擇ON任務區域。
7、選擇ON選項,粘貼原始任務ON。
8、點擊導入ON作為Task。
從模板創建任務
1、在左側的導航菜單中,選擇設置>模板。
2、選擇模板。
3、將鼠標懸停在模板上以用于創建任務,點擊創建。
克隆任務
1、在左側的導航菜單中,選擇任務。
2、將鼠標懸停在要克隆的任務上,單擊 出現的圖標。
3、單擊克隆。
使用Influx CLI創建任務
使用influx task 命令創建新任務。它接受文件路徑或原始Flux。
使用文件創建任務
使用原始Flux創建任務