公开预览
otelcol.receiver.syslog
公开预览:这是一个公开预览组件。公开预览组件可能会有重大更改,并且可能会被覆盖相同用例的等效功能所取代。必须将
stability.level
标志设置为public-preview
或更低才能使用该组件。
otelcol.receiver.syslog
接收通过网络传输的 syslog 消息,并将它们作为日志转发到其他 otelcol.*
组件。 它支持 syslog 协议 RFC5424 和 RFC3164,并且可以通过 TCP
或 UDP
接收数据。
注意
otelcol.receiver.syslog
是对上游 OpenTelemetry Collectorsyslog
接收器的封装。 Bug 报告或功能请求将在必要时重定向到上游仓库。
您可以通过为多个 otelcol.receiver.syslog
组件指定不同的标签来使用它们。
用法
otelcol.receiver.syslog "LABEL" {
tcp { ... }
udp { ... }
output {
logs = [...]
}
}
参数
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
protocol | 字符串 | syslog 服务器支持的 syslog 协议。 | rfc5424 | 否 |
location | 字符串 | 解析 RFC3164 时间戳时使用的地理时区。 | UTC | 否 |
enable_octet_counting | bool | 是否启用 RFC6587 八位字节计数。 | false | 否 |
max_octets | int | 启用八位字节计数时,消息的最大八位字节数。 | 8192 | 否 |
allow_skip_pri_header | bool | 允许解析不带优先级标头的记录。 | false | 否 |
non_transparent_framing_trailer | 字符串 | 使用 RFC6587 非透明帧时,帧尾部。 | nil | 否 |
protocol
参数指定接收器支持的 syslog 格式。 protocol
必须是 rfc5424
或 rfc3164
之一。
location
参数指定时区标识符。 可用位置取决于本地 IANA 时区数据库。 有关非详尽列表,请参阅 Wikipedia 中的 tz 数据库时区列表。
non_transparent_framing_trailer
和 enable_octet_counting
参数指定了 RFC6587 中定义的 TCP syslog 行为。 这些参数是互斥的。 它们不能与配置的 UDP syslog 监听器一起使用。 如果配置了,non_transparent_framing_trailer
参数必须是 LF
或 NUL
之一。
块
在 otelcol.receiver.syslog
的定义中支持以下块
层级结构 | 块 | 描述 | 必需 |
---|---|---|---|
udp | udp | 配置 UDP syslog 服务器以接收 syslog 消息。 | 否* |
udp > multiline | multiline | 配置传入消息的多行解析规则。 | 否 |
udp > async | async | 配置传入消息的异步解析规则。 | 否 |
tcp | tcp | 配置 TCP syslog 服务器以接收 syslog 消息。 | 否* |
tcp > multiline | multiline | 配置传入消息的多行解析规则 | 否 |
tcp > tls | tls | 为 TCP syslog 服务器配置 TLS。 | 否 |
retry_on_failure | retry_on_failure | 配置当接收器在管道下游遇到错误时的重试行为。 | 否 |
debug_metrics | debug_metrics | 配置此组件生成的用于监控其状态的指标。 | 否 |
output | output | 配置将接收到的遥测数据发送到哪里。 | 是 |
syslog 接收器必须配置 udp
或 tcp
块之一。
>
符号表示更深层次的嵌套。 例如,tcp > tls
指的是在 tcp
块内定义的 tls
块。
udp 块
udp
块配置 UDP syslog 服务器。 支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
listen_address | 字符串 | 监听 syslog 消息的 <host:port> 地址。 | 是 | |
one_log_per_packet | bool | 跳过日志标记化,当消息始终包含一个日志且未使用多行时,可提高性能。 | false | 否 |
add_attributes | bool | 根据 OpenTelemetry 语义约定,将 net.* 属性添加到日志消息中。 | false | 否 |
编码 | 字符串 | encoding | syslog 消息的编码。 | 否 |
utf-8 | bool | preserve_leading_whitespaces | false | 否 |
设置为 | bool | preserve_trailing_whitespaces | false | 否 |
设置为 true
时,保留消息中的尾随空格。
encoding
参数指定传入 syslog 消息的编码。 encoding
必须是 utf-8
、utf-16le
、utf-16be
、ascii
、big5
或 nop
之一。 有关更多详细信息,请参阅上游接收器 文档。
multiline 块
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
| 字符串 | line_start_pattern | 否 | |
匹配日志条目开头的正则表达式。 | 字符串 | line_end_pattern | 否 | |
匹配日志条目结尾的正则表达式。 | bool | omit_pattern | false | 否 |
从拆分的日志条目中省略开始/结束模式。
multiline
块必须包含 line_start_pattern
或 line_end_pattern
之一。
如果未设置 multiline
块,则不会拆分日志条目。
async 块
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
| int | readers | 1 | 否 |
并发从 UDP syslog 服务器读取的 goroutine 数量。 | int | processors | 1 | 否 |
在向下游发送之前,并发处理日志的 goroutine 数量。 | int | max_queue_length | 100 | 否 |
等待可用处理器的最大消息数。
如果未设置 async
,则单个 goroutine 将同步读取和处理消息。
tcp 块
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
listen_address | 字符串 | 监听 syslog 消息的 <host:port> 地址。 | 是 | |
| 字符串 | max_log_size | 在失败之前要读取的日志条目的最大大小。 | 否 |
one_log_per_packet | bool | 跳过日志标记化,当消息始终包含一个日志且未使用多行时,可提高性能。 | false | 否 |
add_attributes | bool | 根据 OpenTelemetry 语义约定,将 net.* 属性添加到日志消息中。 | false | 否 |
编码 | 字符串 | encoding | syslog 消息的编码。 | 否 |
utf-8 | bool | preserve_leading_whitespaces | false | 否 |
设置为 | bool | preserve_trailing_whitespaces | false | 否 |
1MiB
encoding
参数指定传入 syslog 消息的编码。 encoding
必须是 utf-8
、utf-16le
、utf-16be
、ascii
、big5
、nop
之一。 有关更多详细信息,请参阅上游接收器 文档。
max_log_size
参数的最小值为 64KiB
tls 块
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
| 字符串 | ca_file | 否 | |
CA 文件的路径。 | 字符串 | ca_pem | 否 | |
用于验证服务器的 CA PEM 编码文本。 | 字符串 | cert_file | 否 | |
TLS 证书的路径。 | 字符串 | cert_pem | 否 | |
用于客户端身份验证的证书 PEM 编码文本。 | include_system_ca_certs_pool | boolean | false | 否 |
是否将系统证书颁发机构池与证书颁发机构一起加载。 | 字符串 | key_file | 否 | |
key_pem | secret | TLS 证书密钥的路径。 | 否 | |
max_version | 字符串 | 连接可接受的最大 TLS 版本。 | "TLS 1.3" | 否 |
min_version | 字符串 | 连接可接受的最小 TLS 版本。 | "TLS 1.2" | 否 |
cipher_suites | list(string) | TLS 传输可以使用的 TLS 密码套件列表。 | [] | 否 |
reload_interval | duration | 证书重新加载后的持续时间。 | "0s" | 否 |
client_ca_file | 字符串 | 服务器用于验证客户端证书的 TLS 证书路径。 | 否 |
如果 reload_interval
设置为 "0s"
,则永远不会重新加载证书。
以下参数对是互斥的,不能同时设置
ca_pem
和ca_file
cert_pem
和cert_file
key_pem
和key_file
如果 cipher_suites
留空,则使用安全的默认列表。 有关受支持的密码套件列表,请参阅 Go Cipher Suites 文档。
client_ca_file
将 TLSConfig
中的 ClientCA
和 ClientAuth
设置为 RequireAndVerifyClientCert
。 有关更多信息,请参阅 Go TLS 文档。
失败时重试块
当接收器在管道下游遇到错误时,retry_on_failure
块配置重试行为。 使用退避算法来延迟后续失败时的重试。 支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | bool | 如果为 true,则接收器将暂停读取文件,并在发生错误时尝试重新发送当前批次的日志。 | false | 否 |
initial_interval | duration | 首次失败后等待重试的时间。 | 1秒 | 否 |
max_interval | duration | 应用退避逻辑后等待的最大时间。 | 30秒 | 否 |
max_elapsed_time | duration | 数据被丢弃之前消息的最大存在时间。 | 5分钟 | 否 |
如果 max_elapsed_time
设置为 0
,则数据永远不会被丢弃。
debug_metrics 块
debug_metrics
块配置此组件生成的用于监控其状态的指标。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
disable_high_cardinality_metrics | include_system_ca_certs_pool | 是否禁用某些高基数指标。 | true | 否 |
level | 字符串 | 控制包装的收集器发出的指标的详细程度。 | "detailed" | 否 |
disable_high_cardinality_metrics
是 Grafana Alloy 中等效于 OpenTelemetry Collector 中 telemetry.disableHighCardinalityMetrics
功能标志的设置。 它会删除可能导致高基数指标的属性。 例如,将删除有关 HTTP 和 gRPC 连接的指标中包含 IP 地址和端口号的属性。
注意
如果配置了,
disable_high_cardinality_metrics
仅适用于otelcol.exporter.*
和otelcol.receiver.*
组件。
level
是 Alloy 中等效于 OpenTelemetry Collector 中 telemetry.metrics.level
功能标志的设置。 可能的值为 "none"
、"basic"
、"normal"
和 "detailed"
。
output 块
output
块配置一组组件,用于将生成的遥测数据转发到这些组件。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
日志 | list(otelcol.Consumer) | 要将日志发送到的消费者列表。 | [] | 否 |
指标 | list(otelcol.Consumer) | 要将指标发送到的消费者列表。 | [] | 否 |
追踪 | list(otelcol.Consumer) | 要将追踪发送到的消费者列表。 | [] | 否 |
您必须指定 output
块,但其所有参数都是可选的。 默认情况下,遥测数据将被丢弃。 相应地配置 metrics
、logs
和 traces
参数,以将遥测数据发送到其他组件。
导出的字段
otelcol.receiver.syslog
不导出任何字段。
组件健康状况
仅当 otelcol.receiver.syslog
配置无效时,才会被报告为不健康。
调试信息
otelcol.receiver.syslog
不公开任何组件特定的调试信息。
调试指标
otelcol.receiver.syslog
不公开任何组件特定的调试指标。
示例
此示例将来自 otelcol.receiver.syslog
接收器的 syslog 消息代理到 otelcol.exporter.syslog
组件,然后将它们发送到 loki.source.syslog
组件,然后由 loki.echo
组件记录。 这展示了如何在将 otelcol
syslog 组件用于在将 syslog 消息发送到其他目标之前对其进行代理。
以这种方式使用 otelcol
syslog 组件会导致消息按发送方式转发,尝试将 loki.source.syslog
组件用于类似的代理用例需要通过 otelcol.processor.transform
组件仔细映射任何结构化数据字段。 一个非常简单的例子可以在 otelcol.exporter.syslog
文档中找到。
otelcol.receiver.syslog "default" {
protocol = "rfc5424"
tcp {
listen_address = "localhost:1515"
}
output {
logs = [otelcol.exporter.syslog.default.input]
}
}
otelcol.exporter.syslog "default" {
endpoint = "localhost"
network = "tcp"
port = 1514
protocol = "rfc5424"
enable_octet_counting = false
tls {
insecure = true
}
}
loki.source.syslog "default" {
listener {
address = "localhost:1514"
protocol = "tcp"
syslog_format = "rfc5424"
label_structured_data = true
use_rfc5424_message = true
}
forward_to = [loki.echo.default.receiver]
}
loki.echo "default" {}
兼容的组件
otelcol.receiver.syslog
可以接受来自以下组件的参数
- 导出 OpenTelemetry
otelcol.Consumer
的组件
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。 有关更多详细信息,请参阅链接的文档。