菜单
开源软件

faro.receiver

faro.receiver 接受来自 Grafana Faro Web SDK 的 Web 应用程序遥测数据并将其转发到其他组件进行后续处理。

用法

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

参数

以下参数被支持

名称类型描述默认值必需
extra_log_labelsmap(string)附加到发射日志行中的额外标签。{}

以下块在 faro.receiver 定义内部被支持

层次结构描述必需
serverserver配置 HTTP 服务器。
server > rate_limitingrate_limiting配置 HTTP 服务器速率限制。
sourcemapssourcemaps配置 sourcemap 获取。
sourcemaps > locationlocation配置 sourcemap 获取的磁盘位置。
outputoutput配置发送收集到的遥测数据的位置。

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 未授权 状态码。如果 api_key 参数为空,则不执行任何身份验证检查,并忽略 X-API-Key HTTP 头。

rate_limiting 块

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

名称类型描述默认值必需
启用布尔型是否启用速率限制。
比率number每秒允许请求的速率。50
burst_sizenumber允许的请求数据突发量。100

速率限制功能等同于令牌桶算法,其中桶具有最多容量为burst_size请求,以每秒rate的速率补充。

每个HTTP请求会消耗桶容量1个单位。一旦桶为空,将使用HTTP 429 Too Many Requests状态码拒绝HTTP请求,直到桶有更多可用容量为止。

配置rate参数确定桶填充速度,配置burst_size参数确定桶空和开始拒绝请求之前的突发请求量。

sourcemaps块

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

名称类型描述默认值必需
下载布尔型是否下载sourcemaps。
download_from_originslist(string)从哪些来源下载sourcemaps。["*"]
download_timeout持续时间下载sourcemaps时的超时时间。"1s"

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

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

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

要从不通过网络而是从磁盘中检索sourcemaps,指定一个或多个location块。当提供了location块时,在回退到下载之前 首先,它们将用于检查sourcemaps。

location块

location块声明了在文件系统中储存sourcemaps的位置。《location》块可以被指定多次,用于声明sourcemaps存储的多个位置。

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

minified_path_prefix参数确定JavaScript文件等路径的前缀,如下http://example.com/。然后,path参数确定要找到文件sourcemaps的位置。

例如,给定以下location块

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

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

  1. 移除压缩路径前缀来提取文件路径(foo.js)。
  2. path中搜索带有.map扩展名(foo.js.map)的文件路径(/var/my-app/build/foo.js.map)。

可选地,path参数的值可能包含模板值{{ .Release }},例如/var/my-app/{{ .Release }}/build。模板值将由Faro Web App SDK提供的发布值替换。

output块

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

名称类型描述默认值必需
日志日志接收器列表要转发日志的 loki 组件列表。[]
跟踪otelcol.Consumer 列表要转发跟踪的 otelcol 组件列表。[]

导出字段

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(计数器):每个源中源映射缓存中项的数量。
  • faro_receiver_sourcemap_downloads_total(计数器):每个源和状态执行的源映射下载总数。
  • faro_receiver_sourcemap_file_reads_total(计数器):每个源和状态使用文件系统检索源映射的总数。

示例

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 地址。此 IP 地址必须可通过使用仪表化 Web 应用的浏览器访问。

  • PATH_TO_SOURCEMAPS:磁盘上源映射所在的路径。

  • WEB_APP_PREFIX:正在仪表化的 Web 应用程序的前缀。

  • LOKI_ADDRESS:发送日志的 Loki 服务器的地址。

    • 如果需要认证向 Loki 服务器发送日志,请参阅loki.write 的文档以获取更多信息。
  • OTLP_ADDRESS:发送跟踪的 OTLP 兼容服务器的地址。

    • 如果需要认证向 Loki 服务器发送日志,请参阅otelcol.exporter.otlp 的文档以获取更多信息。

兼容组件

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

注意

连接某些组件可能不明智,或者组件可能需要额外的配置才能使连接正常工作。请参阅相关文档了解详细信息。