如何通过aws-cdk将自定义指标和警报添加到AWS Lambda函数

埃尔比克

我有点坚持了配置CDK一个常见的情况:有一个报警公制lambda函数

import lambda = require("@aws-cdk/aws-lambda")
import { Duration } from "@aws-cdk/core"
import lambda = require("@aws-cdk/aws-lambda")
import { Duration } from "@aws-cdk/core";
import { LogGroup } from '@aws-cdk/aws-logs'
import { MetricFilter, FilterPattern } from '@aws-cdk/aws-logs'
import { Alarm, ComparisonOperator, TreatMissingData } from "@aws-cdk/aws-cloudwatch"

const lambdaFn = new lambda.Function(this, "VouchersPayoutQueueConsumer", {
    functionName: 'lambda-custom-name',
    runtime: lambda.Runtime.NODEJS_10_X,
    code: lambda.Code.fromAsset("dir_name"),
    timeout: Duration.seconds(15),
    memorySize: 1024,
    handler: "handler.handlerMethod",
})

const METRIC_NAME = 'metric-name'
const METRIC_NAMESPACE = 'metric-namespace'

new MetricFilter(this, `MetricFilterId`, {
    metricName: METRIC_NAME,
    metricNamespace: METRIC_NAMESPACE,
    logGroup: LogGroup.fromLogGroupName(this, "LambdaLogGroupId", `/aws/lambda/${lambdaFn.functionName}`),
    filterPattern: FilterPattern.stringValue("$.params.name", "==", "ReportErrorsToS3"),
    metricValue: "$.params.value"
})

new Alarm(this, "AlarmId", {
    metric,
    evaluationPeriods: 1,
    actionsEnabled: true,
    alarmName: `alarms-s3errors`,
    alarmDescription: "Alarm ReportErrorsToS3",
    comparisonOperator: ComparisonOperator.GREATER_THAN_THRESHOLD,
    treatMissingData: TreatMissingData.IGNORE,
    period: Duration.hours(1),
    threshold: 1,
    statistic: "max"
})
  1. 在哪里获取度量以及如何使用MetricFilter映射它
  2. 如何正确设置logGroupMetricFilter来解决这一问题:

    1/4 | 上午11:02:05 | CREATE_FAILED | AWS :: Logs :: MetricFilter | MetricFilter(MetricFilter8E0FEF2B)指定的日志组不存在。(服务:AWSLogs;状态代码:400;错误代码:ResourceNotFoundException;请求ID:a1395551-5768-40c3-baaa-cbb133effe7b)

AWS CDK AWS 1.22.0

埃尔比克
  • 指标是分别声明的,但metricName名称空间 必须与用于MetricFilter的相同
  • LogGroup还必须单独实例化,但是其logGroupName与lambda将创建的相同。

结果:

import { Metric } from "@aws-cdk/aws-cloudwatch";
import lambda = require("@aws-cdk/aws-lambda")
import { Duration } from "@aws-cdk/core";
import { LogGroup } from '@aws-cdk/aws-logs'
import { MetricFilter, FilterPattern } from '@aws-cdk/aws-logs'
import { Alarm, ComparisonOperator, TreatMissingData } from "@aws-cdk/aws-cloudwatch"

const LAMBDA_CUSTOM_NAME = `lambda-custom-name`

let logGroup = new LogGroup(this, 'LogGroup', {
  logGroupName: `/aws/lambda/${LAMBDA_CUSTOM_NAME}`
})

const lambdaFn = new lambda.Function(this, "VouchersPayoutQueueConsumer", {
    functionName: LAMBDA_CUSTOM_NAME,
    runtime: lambda.Runtime.NODEJS_10_X,
    code: lambda.Code.fromAsset("dir_name"),
    timeout: Duration.seconds(15),
    memorySize: 1024,
    handler: "handler.handlerMethod",
});


const METRIC_NAME = 'metric-name'
const METRIC_NAMESPACE = 'metric-namespace'

const metric = new Metric({
    namespace: METRIC_NAMESPACE,
    metricName: METRIC_NAME
})

new MetricFilter(this, `MetricFilterId`, {
    metricName: METRIC_NAME,
    metricNamespace: METRIC_NAMESPACE,
    logGroup: logGroup,
    filterPattern: FilterPattern.stringValue("$.params.name", "==", "ReportErrorsToS3"),
    metricValue: "$.params.value"
})

