Logstash grok配置错误-在分析文件名时

Logstash grok配置错误-在分析文件名时,logstash,logstash-grok,Logstash,Logstash Grok,我不熟悉logstash和grok,我正在尝试以以下格式解析S3存储桶中的AWS ECS日志- 文件名-my-logs-s3-bucket/3d265ee3-d2ee-4029-a3d9-fd2255d69b92/ecs-fargate-container-8ff0e472-c76f-4f61-a363-64c2b80aa842/000000.gz 采样线- 2019-05-09T16:16:16.983Z JBoss Bootstrap Environment 2019-05-09T16:

我不熟悉logstash和grok,我正在尝试以以下格式解析S3存储桶中的AWS ECS日志-

文件名-
my-logs-s3-bucket/3d265ee3-d2ee-4029-a3d9-fd2255d69b92/ecs-fargate-container-8ff0e472-c76f-4f61-a363-64c2b80aa842/000000.gz

采样线-

2019-05-09T16:16:16.983Z   JBoss Bootstrap Environment
2019-05-09T16:16:16.983Z   JBOSS_HOME: /app/jboss
2019-05-09T16:16:16.983Z   JAVA_OPTS:  -server -XX:+UseCompressedOops  -Djboss.server.log.dir=/var/log/jboss -Xms128m -Xmx4096m 
和logstash.conf

input {
  s3 {
    region => "us-east-1"
    bucket => "my-logs-s3-bucket"
    interval => "7200"
  }
}

filter {
  grok {
    match => ["message", "%{TIMESTAMP_ISO8601:tstamp}"]
  }
  date {
    match => ["tstamp", "ISO8601"]
  }
  mutate {
    remove_field => ["tstamp"]
    add_field => {
      "file" => "%{[@metadata][s3][key]}"
    }
    ######### NEED HELP HERE - START #########
    #grok {
    #  match => [ "file", "ecs-fargate-container-%{DATA:containerlogname}"]
    #}
    ######### NEED HELP HERE - END #########
  }
}

output {
 stdout { codec => rubydebug {
    #metadata => true
  }
 }
}
当我使用上述配置运行logstash时,我能够看到所有解析的日志和提取的文件名,并且输出的文件名如下所示-

“文件”=>“myapp日志/3d265ee3-d2ee-4029-a3d9-fd2255d69b92/ecs-fargate-container-8ff0e472-c76f-4f61-a363-64c2b80aa842/000000.gz”,

我正在尝试使用grok将文件名提取为
ecs-fargate-container-8ff0e472-c76f-4f61-a363-64c2b80aa842
8ff0e472-c76f-4f61-a363-64c2b80aa842
,方法是取消注释
之间的grok配置行,此处需要帮助-以以下错误开始
结束-

在过滤器{\n grok{\n match=>[\'message\',\'{TIMESTAMP\u ISO8601:tstamp}\\']\n}\n日期{\n match=>[\'tstamp\',\'ISO8601\']之后的第21行第10列(字节536){\n}\n修改{\n\n删除{u字段=>\\'tstamp\\\\\\\\\\\\\\\\\\\\\\\\\\\\\添加{u字段=>{\n\\\\\\\\\\\\'file\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\“,:


我不确定这是哪里出了问题。请给出建议。

您的
grok
筛选器在
mutate
筛选器中,请尝试以下操作

filter {
    grok {
        match => ["message", "%{TIMESTAMP_ISO8601:tstamp}"]
    }
    date {
        match => ["tstamp", "ISO8601"]
    }
    mutate {
        remove_field => ["tstamp"]
        add_field => { "file" => "%{[@metadata][s3][key]}" }
    }
    grok {
        match => [ "file", "ecs-fargate-container-%{DATA:containerlogname}"]
    }
}

谢谢。我也在发布问题后找到了答案,但不允许我在一天内添加答案!