amazon-web-services - AWS - 将多个 lambda 日志订阅到一个 Elasticsearch 服务

标签 amazon-web-services elasticsearch logging elastic-stack amazon-cloudwatch

我有两个由两个不同的 lambda 生成的日志组。当我将一个日志组订阅到我的 elasticsearch 服务时,它正在运行。但是,当我添加其他日志组时,cloudwatch 生成的日志中出现以下错误:

"responseBody": "{\"took\":5,\"errors\":true,\"items\":[{\"index\":{\"_index\":\"cwl-2018.03.01\",\"_type\":\"/aws/lambda/lambda-1\",\"_id\":\"33894733850010958003644005072668130559385092091818016768\",\"status\":400,\"error\":
{\"type\":\"illegal_argument_exception\",\"reason\":\"Rejecting mapping update to [cwl-2018.03.01] as the final mapping would have more than 1 type: [/aws/lambda/lambda-1, /aws/lambda/lambda-2]\"}}}]}"

我怎样才能解决这个问题,并且在我的 Elasticsearch 服务中仍然有两个日志组,并可视化所有日志?

谢谢。

最佳答案

问题在于 ElasticSearch 6.0.0 进行了更改,允许索引仅包含单一映射类型。 ( https://www.elastic.co/guide/en/elasticsearch/reference/6.0/removal-of-types.html ) 我假设您正在运行一个使用 6.0 版的 ElasticSearch 服务实例。

如果通过 AWS 控制台创建的默认 Lambda JS 文件会将索引类型设置为日志组名称。 JS 文件的示例位于此要点 ( https://gist.github.com/iMilnb/27726a5004c0d4dc3dba3de01c65c575 )

第 86 行:action.index._type = payload.logGroup;

我个人使用了该脚本的修改版本并将该行更改为:

action.index._type = 'cwl';

我有来自各种不同日志组的日志流式传输到同一个 ElasticSearch 实例。将它们全部设为相同类型是有意义的,因为它们都是 CloudWatch 日志,而不是将类型设为日志组名称。该名称也在 @log_group 中设置字段,以便查询可以使用它进行过滤。

在我的例子中,我做了以下事情:

  1. 部署修改后的 Lambda
  2. 重新索引今天的索引(例如 cwl-2018.03.07)以更改类型 来自 <log group name> 的旧文件至 cwl
  3. 来自不同日志组的条目现在将共存。

关于amazon-web-services - AWS - 将多个 lambda 日志订阅到一个 Elasticsearch 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49045483/

相关文章:

elasticsearch - ES 不区分大小写的 bool 字段

logging - Filebeat 多行 kubernetes 容器日志不起作用

python - 在 Python 中调用 getLogger 之前,我是否需要显式检查 __name__ == "__main__"?

node.js - 在 Elastic Beanstalk AWS 中为 NodeJs 应用程序提供静态文件

amazon-web-services - 具有 Cloudformation 的 AWS 无服务器 API 的阶段 "dev already exists"

amazon-web-services - 有没有办法知道 AWS AppConfig 中更新的配置?

search - ElasticSearch POST with json search body vs GET with json in url

elasticsearch - 让kibana 4发送警报或在特定条件下采取措施的任何方式

java - AWS Beanstalk 中 Spring cron 作业的双重执行(2 个线程)

azure - 防止 Azure Live Metrics Stream 将每个轮询记录到队列