默认情况下,当我创建Lambda函数时,CloudWatch Log Group将设置为Never Expire.是否可以设置到期时间(说14天),所以我不必在创建后从控制台手动设置它?
更新#1
感谢@jens walter回答这是如何解决问题的代码片段
Resources:
LambdaFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs6.10
CodeUri: <your code uri>
Policies: <your policies>
LambdaFunctionLogGroup:
Type: "AWS::Logs::LogGroup"
DependsOn: "LambdaFunction"
Properties:
RetentionInDays: 14
LogGroupName: !Join ["", ["/aws/lambda/", !Ref LambdaFunction]]
Run Code Online (Sandbox Code Playgroud) 我刚刚在我的ec2实例上配置了Cloudwatch日志,到目前为止我很喜欢它.我还为某些关键字设置了警报,例如"ERROR".虽然电子邮件警报似乎工作正常,但我想知道是否有办法微调警报电子邮件,使其简洁明了.具体来说,我期待
删除警报电子邮件中的所有样板文本.
包括有关触发警报的错误/异常的一些信息.这可能就像包含生成警报的日志语句一样简单.
现在,警报电子邮件看起来像
您收到此电子邮件是因为您在美国东部 - 弗吉尼亚州西部地区的Amazon CloudWatch警报"应用错误警报"已进入警报状态,因为"阈值已交叉:1个数据点(1.0)大于或等于阈值(1.0)".在"2017年2月7日星期二16:39:43 UTC".
在AWS管理控制台中查看此警报:https://console.aws.amazon.com/cloudwatch/home? region = us-east-1#s = Alert & alarm = App-Error-Alarm
警报详细信息: - 名称:应用程序错误警报 - 说明:app.log中的错误 - 状态更改:INSUFFICIENT_DATA - >警报 - 状态更改原因:阈值已交叉:1个数据点(1.0)大于或等于阈值( 1.0). - 时间戳:2017年2月7日星期二16:39:43 UTC - AWS账户:<>
阈值: - 当度量标准为GreaterThanOrEqualToThreshold 1.0 300秒时,警报处于ALARM状态.
受监视的度量标准: - MetricNamespace:LogMetrics - MetricName:ERROR - 维度: - 周期:300秒 - 统计:总和 - 单位:未指定
状态更改操作: - 确定: - ALARM:[arn:aws:sns:us-east-1:<>:support] - INSUFFICIENT_DATA:
我喜欢它
警报:应用程序错误警报
关键字:"ERROR"
原因:错误2017-02-07 07:31:47,375 [SimpleAsyncTaskExecutor-5] com.app.server.rest.Watcher:javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure
它的短小,甜美,瞬间告诉我它是否需要我立即注意.可以这样不作为建议编写代码做了这里?
我正在尝试使用 AWS Cloudwatch Logs 洞察力来搜索我们 lambda 函数的一些相当旧的日志。我正在AWS docs 上阅读本指南,但没有任何地方记录如何按时间戳过滤。我尝试了以下方法:
fields @timestamp, @message
| filter @timestamp > '2019-12-04T18:09:10.000+01:00'
| limit 200
| sort @timestamp desc
Run Code Online (Sandbox Code Playgroud)
但不起作用(返回 0 个结果)。
最初,当我自 2015年以来遇到此功能请求时,我试图找出是否有办法按时间戳列(而不是默认的日志组名称)对日志组进行排序- 这在eu-west-1 他们建议使用新的日志见解,但我无法完成这项工作。
有谁知道我如何按时间戳过滤日志,或者是否可以使用 Cloudwatch 日志见解来过滤日志?
谢谢!
amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs aws-cloudwatch-log-insights
如何将自定义日志添加到CloudWatch?发送默认日志但是如何添加自定义日志?
我已经添加了这样一个文件:(在.ebextensions中)
files:
"/opt/elasticbeanstalk/tasks/bundlelogs.d/applogs.conf" :
mode: "000755"
owner: root
group: root
content: |
/var/app/current/logs/*
"/opt/elasticbeanstalk/tasks/taillogs.d/cloud-init.conf" :
mode: "000755"
owner: root
group: root
content: |
/var/app/current/logs/*
Run Code Online (Sandbox Code Playgroud)
正如我所做的bundlelogs.d和taillogs.d这些自定义日志现在已经从控制台或网络中添加或检索,这很好但是它们不会持久存在且不会在CloudWatch上发送.
在CloudWatch中,我有默认日志,
/aws/elasticbeanstalk/InstanceName/var/log/eb-activity.log
而我希望有另一个这样的日志
/aws/elasticbeanstalk/InstanceName/var/app/current/logs/mycustomlog.log
amazon-web-services amazon-cloudwatch amazon-elastic-beanstalk amazon-cloudwatchlogs
设置在AWS CloudWatch的日志驱动程序docker
与做log-driver=awslogs
和log-opt
,例如-
#!/bin/bash
docker run \
--log-driver=awslogs \
--log-opt awslogs-region=eu-central-1 \
--log-opt awslogs-group=whatever-group \
--log-opt awslogs-stream=whatever-stream \
--log-opt awslogs-create-group=true \
wernight/funbox \
fortune
Run Code Online (Sandbox Code Playgroud)
我想在Kubernetes集群中使用AWS CloudWatch日志,其中每个pod包含一些Docker容器.每个部署都有一个单独的日志组,每个容器都有一个单独的流.我找不到通过Kubernetes create
/ 将日志记录参数发送到docker容器的方法apply
.
如何将log-driver
and log-opt
参数发送到pod/deployment中的Docker容器?
kubectl apply
kops
Kubernetes Logging Architecture
我试图在其中一个字段中使用包含JSON的数据的Logs Insights,并解析JSON字段
当我使用入门代码将其放入数据时,我的数据如下所示
fields @timestamp, @message
| sort @timestamp desc
| limit 25
Run Code Online (Sandbox Code Playgroud)
如何path
在嵌套的JSON中轻松提取变量以对其执行聚合?通过查看一些文档,我认为@message.path
可行,但似乎并非如此.有没有人成功解释了Insights中的JSON日志
编辑:我的数据的样本
#
@timestamp
@message
1
2018-12-19 23:42:52.000
I, [2018-12-19T23:42:52.629855 #23447] INFO -- : [2ce588f1-c27d-4a55-ac05-62a75b39e762] {"method":"GET","path":"/api/v1/professionals/ID","format":"json","controller":"API::V1::Public::ProfessionalsController","action":"show","status":200,"duration":285.27,"view":222.36,"time":"2018-12-19T23:42:52.344+00:00","params":{"include":"user,tags,promotions,company_sector,similar_professionals.tags,similar_professionals.user","format":"json","compress":false,"id":"ID"},"@timestamp":"2018-12-19T23:42:52.629Z","@version":"1","message":"[200] GET /api/v1/professionals/ID (API::V1::Public::ProfessionalsController#show)"}
@logStream i-05d1d61ab853517a0
@message I, [2018-12-19T23:42:52.629855 #23447] INFO -- : [2ce588f1-c27d-4a55-ac05-62a75b39e762] {"method":"GET","path":"/api/v1/professionals/ID","format":"json","controller":"API::V1::Public::ProfessionalsController","action":"show","status":200,"duration":285.27,"view":222.36,"time":"2018-12-19T23:42:52.344+00:00","params":{"include":"xxx","format":"json","compress":false,"id":"ID"},"@timestamp":"2018-12-19T23:42:52.629Z","@version":"1","message":"[200] GET /api/v1/professionals/ID (API::V1::Public::ProfessionalsController#show)"}
@timestamp 1545262972000
2
2018-12-19 23:42:16.000
I, [2018-12-19T23:42:16.723472 #851] INFO -- : [ea712503-eb86-4a6e-ab38-ddbcd6c2b4d0] {"method":"GET","path":"/api/v1/heartbeats/new","format":"json","controller":"API::V1::Public::HeartbeatsController","action":"new","status":201,"duration":9.97,"view":3.2,"time":"2018-12-19T23:42:16.712+00:00","params":{"format":"json","compress":false},"@timestamp":"2018-12-19T23:42:16.722Z","@version":"1","message":"[201] GET /api/v1/heartbeats/new (API::V1::Public::HeartbeatsController#new)"}
Run Code Online (Sandbox Code Playgroud) 尝试运行包含reqHeaders.x-forwarded-for
以下内容的 CloudWatch Insights 查询:
fields @timestamp, status, err, method, url, req_id, reqHeaders.x-forwarded-for
| filter status >= 400
| sort @timestamp desc
| limit 10
Run Code Online (Sandbox Code Playgroud)
但该字段始终为空,尽管已正确解析@message
。我怀疑这是因为子字段名称中的连字符。有谁知道如何重新格式化查询以使其显示?
编辑:这是一个日志消息示例(纯 JSON,我只是对其进行了格式化)
{
"cache": null,
"client": "172.31.10.31",
"component": "server",
"err": "Invalid access token",
"hostname": "0da665ab5653",
"level": 30,
"method": "PUT",
"msg": "REQ: 401 PUT /api/xxxxxxxxxx",
"name": "rocket",
"pid": 10,
"reqHeaders": {
"accept-encoding": "gzip",
"cloudfront-forwarded-proto": "https",
"cloudfront-is-desktop-viewer": "true",
"cloudfront-is-mobile-viewer": "false",
"cloudfront-is-smarttv-viewer": "false",
"cloudfront-is-tablet-viewer": "false",
"cloudfront-viewer-country": "XX",
"content-length": "74",
"content-type": "application/json; charset=UTF-8",
"host": "xxxxxxxxxx", …
Run Code Online (Sandbox Code Playgroud) amazon-cloudwatch amazon-cloudwatchlogs aws-cloudwatch-log-insights
我必须监控特定 lambda 的 CloudWatch 日志。当特定错误消息(例如 HTTP-50X)记录到 CloudWatch 时,我们需要发送电子邮件通知以提醒出现问题。
我们需要帮助在 AWS 中创建警报电子邮件,以手动监控日志以查看是否记录了任何此类错误。
amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs aws-cloudwatch-log-insights cloudwatch-alarms
有没有办法在 AWS 控制台中按“最近”到最旧来过滤 CloudWatch 日志流?我不得不向下滚动得难以置信的远才能看到我最近的日志消息。
我尝试过按 30 秒 - 5 分钟进行过滤,现在可以使用,我只是认为可能有一种更简单的方法来列出所有日志流,这些日志流从最近的顶部而不是最旧的开始。
有没有办法对 AWS CloudWatch Logs Insights 进行分页?谢谢。
我在想像下面这样的东西,但这不起作用
fields @message | page 2 | limit 20
Run Code Online (Sandbox Code Playgroud)
编辑:
在我的应用程序中,我通过AWS.Logger.Serilog访问它。但如果我可以对日志结果进行分页,我可以采用不同的方法(例如原始 API 调用)。
我尝试浏览 AWS CloudWatch 文档、谷歌和堆栈溢出。我试图克服的问题是如何对日志进行分页,这样它就不会加载给定查询的所有日志。
pagination amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs aws-cloudwatch-log-insights