菜单
通用可用 (GA) 开源

faro.receiver

faro.receiverGrafana Faro Web SDK 接收 Web 应用程序遥测数据,并将其转发给其他组件进行处理。

用法

alloy
faro.receiver "<LABEL>" {
    output {
        logs   = [<LOKI_RECEIVERS>]
        traces = [<OTELCOL_COMPONENTS>]
    }
}

参数

您可以将以下参数与 faro.receiver 一起使用

名称类型描述默认值必需
extra_log_labelsmap(string)附加到发出的日志行的额外标签。{}
log_formatstring日志的导出格式。logfmt

日志格式

以下字符串是有效的日志行格式

  • "json": 将日志导出为 JSON 对象。
  • "logfmt": 将日志导出为 logfmt 行。

您可以将以下块与 faro.receiver 一起使用

描述必需
output配置收集到的遥测数据的发送位置。
server配置 HTTP 服务器。
server > rate_limiting配置 HTTP 服务器的速率限制。
sourcemaps配置 sourcemap 检索。
sourcemaps > location配置用于 sourcemap 检索的磁盘位置。

> 符号表示更深的嵌套级别。例如,sourcemaps > location 指的是在 sourcemaps 块内定义的 location 块。

output

output 块指定了收集到的日志和追踪的转发位置。

名称类型描述默认值必需
logslist(LogsReceiver)要将日志转发到的 loki 组件列表。[]
traceslist(otelcol.Consumer)要将追踪转发到的 otelcol 组件列表。[]

server

server 块配置由 faro.receiver 组件管理的 HTTP 服务器。使用 Grafana Faro Web SDK 的客户端将遥测数据转发到此 HTTP 服务器进行处理。

名称类型描述默认值必需
listen_addressstring监听 HTTP 流量的地址。127.0.0.1
listen_portnumber监听 HTTP 流量的端口。12347
cors_allowed_originslist(string)允许跨源请求的源列表。[]
api_keysecret用于验证客户端请求的可选 API 密钥。""
max_allowed_payload_sizestring客户端请求的最大大小(以字节为单位)。"5MiB"
include_metadataboolean将传入连接元数据传播到下游消费者。false

默认情况下,只接受来自与浏览器位于同一本地网络的应用程序的遥测数据。要接受来自更广泛客户端集的遥测数据,请将 listen_address 属性修改为要使用的相应网络接口的 IP 地址。

cors_allowed_origins 参数确定浏览器请求可以来自哪些源。默认值 [] 禁用 CORS 支持。要支持来自所有源的请求,请将 cors_allowed_origins 设置为 ["*"]* 字符表示通配符。

api_key 参数不为空时,客户端请求必须包含一个名为 X-API-Key 的 HTTP 头,其值与 api_key 参数的值匹配。缺少此头或值错误的请求将因 HTTP 401 Unauthorized 状态码而被拒绝。如果 api_key 参数为空,则不会执行身份验证检查,并且 X-API-Key HTTP 头将被忽略。

rate_limiting

rate_limiting 块配置客户端请求的速率限制。

名称类型描述默认值必需
enabledbool是否启用速率限制。true
ratenumber每秒允许的请求速率。50
burst_sizenumber允许的请求突发大小。100

速率限制功能类似于 令牌桶算法,其中一个桶的最大容量可容纳最多 burst_size 个请求,并以每秒 rate 的速率填充。

每个 HTTP 请求会使桶的容量减少一个。桶变空后,HTTP 请求将因 HTTP 429 Too Many Requests 状态码而被拒绝,直到桶有更多可用容量为止。

配置 rate 参数决定了桶的填充速度,配置 burst_size 参数决定了在桶变空并开始拒绝请求之前,突发可以接收多少个请求。

sourcemaps

sourcemaps 块配置如何检索 sourcemap。然后使用 sourcemap 将缩小代码中的文件和行信息转换为原始源代码中的文件和行信息。

名称类型描述默认值必需
downloadbool是否下载 sourcemap。true
download_from_originslist(string)从哪些源下载 sourcemap。["*"]
download_timeoutduration下载 sourcemap 时的超时时间。"1s"

当异常发送到 faro.receiver 组件时,它可以从 Web 应用程序下载 sourcemap。您可以通过将 download 参数设置为 false 来禁用此行为。

download_from_origins 参数确定可以从哪些源下载 sourcemap。源附加到浏览器发送遥测数据的 URL。默认值 ["*"] 启用从所有源下载 sourcemap。* 字符表示通配符。

