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
输入支持以下配置选项以及稍后描述的通用选项。
要收集日志的日志组的 ARN。ARN 可以引用关联源账户中的日志组。
注意:log_group_arn
不能与 log_group_name
、log_group_name_prefix
和 region_name
属性组合使用。如果设置了,从 log_group_arn
提取的值将优先于它们。
注意:如果日志组在关联的源账户中,并且 Filebeat 配置为使用监控账户,则必须使用 log_group_arn
。您可以从官方文档中详细了解 AWS 账户关联和跨账户可观察性。
要收集日志的日志组名称。
注意:如果给出 log_group_name
,则必须提供 region_name
。
一组日志组名称的前缀。请参阅 include_linked_accounts_for_prefix_mode
选项以了解关联源账户的行为。
注意:如果给出 log_group_name_prefix
,则必须提供 region_name
。log_group_name
和 log_group_name_prefix
不能同时提供。将处理此前缀下日志组的工作程序数量通过 number_of_workers
配置进行设置。
配置是否包含包含通过 log_group_name_prefix
定义的前缀值的关联源账户。接受布尔值,默认禁用。
注意:如果您希望从已知日志组(包括关联的源账户)获取日志,请使用 log_group_arn
。您可以从官方文档中详细了解 AWS 账户关联和跨账户可观察性。
指定的日志组或日志组前缀所属的区域。
将处理具有给定 log_group_name_prefix
的日志组的工作程序数量。默认值为 1。
Filebeat 收集日志事件的日志流名称的字符串列表。
用于过滤结果的字符串,以仅包含名称以此前缀开头的日志流中的日志事件。
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
此配置参数设置 Filebeat 检查指定日志组中新日志事件的频率。默认 scan_frequency
是 1 分钟,这意味着 Filebeat 将休眠 1 分钟,然后再次查询新日志。
AWS API 调用可以花费的最大持续时间。如果超过此超时,AWS API 将被中断。AWS API 调用一个消息的默认超时时间是 120 秒。最小值为 0 秒。
这用于在同一收集周期内 AWS FilterLogEvents
API 调用之间进行休眠。FilterLogEvents
API 的配额是每秒 5 次事务 (TPS)/账户/区域。默认情况下,api_sleep
为 200 毫秒。此值仅在有多个 Filebeat 或多个 Filebeat 输入从同一区域和 AWS 账户收集日志时才应进行调整。
一些 AWS 服务发送到 CloudWatch 的日志其处理延迟大于 aws-cloudwatch
输入的 scan_frequency
。在这种情况下,请指定一个 latency
参数,以便收集的开始时间和结束时间将偏移指定的延迟量。
为了进行 AWS API 调用,aws-cloudwatch
输入需要 AWS 凭据。请参阅AWS 凭据选项了解更多详细信息。
IAM 用户访问 aws-cloudwatch 需要特定的 AWS 权限
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 设置为 true。
一个标签列表,Filebeat 将其包含在每个已发布事件的 tags
字段中。标签使得在 Kibana 中选择特定事件或在 Logstash 中应用条件过滤变得容易。这些标签将附加到通用配置中指定的标签列表。
示例
filebeat.inputs:
- type: aws-cloudwatch
. . .
tags: ["json"]
您可以指定的可选字段,用于向输出添加附加信息。例如,您可以添加可用于过滤日志数据的字段。字段可以是标量值、数组、字典或它们的任何嵌套组合。默认情况下,您在此处指定的字段将分组到输出文档的 fields
子字典下。要将自定义字段存储为顶级字段,请将 fields_under_root
选项设置为 true。如果在通用配置中声明了重复字段,则其值将被此处声明的值覆盖。
filebeat.inputs:
- type: aws-cloudwatch
. . .
fields:
app_id: query_engine_12
如果此选项设置为 true,则自定义字段将作为顶级字段存储在输出文档中,而不是分组到 fields
子字典下。如果自定义字段名称与 Filebeat 添加的其他字段名称冲突,则自定义字段会覆盖其他字段。
要应用于输入数据的一系列处理器。
有关在配置中指定处理器,请参阅处理器。
为该输入生成的事件设置的摄入管道 ID。
管道 ID 也可以在 Elasticsearch 输出中配置,但此选项通常会使配置文件更简单。如果管道同时在输入和输出中配置,则使用输入的选项。
pipeline
始终小写。如果 pipeline: Foo-Bar
,则 Elasticsearch 中的管道名称需要定义为 foo-bar
。
如果此选项设置为 true,则具有 null
值的字段将发布到输出文档中。默认情况下,keep_null
设置为 false
。
如果存在,此格式化字符串会覆盖此输入事件的索引(对于 elasticsearch 输出),或设置事件元数据的 raw_index
字段(对于其他输出)。此字符串只能引用代理名称、版本和事件时间戳;要访问动态字段,请使用 output.elasticsearch.index
或处理器。
示例值:"%{[agent.name]}-myindex-%{+yyyy.MM.dd}"
可能会展开为 "filebeat-myindex-2019.11.01"
。
默认情况下,所有事件都包含 host.name
。此选项可以设置为 true
以禁用向所有事件添加此字段。默认值为 false
。