- Filebeat 参考其他版本
- Filebeat 概述
- 快速入门:安装和配置
- 设置和运行
- 升级
- Filebeat 的工作原理
- 配置
- 输入
- 模块
- 通用设置
- 项目路径
- 配置文件加载
- 输出
- Kerberos
- SSL
- 索引生命周期管理 (ILM)
- Elasticsearch 索引模板
- Kibana 端点
- Kibana 仪表板
- 处理器
- 定义处理器
- add_cloud_metadata
- add_cloudfoundry_metadata
- add_docker_metadata
- add_fields
- add_host_metadata
- add_id
- add_kubernetes_metadata
- add_labels
- add_locale
- add_network_direction
- add_nomad_metadata
- add_observer_metadata
- add_process_metadata
- add_tags
- append
- cache
- community_id
- convert
- copy_fields
- decode_base64_field
- decode_cef
- decode_csv_fields
- decode_duration
- decode_json_fields
- decode_xml
- decode_xml_wineventlog
- decompress_gzip_field
- detect_mime_type
- dissect
- dns
- drop_event
- drop_fields
- extract_array
- fingerprint
- include_fields
- move_fields
- parse_aws_vpc_flow_log
- rate_limit
- registered_domain
- rename
- replace
- script
- syslog
- timestamp
- translate_ldap_attribute
- translate_sid
- truncate_fields
- urldecode
- 自动发现
- 内部队列
- 日志记录
- HTTP 端点
- 正则表达式支持
- 检测
- 功能标志
- filebeat.reference.yml
- 操作指南
- 模块
- 模块概述
- ActiveMQ 模块
- Apache 模块
- Auditd 模块
- AWS 模块
- AWS Fargate 模块
- Azure 模块
- CEF 模块
- Check Point 模块
- Cisco 模块
- CoreDNS 模块
- CrowdStrike 模块
- Cyberark PAS 模块
- Elasticsearch 模块
- Envoyproxy 模块
- Fortinet 模块
- Google Cloud 模块
- Google Workspace 模块
- HAproxy 模块
- IBM MQ 模块
- Icinga 模块
- IIS 模块
- Iptables 模块
- Juniper 模块
- Kafka 模块
- Kibana 模块
- Logstash 模块
- Microsoft 模块
- MISP 模块
- MongoDB 模块
- MSSQL 模块
- MySQL 模块
- MySQL Enterprise 模块
- NATS 模块
- NetFlow 模块
- Nginx 模块
- Office 365 模块
- Okta 模块
- Oracle 模块
- Osquery 模块
- Palo Alto Networks 模块
- pensando 模块
- PostgreSQL 模块
- RabbitMQ 模块
- Redis 模块
- Salesforce 模块
- Santa 模块
- Snyk 模块
- Sophos 模块
- Suricata 模块
- System 模块
- Threat Intel 模块
- Traefik 模块
- Zeek (Bro) 模块
- ZooKeeper 模块
- Zoom 模块
- 导出的字段
- ActiveMQ 字段
- Apache 字段
- Auditd 字段
- AWS 字段
- AWS CloudWatch 字段
- AWS Fargate 字段
- Azure 字段
- Beat 字段
- 解码 CEF 处理器字段
- CEF 字段
- Checkpoint 字段
- Cisco 字段
- 云提供商元数据字段
- Coredns 字段
- Crowdstrike 字段
- CyberArk PAS 字段
- Docker 字段
- ECS 字段
- Elasticsearch 字段
- Envoyproxy 字段
- Fortinet 字段
- Google Cloud Platform (GCP) 字段
- google_workspace 字段
- HAProxy 字段
- 主机字段
- ibmmq 字段
- Icinga 字段
- IIS 字段
- iptables 字段
- Jolokia Discovery 自动发现提供程序字段
- Juniper JUNOS 字段
- Kafka 字段
- kibana 字段
- Kubernetes 字段
- 日志文件内容字段
- logstash 字段
- Lumberjack 字段
- Microsoft 字段
- MISP 字段
- mongodb 字段
- mssql 字段
- MySQL 字段
- MySQL Enterprise 字段
- NATS 字段
- NetFlow 字段
- Nginx 字段
- Office 365 字段
- Okta 字段
- Oracle 字段
- Osquery 字段
- panw 字段
- Pensando 字段
- PostgreSQL 字段
- 进程字段
- RabbitMQ 字段
- Redis 字段
- s3 字段
- Salesforce 字段
- Google Santa 字段
- Snyk 字段
- sophos 字段
- Suricata 字段
- System 字段
- threatintel 字段
- Traefik 字段
- Windows ETW 字段
- Zeek 字段
- ZooKeeper 字段
- Zoom 字段
- 监控
- 安全
- 故障排除
- 获取帮助
- 调试
- 了解记录的指标
- 常见问题
- 在使用 Kubernetes 元数据时提取容器 ID 时出错
- 无法从网络卷读取日志文件
- Filebeat 未从文件中收集行
- 打开的文件句柄过多
- 注册表文件太大
- Inode 重用导致 Filebeat 跳过行
- 日志轮换导致事件丢失或重复
- 打开的文件句柄导致 Windows 文件轮换出现问题
- Filebeat 占用过多 CPU
- Kibana 中的仪表板错误地分解数据字段
- 字段未在 Kibana 可视化中编制索引或可用
- Filebeat 未传输文件的最后一行
- Filebeat 长时间保持已删除文件的打开文件句柄
- Filebeat 使用过多带宽
- 加载配置文件时出错
- 发现意外或未知字符
- Logstash 连接不起作用
- 发布到 Logstash 失败,并显示“connection reset by peer”消息
- @metadata 在 Logstash 中丢失
- 不确定是使用 Logstash 还是 Beats
- SSL 客户端无法连接到 Logstash
- 监控 UI 显示的 Beats 比预期的少
- 仪表板无法定位索引模式
- 由于 MADV 设置导致高 RSS 内存使用率
- 为 Beats 做贡献
AWS Fargate 模块
编辑AWS Fargate 模块
编辑此功能为 Beta 版,可能会发生更改。其设计和代码不如官方 GA 功能成熟,按“原样”提供,不提供任何保证。Beta 功能不受官方 GA 功能的支持 SLA 的约束。
此模块可用于从 Fargate 上的 Amazon ECS 收集容器日志。它使用 Filebeat 的 awscloudwatch
输入来从 AWS CloudWatch 中的一个或多个日志流中获取日志文件。通过在任务定义中的 logConfiguration
部分下添加 awslogs
日志驱动程序,可以将 Fargate 启动类型任务中所有容器的日志发送到 CloudWatch。例如,可以通过将此部分添加到 containerDefinitions
中,将 logConfiguration
添加到任务定义中
{ "logDriver":"awslogs", "options":{ "awslogs-group":"awslogs-wordpress", "awslogs-region":"us-west-2", "awslogs-stream-prefix":"awslogs-example" } }
awsfargate
模块需要配置 AWS 凭证才能进行 AWS API 调用。用户可以使用 access_key_id
、secret_access_key
和/或 session_token
,或使用 role_arn
AWS IAM 角色,或使用共享的 AWS 凭证文件。
有关更多详细信息,请参阅 AWS 凭证选项。
模块配置
编辑示例配置
- module: awsfargate log: enabled: true var.credential_profile_name: test-filebeat var.log_group_arn: arn:aws:logs:us-east-1:1234567890:log-group:/ecs/test-log-group:*
-
var.log_group_arn
- 要从中收集日志的日志组的 ARN。
-
var.log_group_name
- 要从中收集日志的日志组的名称。注意:当给出 log_group_name 时,需要 region_name。
-
var.region_name
- 指定日志组所属的区域。
-
var.log_streams
- Filebeat 从中收集日志事件的日志流名称的字符串列表。
-
var.log_stream_prefix
- 一个字符串,用于过滤结果,仅包括名称以此前缀开头的日志流的日志事件。
-
var.start_position
-
start_position
允许用户指定此输入是从beginning
还是从end
读取日志文件。-
beginning
:从日志组的开头读取(默认)。 -
end
:仅从当前时间减去scan_frequency
开始读取新消息
-
-
var.scan_frequency
- 此配置参数设置 Filebeat 从指定日志组检查新日志事件的频率。默认的
scan_frequency
为 1 分钟,这意味着 Filebeat 将休眠 1 分钟,然后再查询新的日志。 -
var.api_timeout
- AWS API 可以花费的最长时间。如果超过超时时间,AWS API 将被中断。消息的默认 AWS API 超时时间为 120 秒。最小值为 0 秒。
-
var.api_sleep
- 这用于在同一收集周期内 AWS
FilterLogEvents
API 调用之间休眠。FilterLogEvents
API 的配额为每秒 5 个事务 (TPS)/帐户/区域。默认情况下,api_sleep
为 200 毫秒。只有当多个 Filebeat 或多个 Filebeat 输入从同一区域和 AWS 帐户收集日志时,才应调整此值。 -
var.shared_credential_file
- AWS 凭证文件的文件名。
-
var.credential_profile_name
- AWS 凭证配置文件名称。
-
var.access_key_id
- 访问密钥的第一部分。
-
var.secret_access_key
- 访问密钥的第二部分。
-
var.session_token
- 使用临时安全凭证时必需。
-
var.role_arn
- 要承担的 AWS IAM 角色。
-
var.endpoint
- 用于访问 AWS API 的自定义端点。
AWS 凭证配置
编辑要配置 AWS 凭证,请将凭证放入 Filebeat 配置中,或使用共享的凭证文件,如下例所示。
配置参数
编辑- access_key_id:访问密钥的第一部分。
- secret_access_key:访问密钥的第二部分。
- session_token:使用临时安全凭证时必需。
- credential_profile_name:共享凭证文件中的配置文件名称。
- shared_credential_file:共享凭证文件的目录。
- role_arn:要承担的 AWS IAM 角色。
- external_id:在另一个帐户中承担角色时要使用的外部 ID,请参阅 AWS 文档,了解如何使用外部 ID。
-
proxy_url:用于连接到 AWS Web 服务的代理的 URL。语法为
http(s)://<IP/主机名>:<端口>
-
fips_enabled:启用此选项会指示 Filebeat 使用服务的 FIPS 端点。Filebeat 使用的所有服务都与 FIPS 兼容,除了
tagging
,但只有某些区域与 FIPS 兼容。有关 FIPS 端点和区域的完整列表,请参阅 https://aws.amazon.com/compliance/fips/ 或相应的服务页面 https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html。 - ssl:这指定 SSL/TLS 配置。如果缺少 ssl 部分,则主机的 CA 将用于 HTTPS 连接。有关更多信息,请参阅 SSL。
- default_region:如果没有设置其他区域,则要查询的默认区域。大多数 AWS 服务都提供可用于发出请求的区域端点。某些服务(例如 IAM)不支持区域。如果没有任何其他方式(环境变量、凭证或实例配置文件)提供区域,则将使用此处设置的值。
- assume_role.duration:请求的承担角色会话的持续时间。默认值为 15 分钟(如果未设置)。AWS 允许的最大会话持续时间在 1 小时到 12 小时之间,具体取决于您的最大会话持续时间策略。
- assume_role.expiry_window:expiry_window 将允许在会话过期之前刷新会话。这有利于防止过期的令牌导致请求因 ExpiredTokenException 而失败。
支持的格式
编辑本节中的示例引用 Metricbeat,但与 AWS 进行身份验证的凭证选项是相同的,无论使用哪个 Beat。
- 使用
access_key_id
、secret_access_key
和/或session_token
用户可以将凭证放入 Metricbeat 模块配置中,也可以改用环境变量 AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
和/或 AWS_SESSION_TOKEN
。
如果在 Docker 上运行,这些环境变量应作为 docker 命令的一部分添加。例如,使用 Metricbeat
$ docker run -e AWS_ACCESS_KEY_ID=abcd -e AWS_SECRET_ACCESS_KEY=abcd -d --name=metricbeat --user=root --volume="$(pwd)/metricbeat.aws.yml:/usr/share/metricbeat/metricbeat.yml:ro" docker.elastic.co/beats/metricbeat:7.11.1 metricbeat -e -E cloud.auth=elastic:1234 -E cloud.id=test-aws:1234
示例 metricbeat.aws.yml
如下所示
metricbeat.modules: - module: aws period: 5m access_key_id: ${AWS_ACCESS_KEY_ID} secret_access_key: ${AWS_SECRET_ACCESS_KEY} session_token: ${AWS_SESSION_TOKEN} metricsets: - ec2
也可以通过文件添加环境变量。例如
$ cat env.list AWS_ACCESS_KEY_ID=abcd AWS_SECRET_ACCESS_KEY=abcd $ docker run --env-file env.list -d --name=metricbeat --user=root --volume="$(pwd)/metricbeat.aws.yml:/usr/share/metricbeat/metricbeat.yml:ro" docker.elastic.co/beats/metricbeat:7.11.1 metricbeat -e -E cloud.auth=elastic:1234 -E cloud.id=test-aws:1234
- 使用
credential_profile_name
和/或shared_credential_file
如果未提供 access_key_id
、secret_access_key
和 role_arn
,则 filebeat 将检查 credential_profile_name
。如果对不同的工具或应用程序使用不同的凭证,可以使用配置文件在同一配置文件中配置多个访问密钥。如果没有提供 credential_profile_name
,将使用默认配置文件。
shared_credential_file
是可选的,用于指定共享凭证文件的目录。如果为空,则将使用默认目录。在 Windows 中,共享凭证文件位于 C:\Users\<yourUserName>\.aws\credentials
。对于 Linux、macOS 或 Unix,该文件位于 ~/.aws/credentials
。当作为服务运行时,主路径取决于管理该服务的用户,因此可以使用 shared_credential_file
参数来避免歧义。有关更多详细信息,请参阅 创建共享凭证文件。
- 使用
role_arn
role_arn
用于指定要承担哪个 AWS IAM 角色以生成临时凭证。如果提供了 role_arn
,filebeat 将检查是否提供了访问密钥。如果没有,filebeat 将检查凭证配置文件名称。如果两者都没有提供,则将使用默认的凭证配置文件。请确保在凭证配置文件或访问密钥下提供了凭证。
如果在 Docker 上运行,则需要通过卷挂载提供凭证文件。例如,使用 Metricbeat
docker run -d --name=metricbeat --user=root --volume="$(pwd)/metricbeat.aws.yml:/usr/share/metricbeat/metricbeat.yml:ro" --volume="/Users/foo/.aws/credentials:/usr/share/metricbeat/credentials:ro" docker.elastic.co/beats/metricbeat:7.11.1 metricbeat -e -E cloud.auth=elastic:1234 -E cloud.id=test-aws:1234
示例 metricbeat.aws.yml
如下所示
metricbeat.modules: - module: aws period: 5m credential_profile_name: elastic-beats shared_credential_file: /usr/share/metricbeat/credentials metricsets: - ec2
-
在 Filebeat 配置中使用 AWS 凭证
filebeat.inputs: - type: aws-s3 queue_url: https://sqs.us-east-1.amazonaws.com/123/test-queue access_key_id: '<access_key_id>' secret_access_key: '<secret_access_key>' session_token: '<session_token>'
或
filebeat.inputs: - type: aws-s3 queue_url: https://sqs.us-east-1.amazonaws.com/123/test-queue access_key_id: '${AWS_ACCESS_KEY_ID:""}' secret_access_key: '${AWS_SECRET_ACCESS_KEY:""}' session_token: '${AWS_SESSION_TOKEN:""}'
-
使用 IAM 角色 ARN
filebeat.inputs: - type: aws-s3 queue_url: https://sqs.us-east-1.amazonaws.com/123/test-queue role_arn: arn:aws:iam::123456789012:role/test-mb
-
使用共享的 AWS 凭证文件
filebeat.inputs: - type: aws-s3 queue_url: https://sqs.us-east-1.amazonaws.com/123/test-queue credential_profile_name: test-fb
AWS 凭证类型
编辑可以使用两种不同的 AWS 凭证类型:访问密钥和临时安全凭证。
- 访问密钥
AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
是访问密钥的两个部分。它们是 IAM 用户或 AWS 账户根用户的长期凭证。有关更多详细信息,请参阅 AWS 访问密钥和秘密访问密钥。
- IAM 角色 ARN
IAM 角色是您可以在您的账户中创建的 IAM 身份,它具有特定的权限,这些权限决定了该身份在 AWS 中可以做什么和不能做什么。角色不具有标准的长期凭证,例如密码或访问密钥。相反,当您承担角色时,它会为您提供角色会话的临时安全凭证。IAM 角色 Amazon Resource Name (ARN) 可用于指定要承担哪个 AWS IAM 角色以生成临时凭证。有关更多详细信息,请参阅AssumeRole API 文档。
以下是使用 AWS CLI 为 Metricbeat 设置 IAM 角色的步骤。请将 123456789012
替换为您自己的账户 ID。
步骤 1. 创建 example-policy.json
文件以包含所有权限
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:GetObject", "sqs:ReceiveMessage" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "sqs:ChangeMessageVisibility", "Resource": "arn:aws:sqs:us-east-1:123456789012:test-fb-ks" }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": "sqs:DeleteMessage", "Resource": "arn:aws:sqs:us-east-1:123456789012:test-fb-ks" }, { "Sid": "VisualEditor3", "Effect": "Allow", "Action": [ "sts:AssumeRole", "sqs:ListQueues", "tag:GetResources", "ec2:DescribeInstances", "cloudwatch:GetMetricData", "ec2:DescribeRegions", "iam:ListAccountAliases", "sts:GetCallerIdentity", "cloudwatch:ListMetrics" ], "Resource": "*" } ] }
步骤 2. 使用 aws iam create-policy
命令创建 IAM 策略
$ aws iam create-policy --policy-name example-policy --policy-document file://example-policy.json
步骤 3. 创建 JSON 文件 example-role-trust-policy.json
,该文件定义 IAM 角色的信任关系
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "sts:AssumeRole" } }
步骤 4. 创建 IAM 角色并附加策略
$ aws iam create-role --role-name example-role --assume-role-policy-document file://example-role-trust-policy.json $ aws iam attach-role-policy --role-name example-role --policy-arn "arn:aws:iam::123456789012:policy/example-policy"
完成这些步骤后,IAM 角色 ARN 可用于 Metricbeat aws
模块中的身份验证。
- 临时安全凭证
临时安全凭证具有有限的生命周期,它由访问密钥 ID、秘密访问密钥和安全令牌组成,这些令牌通常是从 GetSessionToken
返回的。启用 MFA 的 IAM 用户在调用 GetSessionToken
时需要提交 MFA 代码。有关更多详细信息,请参阅临时安全凭证。sts get-session-token
AWS CLI 可用于生成临时凭证。例如,对于启用 MFA 的情况:
aws> sts get-session-token --serial-number arn:aws:iam::1234:mfa/your-email@example.com --token-code 456789 --duration-seconds 129600
由于临时安全凭证是短期的,因此在过期后,用户需要生成新的凭证并使用新凭证修改 aws.yml 配置文件。除非为 Metricbeat 启用了实时重新加载功能,否则用户需要在更新配置文件后手动重启 Metricbeat,才能继续收集 Cloudwatch 指标。如果在旧凭证过期之前没有用新凭证更新配置文件,这将导致数据丢失。对于 Metricbeat,我们建议用户在配置文件中使用访问密钥来启用 aws 模块,这样可以调用 AWS API,而无需频繁生成新的临时凭证和更新配置。
IAM 策略是一个实体,用于定义对 AWS 环境中对象的权限。需要在 IAM 用户的策略中添加特定权限,以授权 Metricbeat 收集 AWS 监控指标。有关所需权限,请参阅每个指标集的文档。
字段
编辑有关模块中每个字段的描述,请参阅导出的字段部分。