AWS EB Node.JS 日志到 CloudWatch
Posted
技术标签:
【中文标题】AWS EB Node.JS 日志到 CloudWatch【英文标题】:AWS EB Node.JS Log to 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,仅此而已。 【参考方案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
以上是关于AWS EB Node.JS 日志到 CloudWatch的主要内容,如果未能解决你的问题,请参考以下文章
AWS EB + Nginx,更新 access.log 格式或创建新日志
AWS EB 部署节点应用程序:无法运行 npm install
AWS OpsWorks 上 node.js 的应用程序日志在哪里
使用 Node.js 和 AWS Lambda 将 S3 文件的内容记录到 postgres 表
Node.js中的代码AWS Lambda Package不会调用putRecord()来将数据添加到AWS Kinesis Firehose Stream中