菜单
文档breadcrumb arrow Grafana Tempobreadcrumb arrow 设置breadcrumb arrow 为 Tempo 集群设置测试应用程序
开源

为 Tempo 集群设置测试应用程序

设置 Grafana Tempo 集群后,您需要向其写入一些跟踪,然后从 Grafana 中查询这些跟踪。此过程使用微服务模式下的 Tempo。例如,如果您使用 Kubernetes 和 Tanka 过程设置了 Tempo,则可以使用此过程测试您的设置。

开始之前

您需要

  • Grafana 10.0.0 或更高版本
  • 微服务部署需要 Tempo 查询器 URL,例如:http://tempo-cluster-query-frontend.tempo.svc.cluster.local:3100/
  • 用于生成跟踪数据的 OpenTelemetry telemetrygen

如果您使用 Kubernetes,请参阅在 Kubernetes 上部署 Grafana。否则,请参阅安装 Grafana 了解更多信息。

配置 Grafana Alloy 以远程写入 Tempo

本节使用Grafana Alloy Helm chart 部署将跟踪发送到 Tempo。

为此,您需要创建一个 Alloy 可以用来接收和导出 OTLP protobuf 格式跟踪的配置。

  1. 创建一个新的 values.yaml 文件,我们将把它用作 Alloy 安装的一部分。

  2. 编辑 values.yaml 文件并添加以下配置

    yaml
    alloy:
      extraPorts:
        - name: otlp-grpc
          port: 4317
          targetPort: 4317
          protocol: TCP
      configMap:
        create: true
        content: |-
          // Creates a receiver for OTLP gRPC.
          // You can easily add receivers for other protocols by using the correct component
          // from the reference list at: https://grafana.org.cn/docs/alloy/latest/reference/components/
          otelcol.receiver.otlp "otlp_receiver" {
            // Listen on all available bindable addresses on port 4317 (which is the
            // default OTLP gRPC port) for the OTLP protocol.
            grpc {
              endpoint = "0.0.0.0:4317"
            }
    
            // Output straight to the OTLP gRPC exporter. We would usually do some processing
            // first, most likely batch processing, but for this example we pass it straight
            // through.
            output {
              traces = [
                otelcol.exporter.otlp.tempo.input,
              ]
            }
          }
    
          // Define an OTLP gRPC exporter to send all received traces to GET.
          // The unique label 'tempo' is added to uniquely identify this exporter.
          otelcol.exporter.otlp "tempo" {
              // Define the client for exporting.
              client {
                  // Send to the locally running Tempo instance, on port 4317 (OTLP gRPC).
                  endpoint = "http://tempo-cluster-distributor.tempo.svc.cluster.local:4317"
                  // Disable TLS for OTLP remote write.
                  tls {
                      // The connection is insecure.
                      insecure = true
                      // Do not verify TLS certificates when connecting.
                      insecure_skip_verify = true
                  }
              }
          }

    确保您为 OTLP 导出器使用安装 Tempo 的特定命名空间。在该行中

    yaml
    endpoint = "http://tempo-cluster-distributor.tempo.svc.cluster.local:3100"

    tempo 更改为引用 Tempo 安装所在的命名空间,例如:http://tempo-cluster-distributor.my-tempo-namespaces.svc.cluster.local:3100

  3. 使用 Helm 部署 Alloy

    bash
    helm install -f values.yaml grafana-alloy grafana/alloy

    如果您将 Alloy 部署到特定的命名空间,请先创建该命名空间,然后通过在命令末尾添加 --namespace=<grafana-alloy-namespace> 来指定给 Helm。

创建 Grafana Tempo 数据源

要允许 Grafana 从 Tempo 读取跟踪,您必须创建一个 Tempo 数据源。

  1. 导航到 连接 > 数据源

  2. 点击 添加数据源

  3. 选择 Tempo

  4. 将 URL 设置为 http://<TEMPO-QUERY-FRONTEND-SERVICE>:<HTTP-LISTEN-PORT>/,填写 Tempo 查询前端服务的路径和配置的 HTTP API 前缀。如果您遵循了使用 Helm 部署 Tempo 的安装示例,查询前端服务的 URL 看起来会像这样:http://tempo-cluster-query-frontend.<namespace>.svc.cluster.local:3100

  5. 点击 保存并测试

您应该看到一条消息,显示 数据源工作正常

可视化您的数据

创建数据源后,您可以在 Grafana Explore 页面中可视化您的跟踪。有关更多信息,请参阅Grafana 中的 Tempo

