我正在尝试触发自定义 cloudwatch 指标。在指标事件上设置时间戳对我们很重要。
当我将时间戳设置为过去一天左右的时间时,我可以看到该事件几乎立即出现在 cloudwatch 控制面板上或使用 aws-cli。
问题是当我将时间戳设置为一天前的时间时。我似乎需要很长时间才能看到这个事件。我没有确切的测量值,但有些事件需要大约 24 小时才能出现。
这是正常的吗?是否有任何文档可以在任何地方解释这一点?顺便说一下,我知道 cloudwatch 只将事件保留 14 天 - 我不想设置过去那么远的时间戳。
顺便说一句,我使用的是通过Apache的骆驼在Java SDK将数据发送到CloudWatch的,但我不认为这是相关的-事件是要CloudWatch的使用适当的时间戳。
我正在尝试使用 boto 获取 elasticsearch cloud-watch 指标,但无论我做什么,我都没有得到价值。下面是我的代码片段,例如,如果我用于 RDS 指标,则相同的代码可以工作。
import datetime
import boto.ec2.cloudwatch
end = datetime.datetime.utcnow()
start = end - datetime.timedelta(minutes=5)
metric="CPUUtilization"
region = boto.regioninfo.RegionInfo(
name='ap-southeast-1',
endpoint='monitoring.ap-southeast-1.amazonaws.com')
conn = boto.ec2.cloudwatch.CloudWatchConnection(region=region)
data = conn.get_metric_statistics(60, start, end, metric, "AWS/ES", "Average", {"DomainName": "My-es-name"})
Run Code Online (Sandbox Code Playgroud)
打印数据
[]
但是,如果我将命名空间更改为 RDS,它可以在正确的维度值下正常工作。这是我可以编写的简单代码。我不确定这里有什么问题。谁能帮我弄清楚这一点?
我在这里做错了什么?
谢谢
我已经根据我发送到 CloudWatch 的一些日志文件创建了其他 7 个指标,没有出现任何问题。
前段时间我们遇到了MongoDB连接的问题,我通过日志发现了这个问题,所以我想创建一个指标,以便我可以基于它创建一个警报。我确实创建了 Metric,但是(当然)没有数据被输入到 Metic,因为不再存在“MongoError”消息。
但这是否也意味着我什至无法访问指标来创建警报?因为这就是现在正在发生的事情。指标无法在任何地方看到,只能在日志的“过滤器”部分中看到,这将不允许我创建警报或创建图形或任何东西。
我已经在 AWS 论坛上发布了这个,但这通常没有帮助。
遵循Amazon Example for Json Metric Filter,
我尝试复制他们的示例。在创建指标过滤器的过程中,您可以先使用示例日志对其进行测试。所以我选择了“自定义日志”,从上面给出的链接中复制粘贴了示例:
{
"eventType": "UpdateTrail",
"sourceIPAddress": "111.111.111.111",
"arrayKey": [
"value",
"another value"
],
"objectList": [
{
"name": "a",
"id": 1
},
{
"name": "b",
"id": 2
}
],
"SomeObject": null,
"ThisFlag": true
}
Run Code Online (Sandbox Code Playgroud)
我的模式是:{ $.eventType = "UpdateTrail" } 如示例中所述
这是“测试模式”的输出:
在示例日志中的 20 个事件中找到 0 个匹配项。
如何正确使用它们?我似乎不太明白这个概念。
从我这边更新:它似乎有换行符的问题,出于我自己的目的,我只是将我的整个自定义 json 放在一行中,由logger.info(json.dumps(my_message)).
我把这个“修复”放在这里,以防有人偶然发现同样的问题。
我还是想听听一个通用的解决方案!
amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs amazon-cloudwatch-metrics
我目前正在开发一个具有某种用户会议系统的应用程序,最近我们的产品团队要求包括一些预定的推送通知,提醒用户他们在 30 分钟前、10 分钟前和 10 分钟后有会议会议。(我们使用 FCM 作为推送通知服务)
目前,对于每个新会议,我们都会在 AWS CloudWatch Events 规则上注册一个 cron 作业,但我开始意识到,由于预期有大量注册会议,这可能不是实现它的最佳方式......(例如,如果我们将有 100 个活动会议,我们将有 300 个注册的 CloudWatch Events 规则...
所以我的问题是有更好的方法来实现这样的服务吗?
编辑:客户端都是 IOS(Swift) 和 Anrdoid(Java)
push-notification amazon-web-services amazon-cloudwatch firebase firebase-cloud-messaging
我正在尝试创建一个按计划触发并执行状态机 (Step Functions) 的 CloudWatch 规则。我正在使用 CloudFormation 来创建它,除了规则使用的 IAM 角色与规则本身的关联之外,一切都很好。这就是我的意思:
注意在“使用现有角色”下它是空白的。
这是处理规则及其作用的 CF 模板部分。
"SFInvoke":{
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": {
"Fn::Sub": "states.${AWS::Region}.amazonaws.com"
}
},
"Action": "sts:AssumeRole"
}
]
},
"Policies": [
{
"PolicyName": "StepFunctionsInvoke",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"states:StartExecution"
],
"Resource": { "Ref" : "StateMachine"}
}
]
}
}
]
}
},
"CloudWatchStateMachineSDCEventRule": {
"Type":"AWS::Events::Rule",
"Properties": {
"Description":"CloudWatch trigger for the …Run Code Online (Sandbox Code Playgroud) 我GetMetricsData从 AWS CloudWatch查询:
{
StartTime: lastWeek ,
EndTime: today,
MetricDataQueries: [
{
Id: 'invocations',
Label: 'Invocations',
MetricStat: {
Metric: {
Dimensions: [
{
Name: 'FunctionName',
Value: /* FunctionName */,
},
],
MetricName: 'Invocations',
Namespace: 'AWS/Lambda'
},
Period: 60*60*24, // day
Stat: 'Sum',
Unit: 'Count',
},
},
],
}
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
我没有获得 7 天(即一周)的数据,而是获得了 5 天。我错过了 2 天(如您在图表中所见)。
那些失踪的日子没有任何数据。
CloudWatch 不会返回没有数据的点。我怎样才能让Sum操作返回实际计数 ( 0) 呢?
amazon-web-services amazon-cloudwatch aws-sdk amazon-cloudwatch-metrics aws-sdk-js
我有一个在 AWS 上用 Docker 托管的 Symfony 应用程序。对于日志记录,我使用 AWS CloudWatch。
例如:无法建立数据库连接。如果我使用默认的 monolog 配置,我会在文件/project/var/log/prod.log 中收到错误消息。当我将路径更改为php://stderr 时,我希望 CloudWatch 中出现相同的消息,但没有出现。
出于测试原因,我修改了 index.php:
<?php
echo ini_get('error_log');
error_log('error_log');
file_put_contents('php://stderr', 'file_put_contents', FILE_APPEND);
Run Code Online (Sandbox Code Playgroud)
输出是:/proc/self/fd/2(docker 日志目标)
在 CloudWatch 中,我收到了消息error_log,但没有收到file_put_contents。
我不知道问题出在哪里。也许 Symfony 应用程序配置错误。但是由于消息file_put_contents丢失 - 没有 Symfony 运行 - 我不确定。
这是 Monolog 配置:
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
handler: nested
excluded_404s:
# regex: exclude all 404 errors from the logs
- ^/
nested: …Run Code Online (Sandbox Code Playgroud) 当ApproximateNumberOfMessagesVisible两个不同队列上的相同指标 ( )的总和超过 100时,我需要触发警报
在 17 年 9 月,这个答案指出唯一的方法是使用 Lambda 函数获取两个值并通过 CloudWatch API 将它们相加。
在撰写本文时,2019 年 2 月,可以使用“ Metric Math ”,因此不需要 lambda 函数或 EC2 实例。是否可以使用 Metric Math 直接在 CloudFormation 中定义警报?
aws-cloudformation amazon-cloudwatch amazon-cloudwatch-metrics
nextSequenceToken这里提到的是什么?
https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html
Unclear to me, and probably others.