从 AWS lambda 函数将指标推送到 Prometheus Pushgateway
Push metrics to Prometheus Pushgateway from AWS lambda function
我有一个必须每 5 分钟监控一次的应用程序。但是,该应用程序没有可供 Prometheus 直接从中抓取的 /metrics 端口,我对该应用程序没有任何控制权。
作为解决方法,我编写了一个 python 程序来手动抓取数据,并将这些数据转换为我自己的指标,例如仪表和计数器。然后我将这些指标推送到 pushgateway,供 Prometheus 从中抓取。
在本地一切正常。现在,我想更进一步,使用 AWS Lambda 函数每 5 分钟提取一次数据并为我生成一次指标(这样我就不必在笔记本电脑上保留 python 程序 运行 ).
我的问题是,而不是使用:
push_to_gateway(gateway='localhost:9091', job="Monitor", registry=registry)
要将我的指标推送到 pushgateway,这在 lambda 函数中是什么?另外,我认为 pushgateway 应该托管在某个地方供 AWS 访问。我们如何做到这一点?
您可以使用 cloudwatch 规则每 5 分钟创建一次 lambda 和 运行 它。在 lambda 内部,无需调用 push_to_gateway,您只需卷曲 pushgateway。参见示例 here。
确保可以从 lambda 访问网关 - 在 public ELB 后面或将它们都放在同一个 vpc 中。
我有一个必须每 5 分钟监控一次的应用程序。但是,该应用程序没有可供 Prometheus 直接从中抓取的 /metrics 端口,我对该应用程序没有任何控制权。
作为解决方法,我编写了一个 python 程序来手动抓取数据,并将这些数据转换为我自己的指标,例如仪表和计数器。然后我将这些指标推送到 pushgateway,供 Prometheus 从中抓取。
在本地一切正常。现在,我想更进一步,使用 AWS Lambda 函数每 5 分钟提取一次数据并为我生成一次指标(这样我就不必在笔记本电脑上保留 python 程序 运行 ).
我的问题是,而不是使用:
push_to_gateway(gateway='localhost:9091', job="Monitor", registry=registry)
要将我的指标推送到 pushgateway,这在 lambda 函数中是什么?另外,我认为 pushgateway 应该托管在某个地方供 AWS 访问。我们如何做到这一点?
您可以使用 cloudwatch 规则每 5 分钟创建一次 lambda 和 运行 它。在 lambda 内部,无需调用 push_to_gateway,您只需卷曲 pushgateway。参见示例 here。 确保可以从 lambda 访问网关 - 在 public ELB 后面或将它们都放在同一个 vpc 中。