菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 参考breadcrumb arrow 组件breadcrumb arrow otelcolbreadcrumb arrow otelcol.receiver.syslog
开源

公开预览

otelcol.receiver.syslog

公开预览:这是一个公开预览组件。公开预览组件可能会有重大更改,并且可能会被覆盖相同用例的等效功能所取代。必须将 stability.level 标志设置为 public-preview 或更低才能使用该组件。

otelcol.receiver.syslog 接收通过网络传输的 syslog 消息,并将它们作为日志转发到其他 otelcol.* 组件。 它支持 syslog 协议 RFC5424RFC3164,并且可以通过 TCPUDP 接收数据。

注意

otelcol.receiver.syslog 是对上游 OpenTelemetry Collector syslog 接收器的封装。 Bug 报告或功能请求将在必要时重定向到上游仓库。

您可以通过为多个 otelcol.receiver.syslog 组件指定不同的标签来使用它们。

用法

alloy
otelcol.receiver.syslog "LABEL" {
  tcp { ... }
  udp { ... }

  output {
    logs    = [...]
  }
}

参数

支持以下参数

名称类型描述默认值必需
protocol字符串syslog 服务器支持的 syslog 协议。rfc5424
location字符串解析 RFC3164 时间戳时使用的地理时区。UTC
enable_octet_countingbool是否启用 RFC6587 八位字节计数。false
max_octetsint启用八位字节计数时,消息的最大八位字节数。8192
allow_skip_pri_headerbool允许解析不带优先级标头的记录。false
non_transparent_framing_trailer字符串使用 RFC6587 非透明帧时,帧尾部。nil

protocol 参数指定接收器支持的 syslog 格式。 protocol 必须是 rfc5424rfc3164 之一。

location 参数指定时区标识符。 可用位置取决于本地 IANA 时区数据库。 有关非详尽列表,请参阅 Wikipedia 中的 tz 数据库时区列表

non_transparent_framing_trailerenable_octet_counting 参数指定了 RFC6587 中定义的 TCP syslog 行为。 这些参数是互斥的。 它们不能与配置的 UDP syslog 监听器一起使用。 如果配置了,non_transparent_framing_trailer 参数必须是 LFNUL 之一。

otelcol.receiver.syslog 的定义中支持以下块

层级结构描述必需
udpudp配置 UDP syslog 服务器以接收 syslog 消息。否*
udp > multilinemultiline配置传入消息的多行解析规则。
udp > asyncasync配置传入消息的异步解析规则。
tcptcp配置 TCP syslog 服务器以接收 syslog 消息。否*
tcp > multilinemultiline配置传入消息的多行解析规则
tcp > tlstls为 TCP syslog 服务器配置 TLS。
retry_on_failureretry_on_failure配置当接收器在管道下游遇到错误时的重试行为。
debug_metricsdebug_metrics配置此组件生成的用于监控其状态的指标。
outputoutput配置将接收到的遥测数据发送到哪里。

syslog 接收器必须配置 udptcp 块之一。

> 符号表示更深层次的嵌套。 例如,tcp > tls 指的是在 tcp 块内定义的 tls 块。

udp 块

udp 块配置 UDP syslog 服务器。 支持以下参数

名称类型描述默认值必需
listen_address字符串监听 syslog 消息的 <host:port> 地址。
one_log_per_packetbool跳过日志标记化,当消息始终包含一个日志且未使用多行时,可提高性能。false
add_attributesbool根据 OpenTelemetry 语义约定,将 net.* 属性添加到日志消息中。false
编码字符串encodingsyslog 消息的编码。
utf-8boolpreserve_leading_whitespacesfalse
设置为 true 时,保留消息中的前导空格。boolpreserve_trailing_whitespacesfalse

设置为 true 时,保留消息中的尾随空格。

encoding 参数指定传入 syslog 消息的编码。 encoding 必须是 utf-8utf-16leutf-16beasciibig5nop 之一。 有关更多详细信息,请参阅上游接收器 文档

multiline 块

名称类型描述默认值必需
multiline 块配置用于拆分传入日志条目的逻辑。 支持以下参数字符串line_start_pattern
匹配日志条目开头的正则表达式。字符串line_end_pattern
匹配日志条目结尾的正则表达式。boolomit_patternfalse

