首页 > 解决方案 > Laravel AWS CloudWatch,使用 PutMetric API 更新现有指标

问题描述

我正在做一个 Laravel 项目。我正在将我的项目与 AWS CloudWatch 集成。我正在将自定义指标从我的应用程序发送到 AWS CloudWatch。但问题在于,如果指标已经存在,它会不断创建新指标,而不是更新现有指标。

这是我的代码。

$client = \Aws\CloudWatch\CloudWatchClient::factory([
        'credentials' => [
            'key' => env('CLOUDWATCH_LOG_KEY', ''),
            'secret' => env('CLOUDWATCH_LOG_SECRET', ''),
        ],
        'region' => env('CLOUDWATCH_LOG_REGION', ''),
        'version' => env('CLOUDWATCH_LOG_VERSION', '')
    ]);

    try {
        $result = $client->putMetricData([
            'Namespace' => 'LaravelAwsOnlineUsersProd',
            'MetricData' => [
                [
                    'MetricName' => 'ConnectedUsers',
                    'Timestamp' => time(),
                    'Value' => 1,
                    'Unit' => 'Kilobytes',
                    'Dimensions' => [
                        [
                            'Name' => 'OnlineUser',
                            'Value' => $connectedUsers
                        ]
                    ]
                ]
            ]
        ]);
        
        //the rest of the code
    } catch (\Aws\Exception\AwsException $e) {
        return $e->getMessage();
    }

我可以将指标发布或发送到 CloudWatch。问题是,每次我发送指标时,它都会创建一个新的添加新行而不是更新现有的行,如下所示:

在此处输入图像描述

我该如何解决这个问题?

我想要这个的原因是我正在创建一个 CloudWatch 警报。然后我将不得不选择公制维度。

在此处输入图像描述

如果新数据作为新指标出现,则不会包含在警报中。

标签: laravelamazon-web-servicesamazon-cloudwatch

解决方案


看起来您正在尝试计算选定用户的数量,对吗?

将 设置为$connectedUsersMetricData 的值,而不是维度。维度用于按某些标准分隔指标。

例如,如果您想计算每台服务器的用户数,您将有一个ServerId维度。

此外,删除单位,以千字节为单位计算用户没有意义。

尝试这样的事情,看看它是否适合你:

$result = $client->putMetricData([
            'Namespace' => 'LaravelAwsOnlineUsersProd',
            'MetricData' => [
                [
                    'MetricName' => 'ConnectedUsers',
                    'Timestamp' => time(),
                    'Value' => $connectedUsers
                ]
            ]
        ]);

有关 CloudWatch 维度的更多信息:https ://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Dimension


推荐阅读