本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 CloudWatch 指标与 Amazon Managed Service for Prometheus 集成
将所有指标集中在一个地方会有所帮助。Amazon Managed Service for Prometheus 不会自动摄取 Amazon CloudWatch 指标。不过,您可以使用 Amazon Data Firehose 和 AWS Lambda 将 CloudWatch 指标推送到 Amazon Managed Service for Prometheus。
本节介绍如何检测 Amazon CloudWatch 指标流以及使用 Amazon Data Firehose 和 AWS Lambda 将指标摄取到 Amazon Managed Service for Prometheus。
您将使用 AWS 云开发工具包(CDK)
基础设施
首先,您必须为该配方设置基础设施。
通过 CloudWatch 指标流可以将流式指标数据转发到 HTTP 终端节点或 Amazon S3 桶。
设置基础设施涵盖 4 个步骤:
-
配置先决条件
-
创建 Amazon Managed Service for Prometheus 工作区。
-
安装依赖项
-
部署堆栈
先决条件
-
已在您的环境中安装 AWS CDK Typescript。
-
已在您的环境中安装 Node.js 和 Go。
-
AWS 可观察性 CloudWatch 指标导出器 github 存储库
( CWMetricsStreamExporter)已克隆到您的本地计算机。
创建 Amazon Managed Service for Prometheus 工作区
-
此配方中的演示应用程序将基于 Amazon Managed Service for Prometheus 运行。通过以下命令创建 Amazon Managed Service for Prometheus 工作区:
aws amp create-workspace --alias prometheus-demo-recipe -
使用以下命令确保您的工作区已创建:
aws amp list-workspaces有关 Amazon Managed Service for Prometheus 的更多信息,请参阅 Amazon Managed Service for Prometheus 用户指南。
安装依赖项
-
安装依赖项
在
aws-o11y-recipes存储库的根目录中,使用以下命令将您的目录更改为CWMetricStreamExporter:cd sandbox/CWMetricStreamExporter今后,这将被视为存储库的根目录。
-
通过以下命令将目录更改为
/cdk:cd cdk -
通过以下命令安装 CDK 依赖项。
npm install -
将目录更改回存储库的根目录,然后使用以下命令将目录更改为
/lambda:cd lambda -
进入
/lambda文件夹后,使用以下命令安装 Go 依赖项:go get所有依赖项现已安装完毕。
部署堆栈
-
在存储库的根目录中,打开
config.yaml,将{workspace}替换为新创建的工作区 ID,将区域替换为您的 Amazon Managed Service for Prometheus 工作区所在的区域,从而修改 Amazon Managed Service for Prometheus 工作区 URL。例如,修改以下内容:
AMP: remote_write_url: "https://aps-workspaces.us-east-2.amazonaws.com/workspaces/{workspaceId}/api/v1/remote_write" region: us-east-2根据自己的喜好更改 Firehose 传输流和 Amazon S3 存储桶的名称。
-
要构建 AWS CDK 和 Lambda 代码,请在存储库的根目录中运行以下命令:
npm run build此构建步骤可确保构建 Go Lambda 二进制文件,并将 CDK 部署到 CloudFormation。
-
要完成部署,请查看并接受堆栈所需的 IAM 更改。
-
(可选)可以运行以下命令确认堆栈是否已创建。
aws cloudformation list-stacks名为
CDK Stack的堆栈将出现在列表中。
创建 Amazon CloudWatch 流
现在,您已经有一个用来处理这些指标的 lambda 函数,您可以从 Amazon CloudWatch 创建指标流。
创建 CloudWatch 指标流
-
导航到 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/home#metric-streams:streamsList
,然后选择创建指标流。 -
选择所需的指标,可以是所有指标,也可以仅仅是选定命名空间中的指标。
-
在
Configuration下,选择选择您的账户拥有的现有 Firehose。 -
您将使用之前通过 CDK 创建的 Firehose。在选择您的 Kinesis Data Firehose 流下拉列表中,选择之前创建的流。其名字将为
CdkStack-KinesisFirehoseStream123456AB-sample1234。 -
将输出格式设置为 JSON。
-
为指标流创建一个对您有意义的名称。
-
选择 Create metric filter(创建指标流)。
-
(可选)要验证 Lambda 函数的调用,请导航到 Lambda 控制台
并选择函数 KinesisMessageHandler。选择监控选项卡和 Logs 子选项卡,在最近调用下应该有所触发的 Lambda 函数的条目。注意
最长可能需要 5 分钟,调用才会开始显示在监控选项卡中。
现在,您的指标应该在从 Amazon CloudWatch 传输到 Amazon Managed Service for Prometheus。
清理
您可能需要清除您在本示例中使用的资源。以下步骤将说明如何操作。这将停止您创建的指标流。
清理资源
-
首先使用以下命令删除 CloudFormation 堆栈:
cd cdk cdk destroy -
删除 Amazon Managed Service for Prometheus 工作区:
aws amp delete-workspace --workspace-id \ `aws amp list-workspaces --alias prometheus-sample-app --query 'workspaces[0].workspaceId' --output text` -
最后,使用 Amazon CloudWatch 控制台
删除 Amazon CloudWatch 指标流。