默认情况下,sourcemap 下载受由 download_timeout 参数指定的 "1s" 超时限制。将 download_timeout 设置为 "0s" 会禁用超时。

要从磁盘而不是网络检索 sourcemap,请指定一个或多个 location。提供 location 块后,将首先检查它们以查找 sourcemap,然后再回退到下载。

location

location 块声明了 sourcemap 存储在文件系统上的位置。您可以多次指定 location 块来声明存储 sourcemap 的多个位置。

名称类型描述默认值必需
minified_path_prefixstring浏览器发送的缩小路径的前缀。
pathstringsourcemap 存储在磁盘上的路径。

minified_path_prefix 参数确定 JavaScript 文件路径的前缀,例如 http://example.com/path 参数确定在哪里查找文件的 sourcemap。

例如,给定以下 location 块

alloy
location {
    path                 = "/var/my-app/build"
    minified_path_prefix = "http://example.com/"
}

要查找托管在 http://example.com/example.js 的文件对应的 sourcemap,faro.receiver 组件将

  1. 移除缩小路径前缀,提取文件 example.js 的路径。
  2. path 中搜索扩展名为 .map 的文件,例如在路径 /var/my-app/build/example.js.map 中的 example.js.map 文件。

可选地,path 参数的值可以包含 {{ .Release }} 作为模板值,例如 /var/my-app/{{ .Release }}/build。模板值将被 Faro Web App SDK 提供的版本值替换。

导出字段

faro.receiver 不导出任何字段。

组件健康状况

当集成服务器无法启动时,faro.receiver 将被报告为不健康。

调试信息

faro.receiver 不公开任何特定于组件的调试信息。

调试指标

faro.receiver 公开以下指标用于监控组件

  • faro_receiver_logs_total (计数器):摄取的日志总数。
  • faro_receiver_measurements_total (计数器):摄取的测量总数。
  • faro_receiver_exceptions_total (计数器):摄取的异常总数。
  • faro_receiver_events_total (计数器):摄取的事件总数。
  • faro_receiver_exporter_errors_total (计数器):内部导出器产生的错误总数。
  • faro_receiver_request_duration_seconds (直方图):处理 HTTP 请求所花费的时间(秒)。
  • faro_receiver_request_message_bytes (直方图):从客户端接收到的 HTTP 请求的大小(字节)。
  • faro_receiver_response_message_bytes (直方图):发送给客户端的 HTTP 响应的大小(字节)。
  • faro_receiver_inflight_requests (测量计):当前的进行中请求数。
  • faro_receiver_sourcemap_cache_size (计数器):每个源的 sourcemap 缓存中的项目数。
  • faro_receiver_sourcemap_downloads_total (计数器):按源和状态统计的已执行 sourcemap 下载总数。
  • faro_receiver_sourcemap_file_reads_total (计数器):按源和状态统计的使用文件系统检索 sourcemap 的总数。

示例

alloy
faro.receiver "default" {
    server {
        listen_address = "<NETWORK_ADDRESS>"
    }

    sourcemaps {
        location {
            path                 = "<PATH_TO_SOURCEMAPS>"
            minified_path_prefix = "<WEB_APP_PREFIX>"
        }
    }

    output {
        logs   = [loki.write.default.receiver]
        traces = [otelcol.exporter.otlp.traces.input]
    }
}

loki.write "default" {
    endpoint {
        url = "https://LOKI_ADDRESS/loki/api/v1/push"
    }
}

otelcol.exporter.otlp "traces" {
    client {
        endpoint = "<OTLP_ADDRESS>"
    }
}

替换以下内容

  • <NETWORK_ADDRESS>:监听流量的网络接口的 IP 地址。使用要插桩的 Web 应用程序的浏览器必须能够访问此 IP 地址。
  • <PATH_TO_SOURCEMAPS>:sourcemap 所在的磁盘路径。
  • <WEB_APP_PREFIX>:正在插桩的 Web 应用程序的前缀。
  • LOKI_ADDRESS:将日志发送到的 Loki 服务器地址。如果您想使用身份验证将日志发送到 Loki 服务器,请参阅 loki.write
  • <OTLP_ADDRESS>:将追踪发送到的 OTLP 兼容服务器地址。如果您想使用身份验证将日志发送到 Loki 服务器,请参阅 otelcol.exporter.otlp

兼容组件

faro.receiver 可以接受来自以下组件的参数

  • 导出 Loki LogsReceiver 的组件
  • 导出 OpenTelemetry otelcol.Consumer 的组件

注意

连接某些组件可能没有意义,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接的文档。