博客 / 詳情

返回

觀測雲接收 OpenTelemetry Collector 數據最佳實踐

OpenTelemetry 簡介

如果你在做系統運維或開發,建設可觀測性必然是近年來一個少不了的課題,同時相信你對 OpenTelemetry 也一定不陌生。OpenTelemetry 提供了一個統一、開放且不受特定廠商限制的標準和工具集,使得我們可以一次性集成 OTel SDK,全面採集應用的指標、日誌和鏈路追蹤數據,並自由地將數據發送到任何支持 OTel 協議的後端。

觀測雲

觀測雲是一個統一實時監測平台,它提供全面的系統可觀測性解決方案,可以幫助我們快速實現對雲平台、雲原生、應用及業務的監控需求。觀測雲的核心功能包括:基礎設施監測,日誌採集和分析,用户訪問監測(RUM),應用性能監測(APM),服務可用性監測(撥測),安全檢測(SIEM),智能監控等等。

更多信息可以訪問觀測雲官網:https://www.guance.com

DataKit 統一數據採集器

DataKit 是觀測雲的統一數據採集器,能夠全面採集各類可觀測數據。通過豐富的插件生態和簡單的配置,DataKit 可以靈活部署在各種操作系統和容器環境中,高效地將數據發送至觀測雲平台,從而快速構建一個統一、完整的可觀測性體系。

DataKit 採用了插件化的設計,內置了大量現成的採集插件,包括但不限於:

  • 主流的雲平台,操作系統,容器平台(全面採集集羣、節點、Pod、容器的性能指標和日誌);
  • 主流的數據庫(如 MySQL、PostgreSQL)、消息隊列(如 Kafka、RabbitMQ)、Web服務器(如 Nginx、Apache)等;
  • 同時也能夠接收第三方開源工具的數據,包括 StatsD、Telegraf、Prometheus 等協議,也包括 OpenTelemetry。

DataKit 接收 OpenTelemetry Collector 數據

DataKit 引進了 OpenTelemetry 設計理念,兼容 OTLP 協議,同時,也支持接收 OpenTelemetry Collector 推送的 APM 鏈路調用數據。在有些場景下,例如你已經通過 OpenTelemetry Collector 實現了尾部採樣,這時候就可以將數據發送到 DataKit,統一在觀測雲中進行查看和分析。

通過 DataKit 接收 OpenTelemetry Collector 鏈路數據的主要流程如下:

  1. 前提條件:應用服務已經部署,並已配置 OpenTelemetry Exporter 和 Collector,從而將應用服務的鏈路調用即 APM 數據,通過 OTLP gRPC 或 HTTP 協議,上報到 OpenTelemetry Collector;
  2. 部署 DataKit,開啓 OpenTelemetry 採集器,使用 4319 端口接收 OpenTelemetry Collector 的數據;
  3. 配置 OpenTelemetry Collector 的 Exporter config 文件,將鏈路數據發送到 DataKit。

主要流程如下圖所示:

圖片

部署 DataKit

以 K8s 中部署為例,可以參考在線文檔:https://docs.guance.com/datakit/datakit-daemonset-deploy/

開啓 OpenTelemetry 採集器:

  • datakit.yamlDaemonSet 下面新增 volumeMounts
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: daemonset-datakit
  name: datakit
  namespace: datakit
spec:
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: daemonset-datakit
  template:
    metadata:
      labels:
        app: daemonset-datakit
    spec:
      hostNetwork: true
      dnsPolicy: ClusterFirstWithHostNet
      containers:
      ...
      volumeMounts:
        - mountPath: /usr/local/datakit/conf.d/opentelemetry/opentelemetry.conf
          name: datakit-conf
          subPath: opentelemetry.conf
      ....
  • datakit.yamlConfigMap data 下新增 opentelemetry.conf
apiVersion: v1
kind: ConfigMap
metadata:
  name: datakit-conf
  namespace: datakit
data:
    opentelemetry.conf: |-
        [[inputs.opentelemetry]]
            [inputs.opentelemetry.grpc]
            trace_enable = true
            metric_enable = true
            addr = "0.0.0.0:4319" 
            [inputs.opentelemetry.http]
            enable = false
            http_status_ok = 200
  • 重啓 DataKit

更多詳細信息,可以參考:https://docs.guance.com/integrations/opentelemetry/

部署和配置 Opentelemetry Collector

1. 安裝 Collector

可參考 OpenTelemetry 官方文檔:https://opentelemetry.io/docs/collector/installation/

2. config.yaml 配置

/etc/otelcol/config.yaml 配置文件詳情:

Opentelemetry Collector 配置文件定義了 Receivers 的來源、Processors 併發數據配置、以及 Exporters 導出的端點。此處主要關注:

  • Receivers:定義接收來自應用服務的 Opentelemetry gRPC/HTTP 服務監聽
  • Exporters:定義了數據轉發到標準 otlp 的後端,即 DataKit

config.yaml 參考示例:

receivers:
  otlp:
    protocols: # 接收 Java 代理數據的協議和端口,按實際需要配置
      grpc:
        endpoint: 0.0.0.0:4317 
      http:
        endpoint: 0.0.0.0:4318

processors:
  batch:  # 批處理提高性能
    timeout: 1s
    send_batch_size: 1000
  resource:  # 添加額外標籤的處理器
    attributes:
      - key: environment
        value: production
        action: insert

exporters:
  otlp:
    endpoint: "127.0.0.1:4319"   # datakit 暴露的 otel-endpoint,端口為 4319
    tls:
      insecure: true
    compression: none # 不開啓gzip

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch, resource]
      exporters: [otlp]

重載 systemd 並啓動 otelcol 服務:

systemctl daemon-reload
systemctl enable otelcol
systemctl restart otelcol

更多詳細信息,可以參考:https://docs.guance.com/best-practices/cloud-native/opentelem...

3. 安裝驗證

驗證 Collector 是否正常運行:

systemctl status otelcol  # 檢查服務狀態
journalctl -u otelcol -f  # 查看日誌

數據正常上報後,在觀測雲中可以查看應用性能監測的鏈路數據:

圖片

總結

通過 DataKit 接收 OpenTelemetry Collector 的應用鏈路數據,可以幫助我們快速實現一個靈活的可觀測性數據管理體系。我們既可以利用 OpenTelemetry 的標準化能力,統一採集各種可觀測數據,又可以利用 DataKit 強大的數據處理和集成功能,將這些數據統一傳輸到觀測雲平台,充分利用觀測雲平台提供的全面分析和可視化能力,並能協同其他維度的可觀測數據進行統一查詢分析。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.