菜单
文档面包屑箭头 Beyla面包屑箭头 配置面包屑箭头 导出模式
Grafana Cloud

配置 Beyla 导出模式

Beyla 以 Alloy 或 Direct 模式导出数据。

Beyla architecture alloy vs direct

Beyla 在左侧以 Alloy 模式运行,在右侧以 Direct 模式运行。

Direct 模式

在 Direct 模式下,Beyla 使用 OpenTelemetry 协议 (OTLP) 直接将指标和追踪推送到远程端点。

Beyla 还可以暴露一个准备好抓取的 Prometheus HTTP 端点,例如在 pull 模式下。

要使用 Direct 模式,需要使用身份验证凭据进行配置。使用这些环境变量设置 OTLP 端点的身份验证凭据

  • OTEL_EXPORTER_OTLP_ENDPOINT
  • OTEL_EXPORTER_OTLP_HEADERS

要在 Direct 模式下使用 Prometheus 抓取端点运行,请参阅配置文档

Alloy 模式

在 Alloy 模式下,Beyla 将指标和追踪发送到 Grafana Alloy。Alloy 处理并将它们发送到 Mimir 和 Tempo。Alloy 管理 Mimir 和 Tempo 端点所需的身份验证。

此模式集成了 Grafana 的独有功能,例如span-to-metricsspan-to-service graph 转换器。

以下各节是如何设置 Alloy 和 Beyla 发送数据到 Grafana Cloud 的示例。

配置 Alloy pipeline

首先,安装并配置 Grafana Alloy。配置 Alloy pipeline 并指定以下节点

Beyla nodes

下载示例 River 配置文件

为自动插桩工具创建一个 OpenTelemetry receiver 端点,用于转发指标和追踪。将此条目添加到 Alloy 配置文件中

alloy
otelcol.receiver.otlp "default" {
  grpc {}
  http {}

  output {
    metrics = [otelcol.processor.batch.default.input]
    traces = [otelcol.processor.batch.default.input]
  }
}

这使得 Alloy 能够通过 GRPC 和 HTTP 接收 OpenTelemetry 事件。Alloy 将数据转发到 batch processor。batch processor 累积数据并将其转发到 exporters

alloy
otelcol.processor.batch "default" {
  output {
    metrics = [otelcol.exporter.prometheus.default.input]
    traces  = [otelcol.exporter.otlp.tempo.input]
  }
}

导出指标、追踪或两者。要导出单一数据类型,请省略节点定义中的 metricstraces 行,并跳过相关的 exporters。

Alloy 将指标以 Prometheus 格式导出到 Grafana Mimir。配置使用基本身份验证。Alloy 配置使用环境变量中设置的值

alloy
otelcol.exporter.prometheus "default" {
    forward_to = [prometheus.remote_write.mimir.receiver]
}

prometheus.remote_write "mimir" {
  endpoint {
    url = "https://" + env("MIMIR_ENDPOINT") + "/api/prom/push"
    basic_auth {
      username = env("MIMIR_USER")
      password = env("GRAFANA_API_KEY")
    }
  }
}

设置身份验证环境变量并运行 Alloy

sh
export MIMIR_USER=734432
export MIMIR_ENDPOINT=prometheus-prod-01-eu-west-0.grafana.net
export GRAFANA_API_KEY=VHJhbGFyw60gcXVlIHRlIHbD....=

最后,设置一个 Grafana Tempo exporter 和端点。Alloy 配置使用环境变量中设置的值

alloy
otelcol.exporter.otlp "tempo" {
    client {
        endpoint = env("TEMPO_ENDPOINT")
        auth     = otelcol.auth.basic.creds.handler
    }
}

otelcol.auth.basic "creds" {
    username = env("TEMPO_USER")
    password = env("GRAFANA_API_KEY")
}

请注意,TEMPO_ENDPOINTTEMPO_USER 的值与 MIMIR_ENDPOINTMIMIR_USER 不同。

使用指定的配置文件运行 Alloy

sh
grafana-alloy run alloy-config.river

配置并运行 Beyla

本教程假设 Beyla 和 Alloy 原生运行在同一主机上,因此无需保护流量,也无需在 Alloy OTLP receiver 中提供身份验证。

安装 Grafana Beyla 并下载示例配置文件

首先,指定要插桩的可执行文件。对于运行在端口 443 上的服务可执行文件,将 open_port 属性添加到 YAML 文档中

yaml
open_port: 443

接下来,指定追踪和指标的发送位置。如果 Alloy 运行在本地主机上,它使用端口 4318

yaml
otel_metrics_export:
  endpoint: https://:4318
otel_traces_export:
  endpoint: https://:4318

您可以指定 otel_metrics_exportotel_traces_export 属性的组合来导出指标、追踪或两者。

使用指定的配置文件运行 Beyla

beyla -config instrument-config.yml

BEYLA_CONFIG_PATH=instrument-config.yml beyla