HOME > 解決方案

為什麼要使用 OpenTelemetry 處理器來改變收集的後端資料

2021/12/30
開發營運



在管理分散式環境時,我們必須不斷尋找不同的方法來更加瞭解效能。遙測資料對於解決此類挑戰以及幫助開發營運 (DevOps) 和 IT 團隊瞭解這些系統的行為和效能非常重要。為了充分利用遙測資料,我們必須捕獲和分析它,然後新增標記等相關內容,同時確保維護使用者和業務資料的安全性和效率。在資料發送到可觀察性系統之前,OpenTelemetry 收集器及其處理能力可以協助進行相關操作。

Splunk Observability Cloud 的核心使用的是 OpenTelemetry 可觀察性架構。大多數其他可觀察性廠商也會使用 OpenTelemetry 資料。OpenTelemetry 提供不限廠商的 API 和軟體開發工具套件 (SDK),可用於從雲端原生應用程式及其支援的基礎架構收集遙測資料,OpenTelemetry Collector 會彙整這些資料並將其發送到 Splunk 等商業分析系統或如 Prometheus 等開放原始碼系統。收集器使用幾個元件 (接收器、處理器和匯出工具) 來接收、處理和匯出指標和追蹤資料。我們進一步示範處理器可以如何處理應用程式遙測資料,以實現更好的安全性和效率。 

處理器如何幫助保護和提高應用程式遙測送達後端服務的效率? 
在一個追蹤事件的 OpenTelemetry 工作流量中,應用程式產生追蹤資料,接收器接收,再由處理器處理,最後由匯出工具匯出。OpenTelemetry Collector 的 Splunk 發行版本支援使用於不同案例的多種處理器。例如,屬性處理器負責使用收集器設定中定義的支援動作來修改一個日誌或追蹤中的跨度屬性。對跨度內發送到後端服務的特定標籤採取動作。

屬性處理器支援的動作如下: 
•    插入:在鍵值不存在的跨度中插入新屬性。
•    更新:在鍵值存在的跨度中更新屬性。
•    插入:執行插入或更新。在鍵值不存在的跨度中插入新屬性,並在鍵值存在的跨度中更新屬性。
•    刪除:從跨度中刪除屬性。
•    雜湊:雜湊 (SHA1) 是一個現有屬性值。
•    擷取:使用正則表達式規則從輸入鍵值中擷取鍵值,存到規則中指定的目標鍵值。如果目標鍵值已經存在,就將其覆寫。 
 
假設我們對工作負載使用的自動檢測中包含必須保護的遙測。例如,如果客戶 ID 標籤是客戶的電子郵件地址,您或許不希望將它儲存到可觀察性系統中。在這種情況下,利用雜湊是一個理想的選擇,您可以使用 SHA1 將屬性內容雜湊,再匯出到 Splunk Observability Cloud。透過這項動作,敏感資料將轉換為您可以放心儲存的字串,因為雜湊處理是不可逆的。另一個選擇是刪除,可以從匯出到服務的遙測中完全刪除屬性。 
批次處理器是另一個很好的例子。批次處理器可處理跨度、指標或日誌並將它們放入批次處理中,以便壓縮資料並減少傳輸資料所需的傳出連線數。強烈建議在每個收集器上設定批次處理器,以提高發送資料到可觀察性系統的整體效率。

批次處理器的設定選項包括:
•    send_batch_size (default = 8192):跨度、指標資料點或日誌的數量,超過後無論時間是否到了都會發送一個批次。
•    timeout (default = 200ms):發送一個批次的時間長度 (無論資料量為何)。
•    send_batch_max_size (default = 0):批次大小的上限。0 表示批次大小沒有上限。此屬性可將較大的批次拆成幾個部分。它必須大於或等於 send_batch_size。 

