【问题标题】:On Cloudwatch Dashboard want to show ebs environment health metrics with health codes在 Cloudwatch 仪表板上想要显示带有健康代码的 ebs 环境健康指标
【发布时间】:2021-09-14 20:45:02
【问题描述】:

我正在使用 cloudwatch 仪表板来汇总为应用程序运行的各种服务的视图。我有用于 EnvironmentHealth 指标的数字小部件,它显示枚举值但不显示健康代码,如 OK、WARN .. 在 beanstalk 监控选项上,我可以看到服务健康状况,但在仪表板上想要相同。请帮忙。

This is what I expect

This is what I see

【问题讨论】:

  • 您希望将 EBS 的哪些项目放在仪表板上?例如状态如 in-use、Volume 状态如 OK...
  • 我正在仪表板上查找维度的 EnvironmentHealth 指标:EnvironmentName。请参考我所看到的和我所期望的新添加的 imgs。
  • 抱歉,我将 ElasticBeanstalk 误解为 EBS(ElaticBlockStore)。我尝试了一些 lambda 代码并且工作正常,如下所示。
  • 哦。我的错,现在我把它改成了豆茎。我确实看到使用 lambda 是一种选择,但很好奇是否有办法避免这种情况并直接在指标中获取健康代码。非常感谢 Shimo 的帮助。

标签: amazon-cloudwatch amazon-ebs


【解决方案1】:

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

不确定这是不是最好的方法,但是使用带有 lambda 函数的 custom widget 可以正常工作。 lambda 函数获取 EB 状态信息并将其返回给 CW 仪表板。

创建 Lambda 函数

我使用了 python 3.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 仪表板上创建自定义小部件

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


这是我的仪表板。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2019-08-09
    • 1970-01-01
    • 2020-05-06
    • 2014-10-02
    相关资源
    最近更新 更多