从拆分的日志条目中省略开始/结束模式。

multiline 块必须包含 line_start_patternline_end_pattern 之一。

如果未设置 multiline 块,则不会拆分日志条目。

async 块

名称类型描述默认值必需
async 块为 UDP syslog 服务器配置并发异步读取器。 支持以下参数intreaders1
并发从 UDP syslog 服务器读取的 goroutine 数量。intprocessors1
在向下游发送之前,并发处理日志的 goroutine 数量。intmax_queue_length100

等待可用处理器的最大消息数。

如果未设置 async,则单个 goroutine 将同步读取和处理消息。

tcp 块

名称类型描述默认值必需
listen_address字符串监听 syslog 消息的 <host:port> 地址。
tcp 块配置 TCP syslog 服务器。 支持以下参数字符串max_log_size在失败之前要读取的日志条目的最大大小。
one_log_per_packetbool跳过日志标记化,当消息始终包含一个日志且未使用多行时,可提高性能。false
add_attributesbool根据 OpenTelemetry 语义约定,将 net.* 属性添加到日志消息中。false
编码字符串encodingsyslog 消息的编码。
utf-8boolpreserve_leading_whitespacesfalse
设置为 true 时,保留消息中的前导空格。boolpreserve_trailing_whitespacesfalse

1MiB

encoding 参数指定传入 syslog 消息的编码。 encoding 必须是 utf-8utf-16leutf-16beasciibig5nop 之一。 有关更多详细信息,请参阅上游接收器 文档

max_log_size 参数的最小值为 64KiB

tls 块

支持以下参数

名称类型描述默认值必需
tls 块配置用于服务器的 TLS 设置。 如果未提供 tls 块,则 TLS 将不会用于与服务器的连接。字符串ca_file
CA 文件的路径。字符串ca_pem
用于验证服务器的 CA PEM 编码文本。字符串cert_file
TLS 证书的路径。字符串cert_pem
用于客户端身份验证的证书 PEM 编码文本。include_system_ca_certs_poolbooleanfalse
是否将系统证书颁发机构池与证书颁发机构一起加载。字符串key_file
key_pemsecretTLS 证书密钥的路径。
max_version字符串连接可接受的最大 TLS 版本。"TLS 1.3"
min_version字符串连接可接受的最小 TLS 版本。"TLS 1.2"
cipher_suiteslist(string)TLS 传输可以使用的 TLS 密码套件列表。[]
reload_intervalduration证书重新加载后的持续时间。"0s"
client_ca_file字符串服务器用于验证客户端证书的 TLS 证书路径。

如果 reload_interval 设置为 "0s",则永远不会重新加载证书。

以下参数对是互斥的,不能同时设置

  • ca_pemca_file
  • cert_pemcert_file
  • key_pemkey_file

如果 cipher_suites 留空,则使用安全的默认列表。 有关受支持的密码套件列表,请参阅 Go Cipher Suites 文档

client_ca_fileTLSConfig 中的 ClientCAClientAuth 设置为 RequireAndVerifyClientCert。 有关更多信息,请参阅 Go TLS 文档

失败时重试块

当接收器在管道下游遇到错误时,retry_on_failure 块配置重试行为。 使用退避算法来延迟后续失败时的重试。 支持以下参数

名称类型描述默认值必需
enabledbool如果为 true,则接收器将暂停读取文件,并在发生错误时尝试重新发送当前批次的日志。false
initial_intervalduration首次失败后等待重试的时间。1秒
max_intervalduration应用退避逻辑后等待的最大时间。30秒
max_elapsed_timeduration数据被丢弃之前消息的最大存在时间。5分钟

如果 max_elapsed_time 设置为 0,则数据永远不会被丢弃。

debug_metrics 块

debug_metrics 块配置此组件生成的用于监控其状态的指标。

支持以下参数

名称类型描述默认值必需
disable_high_cardinality_metricsinclude_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 块,但其所有参数都是可选的。 默认情况下,遥测数据将被丢弃。 相应地配置 metricslogstraces 参数,以将遥测数据发送到其他组件。

导出的字段

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 文档中找到。

alloy
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 的组件

注意

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