【问题标题】:AWS EB Node.JS Log to CloudWatchAWS EB Node.JS 日志到 CloudWatch
【发布时间】:2015-11-23 01:53:51
【问题描述】:

是否有任何可能的解决方案将在 Elastic Beanstalk 上运行的应用程序的 Node.JS 日志流式传输到 Amazon CloudWatch?

我确实看到了 cwl-webrequest-metrics.config 文件,但没有关于其格式的信息,我无法将其格式化以将 Node.JS 日志(仅)流式传输到 CloudWatch。

那你提前为你的cmets!

【问题讨论】:

  • 你能详细说明一下 stream 吗,你想像我们一样做 "tail -f /logs" 吗?
  • 我只是希望 /var/log/nodejs/nodejs.log 自动从 EB 流式传输到 CloudWatch,仅此而已。

标签: node.js amazon-web-services amazon-elastic-beanstalk amazon-cloudwatch


【解决方案1】:

问题有点老了,但对于那些来自 Google 的人来说,这里有一个有效的 .ebextension 配置,用于将 Node.JS 日志流式传输到 cloudwatch:

# Store Node.JS Application Logs in Cloudwatch
Mappings:
  CWLogs:
    NodeJSLogGroup:
      LogFile: "/var/log/nodejs/nodejs.log"
      TimestampFormat: "%d/%b/%Y:%H:%M:%S %z"

Outputs:
  NodeJSCWLogGroup:
    Description: "Node.JS Application Logs"
    Value: { "Ref" : "AWSEBCloudWatchLogs8832c8d3f1a54c238a40e36f31ef55a0NodeJSLogGroup"}


Resources :
  AWSEBCloudWatchLogs8832c8d3f1a54c238a40e36f31ef55a0NodeJSLogGroup:    ## Must have prefix:  AWSEBCloudWatchLogs8832c8d3f1a54c238a40e36f31ef55a0
    Type: "AWS::Logs::LogGroup"
    DependsOn: AWSEBBeanstalkMetadata
    DeletionPolicy: Retain     ## this is required
    Properties:
      LogGroupName:
        "Fn::GetOptionSetting":
          Namespace: "aws:elasticbeanstalk:application:environment"
          OptionName: NodeJSCWLogGroup
          DefaultValue: {"Fn::Join":["-", [{ "Ref":"AWSEBEnvironmentName" }, "nodejs"]]}
      RetentionInDays: 14


  ## Register the files/log groups for monitoring
  AWSEBAutoScalingGroup:
    Metadata:
      "AWS::CloudFormation::Init":
        CWLogsAgentConfigSetup:
          files:
            ## any .conf file put into /tmp/cwlogs/conf.d will be added to the cwlogs config (see cwl-agent.config)
            "/tmp/cwlogs/conf.d/nodejs.conf":
              content : |
                [nodjs-log]
                file = `{"Fn::FindInMap":["CWLogs", "NodeJSLogGroup", "LogFile"]}`
                log_group_name = `{ "Ref" : "AWSEBCloudWatchLogs8832c8d3f1a54c238a40e36f31ef55a0NodeJSLogGroup" }`
                log_stream_name = {instance_id}
                datetime_format = `{"Fn::FindInMap":["CWLogs", "NodeJSLogGroup", "TimestampFormat"]}`
              mode  : "000400"
              owner : root
              group : root

看起来http://serebrov.github.io/html/2015-05-20-cloudwatch-setup.html 可能也是一个很好的参考。

【讨论】:

  • 在 Linux 2 上仅供参考,AWS 使用 /var/log/web.stdout.log 而不是 /var/log/nodejs/nodejs.log
猜你喜欢
  • 2020-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-25
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
相关资源
最近更新 更多