使用 OpenTelemetry telemetrygen 生成跟踪数据

您可以使用 OpenTelemetry telemetrygen 来生成跟踪数据,以测试您的 Tempo 安装。

这些说明使用之前用到的 Grafana Alloy 和 Tempo 分发器的端点,例如

  • grafana-alloy.grafana-alloy.svc.cluster.local 用于 Grafana Alloy
  • tempo-cluster-distributor.tempo.svc.cluster.local 用于 Tempo 分发器

如果您更改了端点目标,请更新端点。

  1. 使用安装过程安装 telemetrygen注意:您不需要配置 OpenTelemetry Collector,因为我们正在使用 Grafana Alloy。

  2. 使用 telemetrygen 生成跟踪

    bash
    telemetrygen traces --otlp-insecure --rate 20 --duration 5s --otlp-endpoint grafana-alloy.grafana-alloy.svc.cluster.local:4317

此配置以每秒 20 个跟踪的速度向 Alloy 发送跟踪,持续 5 秒。

或者,您也可以使用以下方法将跟踪直接发送到 Tempo 数据库,而无需使用 Alloy 作为收集器

bash
telemetrygen traces --otlp-insecure --rate 20 --duration 5s --otlp-endpoint tempo-cluster-distributor.tempo.svc.cluster.local:4317

如果您在本地机器上运行 telemetrygen,请确保您首先端口转发到相关的 Alloy 或 Tempo 分发器服务,例如

bash
kubectl port-forward services/grafana-alloy 4317:4317 --namespace grafana-alloy
  1. 或者,可以基于此模板创建一个 cronjob 来定期发送跟踪
apiVersion: batch/v1
kind: CronJob
metadata:
  name: sample-traces
spec:
  concurrencyPolicy: Forbid
  successfulJobsHistoryLimit: 1
  failedJobsHistoryLimit: 2
  schedule: "0 * * * *"
  jobTemplate:
    spec:
      backoffLimit: 0
      ttlSecondsAfterFinished: 3600
      template:
        spec:
          containers:
          - name: traces
            image: ghcr.io/open-telemetry/opentelemetry-collector-contrib/telemetrygen:v0.96.0
            args:
              - traces
              - --otlp-insecure
              - --rate
              - "20"
              - --duration
              - 5s
              - --otlp-endpoint
              - grafana-alloy.grafana-alloy.svc.cluster.local:4317
          restartPolicy: Never

查看跟踪数据

  1. 前往 Grafana 并选择 Explore

  2. 从数据源列表中选择 Tempo 数据源

  3. 选择 搜索 查询类型。

  4. 选择 运行查询

  5. 确认跟踪数据在跟踪 Explore 面板中显示。您应该看到 5 秒内的跟踪数据,每次运行 telemetrygen 总共生成 100 个跟踪。

使用 Intro to MLTP 应用程序测试您的配置

Intro to MLTP 应用程序提供了一个示例五服务应用程序,该应用程序为 Tempo、Mimir、Loki 和 Pyroscope 生成数据。此过程会将应用程序安装到您的集群中,以便您生成有意义的测试数据。

  1. 导航至 https://github.com/grafana/intro-to-mltp 获取 Intro to MLTP 应用程序的 Kubernetes manifests。
  2. 使用类似于以下命令克隆仓库
    bash
      git clone git+ssh://github.com/grafana/intro-to-mltp
      cp intro-to-mltp/k8s/mythical/* ~/tmp/intro-to-mltp-k8s
  3. 切换到克隆的仓库:cd intro-to-mltp/k8s/mythical
  4. mythical-beasts-deployment.yaml manifest 中,修改每个 TRACING_COLLECTOR_HOST 环境变量实例的值,使其指向 Grafana Alloy 的位置。例如,基于安装在默认命名空间且 Helm 安装名称为 test 的 Alloy
    yaml
     	- env:
         ...
         - name: TRACING_COLLECTOR_HOST
           value: grafana-alloy.grafana-alloy.svc.cluster.local
  5. 部署 Intro to MLTP 应用程序。它将被部署到默认命名空间。
    bash
        kubectl apply -f mythical-beasts-service.yaml,mythical-beasts-persistentvolumeclaim.yaml,mythical-beasts-deployment.yaml
  6. 应用程序部署完成后,前往 Grafana Enterprise 并选择 Explore 菜单项。
  7. 从数据源列表中选择 Tempo 数据源
  8. 为数据源选择 搜索 查询类型。
  9. 选择 运行查询
  10. 应用程序的跟踪数据将显示在跟踪 Explore 面板中。