首页 > 解决方案 > 如果消息与 file_selectors 不匹配,则将 Filebeat 配置为不删除 AWS SQS 消息

问题描述

场景

AWS S3 配置为向 SQS 队列发送事件通知

Filebeataws-s3-plugin用于通过 SQS 队列从 S3 中提取日志

filebeat.inputs:
  - type: aws-s3
    queue_url: https://sqs.us-east-2.amazonaws.com/aws-id/queue-name
    gzip: true
    file_selectors:
      - regex: '.*-mytype.log.*'

Filebeat 删除队列中存在的所有消息,而它应该只处理和删除与file_selectors正则表达式匹配的消息

问题:如果消息与正则表达式不匹配,如何配置不删除filebeatSQS队列消息file_selectors

附言

我试图实现的用例是

  1. AWS S3 通知 -> SQS 队列(所有类型的文件)
  2. 使用相同队列配置的多个 filebeat 实例
    • Filebeat-1:file_selectors为 file_type_1 配置。文件节拍输出:Logstash
    • Filebeat-2:file_selectors为 file_type_2 配置。文件节拍输出:Elasticsearch

标签: amazon-s3amazon-sqsfilebeatelk

解决方案


@sniper 我认为配置不会以您希望它使用单个 SQS 队列的方式工作。每个 filebeat 输入将尝试从队列中读取所有消息并用于file_selectors决定要下载哪些文件,但会读取并忽略所有其他消息。

您可以使用的一种模式是使用 SNS 和 SQS 进行扇出。S3 在上传文件时将事件发布到 SNS。每个对应于一个 filebeat 输入的多个 SQS 队列订阅到 SNS。 https://docs.aws.amazon.com/sns/latest/dg/sns-sqs-as-subscriber.html


推荐阅读