AWS CloudWatch 输入

编辑

aws-cloudwatch 输入可用于检索特定日志组中所有日志流中的所有日志。它使用 filterLogEvents AWS API 列出指定日志组中的日志事件。Amazon CloudWatch Logs 可用于存储来自 Amazon Elastic Compute Cloud (EC2)、AWS CloudTrail、Route53 及其他来源的日志文件。

日志组是一组共享相同保留策略、监控和访问控制设置的日志流。您可以定义日志组并指定要放入每个组中的流。一个日志组中可以包含的日志流数量没有限制。

日志流是一系列共享相同来源的日志事件。CloudWatch Logs 中的每个独立日志源构成一个单独的日志流。

filebeat.inputs:
- type: aws-cloudwatch
  log_group_arn: arn:aws:logs:us-east-1:428152502467:log-group:test:*
  scan_frequency: 1m
  credential_profile_name: elastic-beats
  start_position: beginning

aws-cloudwatch 输入支持以下配置选项,以及稍后描述的常用选项

log_group_arn

编辑

要从中收集日志的日志组的 ARN。ARN 可以指代链接的源帐户中的日志组。

注意:log_group_arn 不能与 log_group_namelog_group_name_prefixregion_name 属性组合使用。如果设置,则从 log_group_arn 中提取的值优先。

注意:如果日志组位于链接的源帐户中,并且 Filebeat 配置为使用监控帐户,则必须使用 log_group_arn。您可以从官方文档中阅读有关 AWS 帐户链接和跨帐户可观察性的更多信息。

log_group_name

编辑

要从中收集日志的日志组的名称。

注意:提供 log_group_name 时,需要 region_name

log_group_name_prefix

编辑

一组日志组名称的前缀。有关链接源帐户的行为,请参见 include_linked_accounts_for_prefix_mode 选项。

注意:提供 log_group_name_prefix 时,需要 region_namelog_group_namelog_group_name_prefix 不能同时给出。将处理此前缀下日志组的工作人员数量通过 number_of_workers 配置设置。

include_linked_accounts_for_prefix_mode

编辑

配置是否包含通过 log_group_name_prefix 定义的前缀值的链接源帐户。接受布尔值,默认情况下禁用。

注意:如果您希望从已知的日志组(包括链接的源帐户)获取日志,请使用 log_group_arn。您可以从官方文档中阅读有关 AWS 帐户链接和跨帐户可观察性的更多信息。

region_name

编辑

指定的日志组或日志组前缀所属的区域。

number_of_workers

编辑

将处理具有给定 log_group_name_prefix 的日志组的工作人员数量。默认值为 1。

log_streams

编辑

Filebeat 从中收集日志事件的日志流名称的字符串列表。

log_stream_prefix

编辑

用于过滤结果以仅包含名称以该前缀开头的日志流的日志事件的字符串。

start_position

编辑

start_position 允许用户指定此输入是否应从 beginning 读取日志文件,还是从 end 读取。

  • beginning:从日志组的开头读取(默认值)。
  • end:仅读取从当前时间减去 scan_frequency 开始的新消息。

例如,如果 scan_frequency 等于 30s,并且当前时间戳为 2020-06-24 12:00:00

  • 如果 start_position = beginning

    • 第一次迭代:startTime=0,endTime=2020-06-24 12:00:00
    • 第二次迭代:startTime=2020-06-24 12:00:00,endTime=2020-06-24 12:00:30
  • 如果 start_position = end

    • 第一次迭代:startTime=2020-06-24 11:59:30,endTime=2020-06-24 12:00:00
    • 第二次迭代:startTime=2020-06-24 12:00:00,endTime=2020-06-24 12:00:30

scan_frequency

编辑

此配置参数设置 Filebeat 检查指定日志组中是否有新日志事件的频率。默认 scan_frequency 为 1 分钟,这意味着 Filebeat 将休眠 1 分钟然后再查询新日志。

api_timeout

编辑

AWS API 可以持续的最长时间。如果超过超时时间,AWS API 将被中断。消息的默认 AWS API 超时时间为 120 秒。最小值为 0 秒。