處理器是如何實作的? 
若要實作處理器,我們必須先瞭解 OpenTelemetry 設定檔的基礎知識。OpenTelemetry Collector 設定檔是使用 YAML 編寫的,由以下內容組成,以建立一個管道 。 



 
•    接收器:如何獲取資料。接收器可以是推送或提取式的。
•    處理器:如何處理收到的資料。
•    匯出工具:發送接收到的資料。匯出工具可以是推送或提取式的。
•    擴充功能:提供除收集器主要功能之外的其他功能。
 
每個元件中都會在各自的區塊中定義好,並在服務中啟用。以下範例顯示以不同顏色標記的個別元件設定。接收器為黃色,處理器為綠色,匯出工具為藍色。本例中沒有定義擴充功能。在元件定義的下方是服務部分 (要追蹤的位置):otlp 是接收器,batch 是處理器,而 sapm 是匯出工具。這是 Splunk Observability Cloud 的建議設定,不過只要改變匯出工具,資料也可以發送到其他平台。



 
我們用一個真實的例子來說明。在下面的設定中,您可以看到屬性處理器現在被定義為雜湊任何名稱中有 “ssn” 的鍵值。請注意下面以粗體顯示的設定。我們使用雜湊並以適當的 YAML 格式標識 “ssn” 鍵值。

#Define each component.
Receivers:
  otlp:
   protocols:
     grpc:
       endpoint: localhost:4317
     http:
       endpoint: localhost:55681
processors:
 batch:
 #Definition for attributes processor.Delete any key that may contain "ssn".
 attributes:
  actions:
    - action: hash
      key: "ssn"
exporters:
 sapm:
   access_token:YOUR_TOKEN
   endpoint: https://ingest.us0.splunk.com/v2/trace
#Enable components.
service:
 pipelines:
   traces:
     receivers: [otlp]
     #attributes processor enabled.
     processors: [attributes]
     exporters: [sapm]

在沒有處理器的情況下,我們看到 span 以純文字形式顯示使用者的 SSN。 

 


有了處理器後,span 以一致但安全且無法讀取的格式顯示使用者的 SSN。任何對 SSN 為 123-45-6789 的追蹤,在可觀察性系統中都會使用相同的雜湊值。(注意:因為種種原因,我們強烈建議您不要在真正敏感的資料上使用這種方法,例如 SSN。使用這麼敏感的實際資料時,最佳作法是使用處理器刪除它,讓應用程式發送出不同的標籤。) 



 
如何取得 Splunk 發行版本的 OpenTelemetry 收集器設定檔? 
Splunk OpenTelemetry Collector 使用 agent_config.yaml 進行設定。Linux 版本位於 /etc/collector/otel (Debian/RPM)Windows 版本位於 \ProgramData\Splunk\OpenTelemetry Collector\。預設情況下,您會發現建議的啟動設定適用於大多數環境。 

如果您使用不同的發行版本,設定檔可能位於其他地方,但應該能夠以相同的方式操作,使用在廠商提供的任何處理器。

結論
處理器對於修改跨度的屬性、壓縮遙測資料以及幫助在遙測中包含或排除指標非常有用。重要的是,預設情況下 Splunk OpenTelemetry Collector 啟用了多個處理器,以最有效地與服務搭配使用。但根據資料來源和您的要求,可能會建議啟用其他處理器 (可選的)。 
想試用 Splunk Observability Cloud?您可以到此處註冊開始免費試用產品套件──涵蓋基礎架構監控和 APM,到真實使用者監控和日誌觀察。即時檢視您的基礎架構,立即開始更快速地解決微服務問題。

如果您是想要瞭解更多 OpenTelemetry 設定的現有客戶,請查看我們的文件。

 
作者
Johnathan Campos

Johnathan 是 Splunk 可觀察性團隊的一員,致力於對全世界推廣可觀察性。Johnathan 的職業生涯涵蓋 IT 管理到開發營運,再跨足到產品行銷管理。除了可觀察性,Johnathan 的專業興趣還包括培訓、開發營運文化和公開演講。Johnathan 擁有美國西部州長大學網路管理科學學士學位。