首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ECS中收集Python日志到DataDog

在ECS中收集Python日志到DataDog
EN

Stack Overflow用户
提问于 2018-07-20 20:57:38
回答 1查看 1.8K关注 0票数 1

我很难收集使用DataDog代理部署在ECS中的python应用程序的日志。我在ECS中部署了一个对接的Flask应用程序。该应用程序将日志发送到stdout。我现在需要在DataDog中监控它们。

我添加了一个新的DataDog代理容器(兼容Fargate,因为我使用的是Fargate),它作为应用程序相同任务的一部分运行。我可以在app.datadoghq.com/containers中看到两个容器的CPU和内存指标,这意味着DataDog代理正在工作。

我现在需要应用程序日志。我浏览了https://app.datadoghq.com/logs/onboarding/container格式的文档,添加了

代码语言:javascript
复制
  "dockerLabels": {
    "com.datadoghq.ad.logs": "[{\"source\": \"python\", \"service\": \"flask\"}]"
  },

添加到应用程序容器,并将以下env.vars添加到DataDog容器:

代码语言:javascript
复制
  "environment": [
    {
      "name": "DD_API_KEY",
      "value": "<key>"
    },
    {
      "name": "DD_LOGS_ENABLED",
      "value": "true"
    },
    {
      "name": "DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL",
      "value": "true"
    },
    {
      "name": "SD_BACKEND",
      "value": "docker"
    },
    {
      "name": "ECS_FARGATE",
      "value": "true"
    }
  ]

但这似乎还不够。我走的方向对吗?我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-21 06:20:42

我与Datadog support讨论了这个问题,他们确认awslogs日志记录驱动程序阻止Datadog代理容器访问容器的日志。由于awslogs目前是使用Fargate启动类型的任务可用的唯一日志记录驱动程序,因此将日志记录到Datadog中将需要另一种方法。

由于awslogs日志记录驱动程序将日志发送到CloudWatch,因此我使用的一种方法是创建一个订阅,按照配置的here将这些日志组流式传输到Datadog函数。您可以使用CloudWatch日志作为触发器从Lambda side执行此操作,也可以从CloudWatch日志端单击Actions> Stream to AWS Lambda执行此操作。

我选择Lambda选项是因为它快速简单,并且不需要对我们的应用程序进行代码更改(因为我们仍处于评估阶段)。Datadog support建议我有必要修改Lambda函数,以便将日志属性分配给相应的服务:

this block中,将其修改为类似以下内容:

代码语言:javascript
复制
structured_line = merge_dicts(log, {
    "syslog.hostname": logs["logStream"],
    "syslog.path": logs["logGroup"],
    "syslog.appname": logs["logGroup"],
    "aws": {
        "awslogs": {
            "logGroup": logs["logGroup"],
            "logStream": logs["logStream"],
            "owner": logs["owner"]
        }
    }
})

根据Datadog支持:

  1. syslog.appname需要匹配现有的应用程序维护管理服务,以便将日志与service.
  2. This解决方案相关联目前不完全支持,他们正在更详细地记录这一点。

我不得不做进一步的修改,以一种对我们的应用程序有意义的方式来设置syslog.*键的值,但它工作得很好。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51443070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档