AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon CloudWatch 中 AWS SDK for PHP 发布自定义指标与 版本 3
指标是关于您的系统性能的数据。 警报会在您指定的时间段内监控一个指标。它在多个时间段内根据相对于给定阈值的指标值,执行一项或多项操作。
以下示例演示如何:
版本 3 的所有示例代码在 AWS SDK for PHP 上的此处提供。GitHub
Credentials
发布指标数据
导入
require 'vendor/autoload.php';
use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
示例代码
function putMetricData($cloudWatchClient, $cloudWatchRegion, $namespace,
$metricData)
{
try {
$result = $cloudWatchClient->putMetricData([
'Namespace' => $namespace,
'MetricData' => $metricData
]);
if (isset($result['@metadata']['effectiveUri']))
{
if ($result['@metadata']['effectiveUri'] ==
'https://monitoring.' . $cloudWatchRegion . '.amazonaws.com')
{
return 'Successfully published datapoint(s).';
} else {
return 'Could not publish datapoint(s).';
}
} else {
return 'Error: Could not publish datapoint(s).';
}
} catch (AwsException $e) {
return 'Error: ' . $e->getAwsErrorMessage();
}
}
function putTheMetricData()
{
$namespace = 'MyNamespace';
$metricData = [
[
'MetricName' => 'MyMetric',
'Timestamp' => 1589228818, // 11 May 2020, 20:26:58 UTC.
'Dimensions' => [
[
'Name' => 'MyDimension1',
'Value' => 'MyValue1'
],
[
'Name' => 'MyDimension2',
'Value' => 'MyValue2'
]
],
'Unit' => 'Count',
'Value' => 1
]
];
$cloudWatchRegion = 'us-east-1';
$cloudWatchClient = new CloudWatchClient([
'profile' => 'default',
'region' => $cloudWatchRegion,
'version' => '2010-08-01'
]);
echo putMetricData($cloudWatchClient, $cloudWatchRegion, $namespace,
$metricData);
}
// Uncomment the following line to run this code in an AWS account.
// putTheMetricData();
创建警报
导入
require 'vendor/autoload.php';
use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
示例代码
function putMetricAlarm($cloudWatchClient, $cloudWatchRegion,
$alarmName, $namespace, $metricName,
$dimensions, $statistic, $period, $comparison, $threshold,
$evaluationPeriods)
{
try {
$result = $cloudWatchClient->putMetricAlarm([
'AlarmName' => $alarmName,
'Namespace' => $namespace,
'MetricName' => $metricName,
'Dimensions' => $dimensions,
'Statistic' => $statistic,
'Period' => $period,
'ComparisonOperator' => $comparison,
'Threshold' => $threshold,
'EvaluationPeriods' => $evaluationPeriods
]);
if (isset($result['@metadata']['effectiveUri']))
{
if ($result['@metadata']['effectiveUri'] ==
'https://monitoring.' . $cloudWatchRegion . '.amazonaws.com')
{
return 'Successfully created or updated specified alarm.';
} else {
return 'Could not create or update specified alarm.';
}
} else {
return 'Could not create or update specified alarm.';
}
} catch (AwsException $e) {
return 'Error: ' . $e->getAwsErrorMessage();
}
}
function putTheMetricAlarm()
{
$alarmName = 'my-ec2-resources';
$namespace = 'AWS/Usage';
$metricName = 'ResourceCount';
$dimensions = [
[
'Name' => 'Type',
'Value' => 'Resource'
],
[
'Name' => 'Resource',
'Value' => 'vCPU'
],
[
'Name' => 'Service',
'Value' => 'EC2'
],
[
'Name' => 'Class',
'Value' => 'Standard/OnDemand'
]
];
$statistic = 'Average';
$period = 300;
$comparison = 'GreaterThanThreshold';
$threshold = 1;
$evaluationPeriods = 1;
$cloudWatchRegion = 'us-east-1';
$cloudWatchClient = new CloudWatchClient([
'profile' => 'default',
'region' => $cloudWatchRegion,
'version' => '2010-08-01'
]);
echo putMetricAlarm($cloudWatchClient, $cloudWatchRegion,
$alarmName, $namespace, $metricName,
$dimensions, $statistic, $period, $comparison, $threshold,
$evaluationPeriods);
}
// Uncomment the following line to run this code in an AWS account.
// putTheMetricAlarm();