从 CloudWatch 获取指标
先决条件
在开始之前,建议您先阅读开始使用适用于 C++ 的 AWS SDK。
下载示例代码并按代码示例入门中所述构建解决方案。
要运行这些示例,您的代码用于发出请求的用户配置文件必须在 AWS 中具有适当的权限(用于服务和操作)。有关更多信息,请参阅提供 AWS 凭证。
列出指标
要列出 CloudWatch 指标,请创建 ListMetricsRequest 并调用 CloudWatchClient 的 ListMetrics 函数。您可以使用 ListMetricsRequest 通过命名空间、指标名称或维度筛选返回的指标。
注意
《Amazon CloudWatch 用户指南》中的 Amazon CloudWatch 指标和维度参考中提供了 AWS 服务发布的指标和维度列表。
包含
#include <aws/core/Aws.h> #include <aws/monitoring/CloudWatchClient.h> #include <aws/monitoring/model/ListMetricsRequest.h> #include <aws/monitoring/model/ListMetricsResult.h> #include <iomanip> #include <iostream>
代码
Aws::CloudWatch::CloudWatchClient cw; Aws::CloudWatch::Model::ListMetricsRequest request; if (argc > 1) { request.SetMetricName(argv[1]); } if (argc > 2) { request.SetNamespace(argv[2]); } bool done = false; bool header = false; while (!done) { auto outcome = cw.ListMetrics(request); if (!outcome.IsSuccess()) { std::cout << "Failed to list CloudWatch metrics:" << outcome.GetError().GetMessage() << std::endl; break; } if (!header) { std::cout << std::left << std::setw(48) << "MetricName" << std::setw(32) << "Namespace" << "DimensionNameValuePairs" << std::endl; header = true; } const auto &metrics = outcome.GetResult().GetMetrics(); for (const auto &metric : metrics) { std::cout << std::left << std::setw(48) << metric.GetMetricName() << std::setw(32) << metric.GetNamespace(); const auto &dimensions = metric.GetDimensions(); for (auto iter = dimensions.cbegin(); iter != dimensions.cend(); ++iter) { const auto &dimkv = *iter; std::cout << dimkv.GetName() << " = " << dimkv.GetValue(); if (iter + 1 != dimensions.cend()) { std::cout << ", "; } } std::cout << std::endl; } const auto &next_token = outcome.GetResult().GetNextToken(); request.SetNextToken(next_token); done = next_token.empty(); }
调用指标的 GetMetrics 函数可在 ListMetricsResult 中返回指标。结果可以分页。要检索下一批结果,请在原始请求对象中使用 ListMetricsResult 对象的 GetNextToken 函数的返回值调用 SetNextToken,并将已修改的请求对象传回对 ListMetrics 的另一个调用。
请参阅完整示例
更多信息
-
《Amazon CloudWatch API 参考》中的 ListMetrics。