为 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
格式跟踪的配置。
创建一个新的
values.yaml
文件,我们将把它用作 Alloy 安装的一部分。编辑
values.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 的特定命名空间。在该行中
endpoint = "http://tempo-cluster-distributor.tempo.svc.cluster.local:3100"
将
tempo
更改为引用 Tempo 安装所在的命名空间,例如:http://tempo-cluster-distributor.my-tempo-namespaces.svc.cluster.local:3100
。使用 Helm 部署 Alloy
helm install -f values.yaml grafana-alloy grafana/alloy
如果您将 Alloy 部署到特定的命名空间,请先创建该命名空间,然后通过在命令末尾添加
--namespace=<grafana-alloy-namespace>
来指定给 Helm。
创建 Grafana Tempo 数据源
要允许 Grafana 从 Tempo 读取跟踪,您必须创建一个 Tempo 数据源。
导航到 连接 > 数据源。
点击 添加数据源。
选择 Tempo。
将 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
点击 保存并测试。
您应该看到一条消息,显示 数据源工作正常
。
可视化您的数据
创建数据源后,您可以在 Grafana Explore 页面中可视化您的跟踪。有关更多信息,请参阅Grafana 中的 Tempo。
使用 OpenTelemetry telemetrygen
生成跟踪数据
您可以使用 OpenTelemetry telemetrygen
来生成跟踪数据,以测试您的 Tempo 安装。
这些说明使用之前用到的 Grafana Alloy 和 Tempo 分发器的端点,例如
grafana-alloy.grafana-alloy.svc.cluster.local
用于 Grafana Alloytempo-cluster-distributor.tempo.svc.cluster.local
用于 Tempo 分发器
如果您更改了端点目标,请更新端点。
使用安装过程安装
telemetrygen
。注意:您不需要配置 OpenTelemetry Collector,因为我们正在使用 Grafana Alloy。使用
telemetrygen
生成跟踪telemetrygen traces --otlp-insecure --rate 20 --duration 5s --otlp-endpoint grafana-alloy.grafana-alloy.svc.cluster.local:4317
此配置以每秒 20 个跟踪的速度向 Alloy 发送跟踪,持续 5 秒。
或者,您也可以使用以下方法将跟踪直接发送到 Tempo 数据库,而无需使用 Alloy 作为收集器
telemetrygen traces --otlp-insecure --rate 20 --duration 5s --otlp-endpoint tempo-cluster-distributor.tempo.svc.cluster.local:4317
如果您在本地机器上运行 telemetrygen
,请确保您首先端口转发到相关的 Alloy 或 Tempo 分发器服务,例如
kubectl port-forward services/grafana-alloy 4317:4317 --namespace grafana-alloy
- 或者,可以基于此模板创建一个 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
查看跟踪数据
前往 Grafana 并选择 Explore。
从数据源列表中选择 Tempo 数据源。
选择
搜索
查询类型。选择 运行查询。
确认跟踪数据在跟踪 Explore 面板中显示。您应该看到 5 秒内的跟踪数据,每次运行
telemetrygen
总共生成 100 个跟踪。
使用 Intro to MLTP 应用程序测试您的配置
Intro to MLTP 应用程序提供了一个示例五服务应用程序,该应用程序为 Tempo、Mimir、Loki 和 Pyroscope 生成数据。此过程会将应用程序安装到您的集群中,以便您生成有意义的测试数据。
- 导航至 https://github.com/grafana/intro-to-mltp 获取 Intro to MLTP 应用程序的 Kubernetes manifests。
- 使用类似于以下命令克隆仓库
git clone git+ssh://github.com/grafana/intro-to-mltp cp intro-to-mltp/k8s/mythical/* ~/tmp/intro-to-mltp-k8s
- 切换到克隆的仓库:
cd intro-to-mltp/k8s/mythical
- 在
mythical-beasts-deployment.yaml
manifest 中,修改每个TRACING_COLLECTOR_HOST
环境变量实例的值,使其指向 Grafana Alloy 的位置。例如,基于安装在默认命名空间且 Helm 安装名称为test
的 Alloy- env: ... - name: TRACING_COLLECTOR_HOST value: grafana-alloy.grafana-alloy.svc.cluster.local
- 部署 Intro to MLTP 应用程序。它将被部署到默认命名空间。
kubectl apply -f mythical-beasts-service.yaml,mythical-beasts-persistentvolumeclaim.yaml,mythical-beasts-deployment.yaml
- 应用程序部署完成后,前往 Grafana Enterprise 并选择 Explore 菜单项。
- 从数据源列表中选择 Tempo 数据源。
- 为数据源选择
搜索
查询类型。 - 选择 运行查询。
- 应用程序的跟踪数据将显示在跟踪 Explore 面板中。