將 InfluxDB 用作持續性提供者
概觀
如果您的系統集中處理時間序列資料,而且您的實行重度依賴於值串流或串流以實現資料持續性/擷取,我們建議在 ThingWorx 中使用 InfluxDB 作為
持續性提供者。InfluxDB 是專門針對時間序列資料所撰寫的一個高效能資料存放區。其允許對該相同資料執行高輸送量的內嵌、壓縮與即時查詢。對於牽涉大量加上時間戳記之資料的使用案例而言,可將 InfluxDB 作為資料存放區使用,這些資料包括 DevOps 監視、記錄資料、應用程式指標、IoT 感應器資料以及即時分析。此外,它還提供包括「資料保留原則」(RP) 等在內的其他功能。InfluxDB Enterprise 針對時間序列資料需求提供了具有高可用性且可高度調整的叢集解決方案。
InfluxDB 資料持續性儲存提供者可作為用於內容提供者之 PostgreSQL、MSSQL 或 Azure SQL 預設安裝的一部份使用:
• InfluxPersistenceProviderPackage
• Influx2PersistenceProviderPackage
ThingWorx 支援 OSS、Enterprise 和 Cloud 版本。
• 透過 InfluxPersistenceProviderPackage 支援 InfluxDB OSS 1.x 和 InfluxDB Enterprise 1.x。僅 INfluxDB 1.x 支援 InfluxDB Enterprise
• 透過 Influx2PersistenceProviderPackage 支援 InfluxDB OSS 2.x。
• 僅透過 Influx2PersistenceProviderPackage 支援 InfluxDB Cloud
有關特定的受支援版本,請參閱
Release Advisor。
|
對 Influx 2.0 的支援已從 9.3.1 新增至 ThingWorx
|
|
InfluxDB 資料提供者目前僅支援值串流與串流。目前不提供對於資料表、wiki 及部落格的支援。
|
|
InfluxPersistenceProviderPackage 支援資料匯出,從 ThingWorx 9.3.8 開始,Influx2PersistenceProviderPackage 支援資料匯出。
|
|
想要升級至 ThingWorx 9.3.9 及更高版本、ThingWorx 9.4.0 及更高版本,以及使用 InfluxDB OSS 2.0 以利用 Influx2PersistenceProviderPackage 的客戶,首先需要升級至 ThingWorx 9.3.8 以便移至 InfluxDB OSS v2.6,因為必須先進行匯出,才能升級至 InfluxDB v2.6。對於 InfluxDB Cloud,無需先匯出再進行升級,因此,在升級至 ThingWorx 9.3.9 及最高版本以及 ThingWorx 9.4.0 及更高版本前,無需先移至 ThingWorx 9.3.8。
|
InfluxDB Enterprise 與 ThingWorx 初期規劃
| 上圖包含 InfluxDB Enterprise。對於 InfluxDB 開放原始碼,架構圖表將會相同,不過它只使用一個節點。對於 InfluxDB Cloud,資料庫於 ThingWorx 環境外部託管,並由 InfluxData 公司負責管理。 |
在本文件集中,當提及 InfluxDB Enterprise 的組態時,會使用下列術語:
• 負載平衡器 - InfluxDB Enterprise 不會像負載平衡器一樣運作。管理員需要對其進行配置。
• 叢集 - InfluxDB Enterprise 叢集由兩種類型的節點組成:中繼節點與資料節點。
• 資料節點 - 所有原始時間序列資料都位於此處。如需獲得高可用性,您需要複寫因數至少為二。
• 中繼節點 - 這些節點都有簡單的工作,可保持狀態的一致性。它們只包含關於狀態的基本資訊,例如保留原則、使用者與資料庫。在高可用性環境下,至少需要三個中繼節點。
選擇正確的 Influx 資料庫選項
以下是目前可供 PTC 內部客戶使用的兩個 InfluxDB 選項的高層級概述。當選擇 Influx 產品時,應仔細考慮資料庫軟體選項與基礎支援選項。如需有關選擇正確資料庫選項的任何問題,請聯絡 Influx 支援:
https://www.influxdata.com/contact-sales。PTC 客戶應將自己識別為 PTC ThingWorx 使用者。
• InfluxDB 開放原始碼 (單一節點)
◦ 僅限單一節點,不可擴充。
◦ 自由
◦ 由於 Influx 技術支援存在限制 (不能針對緊急狀況提供即時 Influx 支援),因此不建議將其用於生產實例。
◦ PTC 客戶負責資料庫維護與監測。
◦ PTC 將提供最佳 Influx 建議,但某些情況可能需要上報 Influx 技術資源。
• InfluxDB Enterprise
如果您要在資料存放區中尋找相對於目前可用於其他資料庫的資料而言資料量更大且速度更快的資料,InfluxDB Enterprise 具有下列優點:
◦ 擷取資料的速度更快。
◦ 您可以使用多個資料存放庫存放執行時間資料。例如,您可將關聯式資料存放在 PostgreSQL 中,同時使用 InfluxDB 來存放大量串流與值串流資料。您在定義串流或值串流時,ThingWorx 會使用預設執行時間資料存放區提供者,不過您可將其配置為使用任何定義的持續性提供者。您仍可從其他資料提供者匯出資料並將資料匯入至 InfluxDB。ThingWorx 會處理資料提取。
◦ 適合雲端的架構 (水平調整,僅適用於 InfluxDB Enterprise)。
◦ 提供高可用性。
◦ Influx 合約包含 Influx 技術支援,將使用 Influx 支援網站提供,位於
InfluxData。
◦ PTC 客戶可以根據需要針對 PTC/Influx 協同合作開啟 Influx 的工單。
◦ PTC 客戶負責資料庫維護與監測。
• InfluxDB Cloud (於 ThingWorx 環境外部託管並由 InfluxData 公司負責管理)
InfluxDB Cloud 具有以下優點:
◦ InfluxDB Cloud 建構為雲端原生、多用戶、彈性擴充、無伺服器平台。
◦ 在 AWS、Google 和 Azure 上跨多個區域提供可用性、耐久性和可擴充性。
◦ 安裝並配置了所有最新的安全功能和修補程式,安全性得到了進一步強化。
◦ InfluxDB Cloud 可自動重新平衡叢集、處理分片,並利用內建複製係數。
安裝與配置 InfluxDB
| 誰安裝 Influx 資料庫,誰就必須負責閱讀及瞭解針對 InfluxDB 提供的所有安全性相關文件集。PTC 強烈建議使用安全組態安裝及配置 InfluxDB,包括使用使用者名稱與強式密碼。 |
| 如果 InfluxDB 與 ThingWorx 位於具有不同時區電腦上,擷取資料可能會發生問題。若要避免發生這些問題,建議使用下列任一部署選項: • 在相同的主機/電腦上部署 InfluxDB 與 ThingWorx。 • 如果 InfluxDB 與 ThingWorx 部署在不同的主機/電腦上,InfluxDB 伺服器時區應與時鐘已同步處理的 -Duser.timezone Tomcat 參數對齊,以避免出現與查詢結果相關的問題。 |
1. 下載並安裝 Influx DB
◦ Influx DB 2.0 下載及安裝指南:
▪ InfluxDB Enterprise (高可用性):不適用於於 Influx 2.0
◦ Influx DB 1.x 下載及安裝指南:
| Windows 不支援 InfluxDB。下列步驟使用 UNIX 作業系統。 |
下載連結:
下載 links-Data 節點:
下載 links-Meta 節點:
2. 對於 Influx1
在 InfluxDB 中建立資料庫。取得並執行
thingworxInfluxDBSetup.sh 指令集以在 InfluxDB 中建立資料庫。InfluxDB 指令行介面必須可從執行指令集所在的位置使用。如需詳細資訊,請參閱
Launch influx。
| 您可在「PTC 支援入口網站」軟體下載封裝的 install 資料夾中取得 thingworxInfluxDBSetup.sh 指令集。 |
下列範例指令使用預設保留原則建立資料庫:
CREATE DATABASE thingworx with DURATION 365d REPLICATION 1 SHARD DURATION 30d NAME autogen
| InfluxDB 資料提供者目前支援僅含名稱 autogen 的保留原則。建立資料庫以與資料提供者搭配使用時,您可指定原則名稱及其他原則,例如複寫因數。 |
從 InfluxDB 指令行介面建立 InfluxDB 使用者。下列範例指令建立了使用者:
CREATE USER twadmin WITH PASSWORD 'password' WITH ALL PRIVILEGES
4. 在 ThingWorx Composer 中,建立新的持續性提供者。
5. 在「持續性提供者封裝」欄位中,選取
◦ 針對 Influx 2.0 之前的版本,請選取 InfluxPersistenceProviderPackage
◦ 針對 Influx 2.0 版,請選取 Influx2PersistenceProviderPackage
6. 按一下「儲存」
7. 按一下「組態」標籤,根據需要配置連線資訊,然後按一下儲存。請參考下列表格中的組態選項。
如果您使用持續性提供者實例 (使用 InfluxDB 持續性提供者封裝建立) 作為預設
持續性提供者,您可編輯下列串流與值串流佇列組態設定。這些設定將會套用至所有串流與值串流。您無法針對特定串流或值串流變更這些設定。
| 轉換值串流的持續性提供者 (例如,從 ThingworxPersistenceProvider 轉換為 InfluxPersistenceProviderPackage) 時,實行值串流的任何物件都必須呼叫 RestartThing 服務,才能擷取已寫入至新持續性提供者的項目。若未重新啟動物件,項目可能會被寫入至資料庫,不過,在重新啟動物件之前,系統不會擷取這些項目。 |
Influx 2.0 的連線資訊
名稱 | 描述 | 預設值 |
---|
「連線 URL」 | 您應從中擷取連線之資料庫的 URL。 | http://localhost:8086 |
權杖 | 用來存取系統的安全性權杖,可取代密碼使用。(如 appkey)。 | |
組織名稱 | 組織的名稱 | |
貯體名稱 | 資料貯體 (用來儲存所有資料的結構描述) 的名稱。 | |
自動建立貯體數 | 當設定為 true 時,若貯體不存在,會建立在 bucketName 中指定的貯體。否則,如果貯體不存在,會發生錯誤。 | False |
保留期 (天) | 保留資料的天數。資料將於此期間之後刪除。預設值為 0,此值可永久保留資料。 | 0 |
批次大小 | 這是 Influx 用戶端使用的批次大小。它會始終以批次方式傳送資料點,以提升效能。這是對串流批次大小的額外增加。當已準備好傳送批次大小資料點數時,會將資料傳送至 Influx。 | 1000 |
排清間隔 | 指示 Influx 用戶端在尚未達到其批次大小時將會排清資料的頻率。值以毫秒為單位指定。 | 1000 或每秒一次 |
從持續性提供者擷取資料大小 | 要批次擷取的列計數,而不是快取用戶端的所有列。 | 5000 |
連線逾時時間 | 嘗試連線至 Influx 的時間量。值以秒為單位指定。 | 10 |
讀取逾時時間 | 從 Influx 針對請求讀取資料的時間量。值以秒為單位指定。 | 10 |
寫入逾時時間 | 嘗試將資料寫入 Influx 的時間量。值以秒為單位指定。 | 對於 InFluxDB Cloud,PTC 建議將寫入逾時時間設定為 20 秒。 |
| 10 |
記錄層級 | Influx 用戶端與記錄檔的記錄層級會傳送至控制台輸出。值可以是 NONE、BASIC、HEADERS 或 BODY,其每個層級都提供更多的資訊。 | 無 |
Influx 1.8 的連線資訊
名稱 | 描述 | 預設值 |
---|
「連線 URL」 | 您應從中擷取連線之資料庫的 URL。 | http://localhost:8086 |
「資料庫結構描述」 | 要連線的結構描述。 | thingworx |
「使用者名稱」 | 擷取資料庫連線的使用者名稱。 | twadmin |
「密碼」 | 擷取資料庫連線的密碼。 | n/a |
從持續性提供者擷取資料大小 | 從持續性提供者擷取資料大小。 | 5000 |
連線逾時時間 | 以秒為單位的連線逾時時間。 | 10 |
讀取逾時時間 | 以秒為單位的讀取逾時時間。 | 10 |
寫入逾時時間 | 以秒為單位的寫入逾時時間。 | 10 |
Influx 1.8 與 2.0 的串流處理設定
名稱 | 描述 | 基礎類型 | 預設值 |
---|
「最大佇列大小」 | 可排入佇列的最大串流數。達到指定的值之後,系統會拒絕隨後的項目。 | 數值 | 250000 |
「排清串流緩衝區之前的最大等候時間 (以毫秒計)」 | 系統在排清串流緩衝區之前的等候毫秒數。 | 數值 | 2000 |
「處理執行緒數」 | 串流專用的處理執行緒數。 | 執行緒數越少,InfluxPersistenceProviderPackage 提供者的執行效能越高。此設定已經過最佳化,可以處理來自少量通道的資料。 對於 Influx2PersistenceProviderPackage,情況已非如此。PTC 建議增加執行緒數量,以改善輸送量。對於 InfluxDB Cloud,PTC 建議將處理執行緒數增加到 10、將最大佇列大小增加到 1000000、將流程區塊內的最大值串流寫入數增加到 25000,以達到 80,000 wps 的輸送量。 |
| 數值 | 5 |
「排清串流緩衝區之前的最大項目數」 | 排清串流緩衝區之前的累計最大項目數 | 數值 | 1000 |
「流程區塊內的最大值串流寫入數」 | 單一區塊中待處理的最大串流寫入數。 | 數值 | 2500 |
「緩衝區狀況掃描率 (以毫秒計)」 | 系統會以指定速率值 (以毫秒計) 檢查緩衝區狀況。 | 數值 | 5 |
Influx 1.8 與 2.0 的值串流處理設定
名稱 | 描述 | 基礎類型 | 預設值 |
---|
「最大佇列大小」 | 可排入佇列的最大值串流數。達到指定的值之後,系統會拒絕接下來的項目。 | 數值 | 500000 |
「排清值串流緩衝區之前的最大等候時間 (以毫秒計)」 | 系統在排清值串流緩衝區之前的等候毫秒數。 | 數值 | 10000 |
「處理執行緒數」 | 分配給值串流的處理執行緒數。 | 執行緒數越少,InfluxPersistenceProviderPackage 提供者的執行效能越高。此設定已經過最佳化,可以處理來自少量通道的資料。 對於 Influx2PersistenceProviderPackage,情況已非如此。PTC 建議增加執行緒數量,以改善輸送量。對於 InfluxDB Cloud,PTC 建議將處理執行緒數增加到 10、將最大佇列大小增加到 1000000、將流程區塊內的最大值串流寫入數增加到 25000,以達到 80,000 wps 的輸送量。 |
| 數值 | 5 |
「排清值緩衝區之前的最大項目數」 | 排清值串流緩衝區之前的累計最大項目數 | 數值 | 1000 |
「流程區塊內的最大值串流寫入數」 | 單一區塊中待處理的最大項目數。 | 數值 | 2500 |
「緩衝區狀況掃描率 (以毫秒計)」 | 系統會以指定速率值 (以毫秒計) 檢查緩衝區狀況。 | 數值 | 5 |
8. 按一下
「一般資訊」標籤,然後選取
「使用中」核取方塊。
![](../../../../../ThingWorx/images/influxdb_04.png)
9. 按一下「儲存」
最佳實務
序列限制
序列是記錄到 InfluxDB 中所有物件之內容的總數。如果將較大的資料量導向至少量物件與物件內容,例如 10K 或 100K,InfluxDB 的執行效能會比較高。在 InfluxDB 中,序列總數預設限制為 100 萬。您可增加此限制,但 InfluxDB 的效能會隨著序列數超出此限制而降低。
如果您有大量物件與內容,可選擇資料量最大的那些物件與內容,並僅將其指向 InfluxDB,以減輕 PostgreSQL 或 MSSQL 的壓力。
或者,如果您要將序列分散到多個伺服器,也可以將 InfluxDB 資料提供者的多個實例指向不同的 InfluxDB 伺服器實例。
寫入限制
60 gb 記憶體的 32 核心 VM 每秒寫入 100K。超出此限制可能會導致 ThingWorx 發生問題,而且可能會用盡資源來處理任何請求或工作,例如寫入至資料庫。此時,ThingWorx 會變為停止,而 InfluxDB 仍然會寫入至資料庫。PostgreSQL 不會發生此問題,因為 PostgreSQL 會變為瓶頸,而 ThingWorx 永遠不會落到耗盡資源以致無法處理內部任務的境地。
SSL/安全連線
InfluxDB 支援 SSL 與 HTTPS 連線。如果不支援 ThingWorx 與 InfluxDB 之間的網路,您可以啟用 SSL 與 HTTPS 連線以增加安全性。如果簽署的私密金鑰保持安全,自我簽署的憑證即已足夠。
內容基礎類型的已知 InfluxDB 限制
清除內容
PurgeAllPropertyHistory、PurgeSelectedPropertyHistory 與 PurgePropertyHistory 服務可用來從 InfluxDB 清除內容。使用 startDate 與 endDate 參數可指定範圍。
| 使用 Influx2PersistenceProviderPackage 提供者時,不支援清除。PurgePropertyHistory、PurgeAllPropertyHistory 和 PurgeSelectedPropertyHistory 服務無效。 |