Faro.接收器
faro.receiver
接收来自 Grafana Faro Web SDK 的 Web 应用程序遥测数据,并将其转发到其他组件进行处理。
用法
faro.receiver "<LABEL>" {
output {
logs = [<LOKI_RECEIVERS>]
traces = [<OTELCOL_COMPONENTS>]
}
}
参数
您可以对 faro.receiver
使用以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
extra_log_labels | map(字符串) | 附加到发出的日志行的额外标签。 | {} | 否 |
块
您可以对 faro.receiver
使用以下块
块 | 描述 | 必需 |
---|---|---|
output | 配置将收集的遥测数据发送到哪里。 | 是 |
server | 配置 HTTP 服务器。 | 否 |
server > rate_limiting | 配置 HTTP 服务器的速率限制。 | 否 |
sourcemaps | 配置 sourcemap 检索。 | 否 |
sourcemaps > location | 配置用于 sourcemap 检索的磁盘位置。 | 否 |
>
符号表示更深层次的嵌套。例如,sourcemaps
> location
指的是在 sourcemaps
块内定义的 location
块。
output
output
块指定将收集的日志和跟踪转发到哪里。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
logs | list(LogsReceiver) | 要将日志转发到的 loki 组件的列表。 | [] | 否 |
traces | list(otelcol.Consumer) | 要将跟踪转发到的 otelcol 组件的列表。 | [] | 否 |
server
server
块配置由 faro.receiver
组件管理的 HTTP 服务器。使用 Grafana Faro Web SDK 的客户端将遥测数据转发到此 HTTP 服务器进行处理。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
listen_address | 字符串 | 监听 HTTP 流量的地址。 | 127.0.0.1 | 否 |
listen_port | 数字 | 监听 HTTP 流量的端口。 | 12347 | 否 |
cors_allowed_origins | list(字符串) | 允许跨域请求的来源。 | [] | 否 |
api_key | 密钥 | 用于验证客户端请求的可选 API 密钥。 | "" | 否 |
max_allowed_payload_size | 字符串 | 客户端请求的最大大小(以字节为单位)。 | "5MiB" | 否 |
include_metadata | 布尔值 | 将传入的连接元数据传播到下游消费者。 | 否 | 否 |
默认情况下,遥测数据仅接受来自与浏览器位于同一本地网络上的应用程序。要接受来自更广泛客户端的遥测数据,请将 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
块配置客户端请求的速率限制。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | 布尔值 | 是否启用速率限制。 | 是 | 否 |
rate | 数字 | 每秒允许的请求速率。 | 50 | 否 |
burst_size | 数字 | 允许的请求突发大小。 | 100 | 否 |
速率限制功能类似于 令牌桶算法,其中一个桶的最大容量最多为 burst_size
个请求,并以每秒 rate
的速率重新填充。
每个 HTTP 请求都会消耗桶的一个容量。桶空后,HTTP 请求将被拒绝,并返回 HTTP 429 Too Many Requests
状态代码,直到桶有更多可用容量。
配置 rate
参数确定桶的重新填充速度,而配置 burst_size
参数确定在桶空并开始拒绝请求之前,可以在突发中接收多少个请求。
sourcemaps
sourcemaps
块配置如何检索 sourcemap。然后,sourcemap 用于将来自压缩代码的文件和行信息转换为来自原始源代码的文件和行信息。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
download | 布尔值 | 是否下载 sourcemap。 | 是 | 否 |
download_from_origins | list(字符串) | 从哪些来源下载 sourcemap。 | ["*"] | 否 |
download_timeout | 持续时间 | 下载 sourcemap 时的超时。 | "1秒" | 否 |
当异常发送到 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_prefix | 字符串 | 从浏览器发送的压缩路径的前缀。 | 是 | |
path | 字符串 | sourcemap 存储在磁盘上的路径。 | 是 |
minified_path_prefix
参数确定 JavaScript 文件路径的前缀,例如 http://example.com/
。然后,path
参数确定在哪里找到该文件的 sourcemap。
例如,给定以下 location 块
location {
path = "/var/my-app/build"
minified_path_prefix = "http://example.com/"
}
要查找托管在 http://example.com/example.js
上的文件的 sourcemap,faro.receiver
组件
- 删除压缩路径前缀以提取文件
example.js
的路径。 - 在路径中搜索具有
.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 的总数。
示例
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
的组件
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接的文档。