在 Cloudwatch 仪表板上想要显示带有健康代码的 ebs 环境健康指标

On Cloudwatch Dashboard want to show ebs environment health metrics with health codes

我正在使用 cloudwatch 仪表板来获取应用程序的各种服务 运行 的聚合视图。我有用于 EnvironmentHealth 指标的数字小部件,它显示枚举值而不是健康代码,如 OK,WARN .. 在 beantalk 监控选项上,我可以看到服务运行状况,但希望在仪表板上看到相同的情况。请帮忙

This is what I expect

This is what I see

ElasticBeanstalk EnvironmentHealth 的 CloudWatch 指标only returns numbers.0 正常,1 是信息,15 警告等

不确定这是最好的方法,但将 custom widget 与 lambda 函数一起使用效果很好。 lambda 函数获取 EB 状态信息并将其 return 发送到 CW 仪表板。

创建 Lambda 函数

我用的是python3.9。默认设置没问题,但请注意附加 lambda IAM 策略 AWSElasticBeanstalkReadOnly 以获取 EB 状态。

Lambda python 代码如下:

  • 为您的 EB 环境设置 EnvironmentName
  • font size="56 px" color="#444444" 与 CW 仪表板小部件相同
  • 在与 EB 环境相同的区域中创建。
import boto3


def lambda_handler(event, context):

    client = boto3.client("elasticbeanstalk")

    response = client.describe_environment_health(
        EnvironmentName="<your-env-name>", AttributeNames=["HealthStatus"]
    )

    output = (
        """<font size="56 px" color="#444444">"""
        + response["HealthStatus"]
        + """</font>"""
    )

    return output

在 CloudWatch 仪表板上创建自定义小部件

添加小部件 -> 自定义小部件 -> 下一步 -> Select 上面的 Lambda 函数 -> 创建小部件


这是我的仪表板。