new Alarm(this, "AlarmId", {
    metric,
    evaluationPeriods: 1,
    actionsEnabled: true,
    alarmName: `alarms-s3errors`,
    alarmDescription: "Alarm ReportErrorsToS3",
    comparisonOperator: ComparisonOperator.GREATER_THAN_THRESHOLD,
    treatMissingData: TreatMissingData.IGNORE,
    period: Duration.hours(1),
    threshold: 1,
    statistic: "max"
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将自定义类添加到AWS Lambda层?

来自分类Dev

由Lambda函数支持的AWS CDK自定义资源

来自分类Dev

如何使用AWS Lambda自定义CloudWatch指标

来自分类Dev

如何重用AWS Lambda函数?

来自分类Dev

通过http请求调用AWS Lambda函数

来自分类Dev

通过MS团队触发AWS Lambda函数

来自分类Dev

代码未通过 AWS lambda 函数更新

来自分类Dev

如何使用辅助函数将自定义类名称添加到Handlebars模板中的元素?

来自分类Dev

如何将自定义textField添加到警报中?

来自分类Dev

如何使用cloudformation将自定义策略添加到AWS中的服务链接角色?

来自分类Dev

如何将自定义地图和自定义数据添加到Highmaps?

来自分类Dev

如何使用AWS CLI将触发器添加到AWS Lambda函数?

来自分类Dev

将 CloudWatchEvents 添加到 AWS lambda 函数

来自分类Dev

将自定义函数添加到类

来自分类Dev

将自定义函数添加到对象原型

来自分类Dev

通过Golang中的步骤函数调用AWS Lambda函数

来自分类Dev

AWS SES将自定义标题添加到邮件

来自分类Dev

将自定义环境变量添加到 AWS EMR 的标准做法是什么?

来自分类Dev

SDK AWS 和 Lambda 函数

来自分类Dev

如何将自定义指标添加到jelly中以进行电子邮件扩展?

来自分类Dev

如何将自定义指标添加到keras?(平均绝对误差百分比)

来自分类Dev

如何在本地测试AWS Lambda函数

来自分类Dev

如何异步调用AWS Lambda函数

来自分类Dev

如何暂停/恢复AWS Lambda函数

来自分类Dev

如何从VSCode更新我的AWS Lambda函数?

来自分类Dev

如何异步调用AWS Lambda函数

来自分类Dev

通过Apache POI将自定义(扩展)属性添加到docx和段落

来自分类Dev

如何将python库添加到Alexa的AWS lambda函数中?

来自分类Dev

如何将 boto 库添加到基于 python 的 AWS lambda 函数?

Related 相关文章

  1. 1

    如何将自定义类添加到AWS Lambda层?

  2. 2

    由Lambda函数支持的AWS CDK自定义资源

  3. 3

    如何使用AWS Lambda自定义CloudWatch指标

  4. 4

    如何重用AWS Lambda函数?

  5. 5

    通过http请求调用AWS Lambda函数

  6. 6

    通过MS团队触发AWS Lambda函数

  7. 7

    代码未通过 AWS lambda 函数更新

  8. 8

    如何使用辅助函数将自定义类名称添加到Handlebars模板中的元素?

  9. 9

    如何将自定义textField添加到警报中?

  10. 10

    如何使用cloudformation将自定义策略添加到AWS中的服务链接角色?

  11. 11

    如何将自定义地图和自定义数据添加到Highmaps?

  12. 12

    如何使用AWS CLI将触发器添加到AWS Lambda函数?

  13. 13

    将 CloudWatchEvents 添加到 AWS lambda 函数

  14. 14

    将自定义函数添加到类

  15. 15

    将自定义函数添加到对象原型

  16. 16

    通过Golang中的步骤函数调用AWS Lambda函数

  17. 17

    AWS SES将自定义标题添加到邮件

  18. 18

    将自定义环境变量添加到 AWS EMR 的标准做法是什么?

  19. 19

    SDK AWS 和 Lambda 函数

  20. 20

    如何将自定义指标添加到jelly中以进行电子邮件扩展?

  21. 21

    如何将自定义指标添加到keras?(平均绝对误差百分比)

  22. 22

    如何在本地测试AWS Lambda函数

  23. 23

    如何异步调用AWS Lambda函数

  24. 24

    如何暂停/恢复AWS Lambda函数

  25. 25

    如何从VSCode更新我的AWS Lambda函数?

  26. 26

    如何异步调用AWS Lambda函数

  27. 27

    通过Apache POI将自定义(扩展)属性添加到docx和段落

  28. 28

    如何将python库添加到Alexa的AWS lambda函数中?

  29. 29

    如何将 boto 库添加到基于 python 的 AWS lambda 函数?

热门标签

归档