Prometheus是否允许您从端点获取JSON信息?

时间:2017-07-13 14:27:05

标签: json node.js monitoring prometheus

我正在使用Prometheus来检测Node.js应用程序以进行监控。我目前正在使用以下Node.js客户端进行检测:

prom-client

我已将所有配置为从我的Node.js应用程序收集和收集默认指标,并且监控正在按预期工作。我想知道Prometheus是否有可能从我的应用程序公开的端点中抓取JSON。

例如,Node.js应用程序有一个运行状况检查端点(/ health),它返回有关应用程序整体运行状况及其依赖关系的简单JSON数据(布尔值或0/1)。我是否可以配置Prometheus和/或prom-client从健康端点刮取JSON,然后根据该信息记录指标?

5 个答案:

答案 0 :(得分:6)

我相信你可以。

我在下面链接的博客文章详细说明了如何使用Prometheus Python客户端将JSON格式的指标提取到Prometheus中。

https://www.robustperception.io/writing-a-jenkins-exporter-in-python/ https://www.robustperception.io/writing-json-exporters-in-python/

答案 1 :(得分:2)

如果您希望让prom-client收集此信息,您可以查看属于该库的heap sizes收集器。

如果此收集器获取堆大小,您可以改为抓取JSON端点,也可以直接调用JSON端点后面的功能,以发布一些0或1的量规。

答案 2 :(得分:2)

我能够使用prom-client找到解决方案并构建自己的自定义指标。将为可能有兴趣做同样事情的任何人提供以下示例。让我们说有一个运行状况检查端点返回以下JSON:

[TestMethod]
public void TestMethod()
{
    //setting up test
    var boo = new Mock<IBoo>();
    var goo = new Mock<IGoo>();
    var foo = new Foo(boo.object,goo.object);
    boo.Setup(x=>x.Method(1,2)).Returns(10);
    //running test
    var result = foo.MethodToTest(1,2);
    //verify the test
    Assert.AreEqual(12,result);
}

我使用包请求来调用端点,解析数据并创建一个指标,以反映基于运行状况检查状态的值。以下是JavaScript中的/ metrics端点示例:

{
    "app": {
        "message": "Service is up and running!",
        "success": true
    }
}

答案 3 :(得分:1)

不直接,因为普罗米修斯只了解他们的文字格式或GRPC格式。见https://prometheus.io/docs/instrumenting/exposition_formats/

或者当然可以编写一个翻译“桥”或导出器来翻译那种格式的JSON结构,比如@ConorB在他的回答中所描述的。

答案 4 :(得分:0)