api_sleep

编辑

这用于在同一收集期间内的 AWS FilterLogEvents API 调用之间休眠。FilterLogEvents API 具有每秒 5 次事务 (TPS)/帐户/区域的配额。默认情况下,api_sleep 为 200 毫秒。仅当有多个 Filebeat 或多个 Filebeat 输入从同一区域和 AWS 帐户收集日志时,才应调整此值。

latency

编辑

某些 AWS 服务将日志发送到 CloudWatch 的处理延迟大于 aws-cloudwatch 输入 scan_frequency。在这种情况下,请指定 latency 参数,以便将收集开始时间和结束时间按给定的延迟量进行调整。

aws 凭证

编辑

为了进行 AWS API 调用,aws-cloudwatch 输入需要 AWS 凭证。有关更多详细信息,请参见AWS 凭证选项

AWS 权限

编辑

IAM 用户需要特定的 AWS 权限才能访问 aws-cloudwatch。

cloudwatchlogs:DescribeLogGroups
logs:FilterLogEvents

指标

编辑

此输入在HTTP 监控端点下公开指标。这些指标在 /inputs 路径下公开。它们可用于观察输入的活动。

指标 描述

log_events_received_total

接收到的 CloudWatch 日志事件数。

log_groups_total

从 CloudWatch 日志组收集的日志数量。

cloudwatch_events_created_total

从处理 CloudWatch 日志创建的事件数。

api_calls_total

总共发出的 API 调用次数。

常用选项

编辑

所有输入都支持以下配置选项。

enabled
编辑

使用 enabled 选项启用和禁用输入。默认情况下,enabled 设置为 true。

tags
编辑

Filebeat 在每个已发布事件的 tags 字段中包含的标签列表。标签使在 Kibana 中选择特定事件或在 Logstash 中应用条件过滤变得容易。这些标签将附加到在常规配置中指定的标签列表中。

示例

filebeat.inputs:
- type: aws-cloudwatch
  . . .
  tags: ["json"]
fields
编辑

您可以指定的可选字段,以向输出添加其他信息。例如,您可以添加可用于过滤日志数据的字段。字段可以是标量值、数组、字典或这些的任何嵌套组合。默认情况下,您在此处指定的字段将在输出文档中的 fields 子字典下分组。要将自定义字段存储为顶级字段,请将 fields_under_root 选项设置为 true。如果在常规配置中声明了重复字段,则其值将被此处声明的值覆盖。

filebeat.inputs:
- type: aws-cloudwatch
  . . .
  fields:
    app_id: query_engine_12
fields_under_root
编辑

如果此选项设置为 true,则自定义fields将存储为输出文档中的顶级字段,而不是分组在 fields 子字典下。如果自定义字段名称与 Filebeat 添加的其他字段名称冲突,则自定义字段将覆盖其他字段。

processors
编辑

要应用于输入数据的处理器列表。

有关在配置中指定处理器的信息,请参见处理器

pipeline
编辑

为此输入生成的事件设置的摄取管道 ID。

管道 ID 也可以在 Elasticsearch 输出中配置,但此选项通常会导致更简单的配置文件。如果在输入和输出中都配置了管道,则使用输入中的选项。

keep_null
编辑

如果此选项设置为 true,则将发布输出文档中值为 null 的字段。默认情况下,keep_null 设置为 false

index
编辑

如果存在,此格式化字符串将覆盖此输入事件的索引(对于 elasticsearch 输出),或设置事件元数据的 raw_index 字段(对于其他输出)。此字符串只能引用代理名称和版本以及事件时间戳;要访问动态字段,请使用 output.elasticsearch.index 或处理器。

示例值:"%{[agent.name]}-myindex-%{+yyyy.MM.dd}" 可能扩展为 "filebeat-myindex-2019.11.01"

publisher_pipeline.disable_host
编辑

默认情况下,所有事件都包含 host.name。此选项可以设置为 true 以禁用将此字段添加到所有事件。默认值为 false