faro.receiver
faro.receiver
接受来自 Grafana Faro Web SDK 的 Web 应用程序遥测数据并将其转发到其他组件进行后续处理。
用法
faro.receiver "LABEL" {
output {
logs = [LOKI_RECEIVERS]
traces = [OTELCOL_COMPONENTS]
}
}
参数
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
extra_log_labels | map(string) | 附加到发射日志行中的额外标签。 | {} | 否 |
块
以下块在 faro.receiver
定义内部被支持
层次结构 | 块 | 描述 | 必需 |
---|---|---|---|
server | server | 配置 HTTP 服务器。 | 否 |
server > rate_limiting | rate_limiting | 配置 HTTP 服务器速率限制。 | 否 |
sourcemaps | sourcemaps | 配置 sourcemap 获取。 | 否 |
sourcemaps > location | location | 配置 sourcemap 获取的磁盘位置。 | 否 |
output | output | 配置发送收集到的遥测数据的位置。 | 是 |
server 块
该 server
块配置由 faro.receiver
组件管理的 HTTP 服务器。使用 Grafana Faro Web SDK 的客户端将遥测数据转发到此 HTTP 服务器进行处理。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
listen_address | string | 用于监听 HTTP 流量的地址。 | 127.0.0.1 | 否 |
listen_port | number | 用于监听 HTTP 流量的端口。 | 12347 | 否 |
cors_allowed_origins | list(string) | 允许跨源请求的源。 | [] | 否 |
api_key | secret | 可选的 API 密钥用于验证客户端请求。 | "" | 否 |
max_allowed_payload_size | string | 客户端请求的最大大小(以字节为单位)。 | "5MiB" | 否 |
include_metadata | boolean | 将传入连接的元数据传递给下游消费者。 | 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_size | number | 允许的请求数据突发量。 | 100 | 否 |
速率限制功能等同于令牌桶算法,其中桶具有最多容量为burst_size
请求,以每秒rate
的速率补充。
每个HTTP请求会消耗桶容量1个单位。一旦桶为空,将使用HTTP 429 Too Many Requests状态码拒绝HTTP请求,直到桶有更多可用容量为止。
配置rate
参数确定桶填充速度,配置burst_size
参数确定桶空和开始拒绝请求之前的突发请求量。
sourcemaps块
《sourcemaps》块配置如何检索sourcemaps。然后使用sourcemaps将压缩代码中的文件和行信息转换为原始源代码中的文件和行信息。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
下载 | 布尔型 | 是否下载sourcemaps。 | 是 | 否 |
download_from_origins | list(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存储的多个位置。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
path | string | 磁盘上存储sourcemaps的路径。 | 是 | |
minified_path_prefix | string | 从浏览器发送的压缩路径前缀。 | 是 |
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
组件将
- 移除压缩路径前缀来提取文件路径(
foo.js
)。 - 在
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
(计数器):每个源和状态使用文件系统检索源映射的总数。
示例
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
可以接受来自以下组件的参数
- 导出 Loki
LogsReceiver
的组件 - 导出 OpenTelemetry
otelcol.Consumer
的组件
注意
连接某些组件可能不明智,或者组件可能需要额外的配置才能使连接正常工作。请参阅相关文档了解详细信息。