hertzbeat icon indicating copy to clipboard operation
hertzbeat copied to clipboard

[Question] can add HTTP API with HTTP Code & Error Msg?

Open Kylin-Guo opened this issue 1 year ago • 8 comments

Question

有时候某些接口报错后,想要得知该环境接口的状态码及错误信息,只能够手动打开页面或对接口进行一次手动请求

例如某个接口可能会出现 500 or 502 错误,但 HertzBeat 的监控信息只有响应时间&关键词数量,不方便排查

Kylin-Guo avatar Jul 16 '24 03:07 Kylin-Guo

应该是可以的,你可以加一下

Ceilzcx avatar Jul 16 '24 03:07 Ceilzcx

Use JsonPath: https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-http-example-hertzbeat

pwallk avatar Jul 16 '24 08:07 pwallk

应该是可以的,你可以加一下

我尝试直接在HTTP API 的 yml 文件的 field 字段中添加 statusCode 和 errorMsg,然而并不能获取到信息,是哪里有遗漏吗? image

Kylin-Guo avatar Jul 16 '24 08:07 Kylin-Guo

Use JsonPath: https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-http-example-hertzbeat

但 JsonPath 解析方式要求接口返回的内容必须为 Json 格式,但在某些时间并不能保证 例如某个接口经由 Nginx 进行代理,正常响应的情况下接口的确会返回 Json 格式,但当接口异常, Nginx 回报 HTTP 502 or 504 的时候,格式会变成 HTML,这个时候使用 JsonPath 解析应该会出现异常

Kylin-Guo avatar Jul 16 '24 08:07 Kylin-Guo

如下可以支持 successCodes 为 200, 503 时返回正确响应,但是现在没有支持返回的指标有状态码和errorMsg

  - name: health
    priority: 6
    fields:
      - field: status
        type: 1
    protocol: http
    http:
      host: ^_^host^_^
      port: ^_^port^_^
      url: ^_^base_path^_^/health
      method: GET
      ssl: ^_^ssl^_^
      authorization:
        type: Basic Auth
        basicAuthUsername: ^_^username^_^
        basicAuthPassword: ^_^password^_^
      successCodes: [200, 503]
      parseType: default

tomsun28 avatar Jul 16 '24 12:07 tomsun28

对于某些HTTP API来说,当成功时返回的是200状态码,且response中包含一组正常时的数据。当失败时返回的是非200状态码,response中是另一组数据,key完全不同。这种情况如何让监控状态变为“宕机”状态?

rty813 avatar Sep 05 '24 07:09 rty813

对于某些HTTP API来说,当成功时返回的是200状态码,且response中包含一组正常时的数据。当失败时返回的是非200状态码,response中是另一组数据,key完全不同。这种情况如何让监控状态变为“宕机”状态?

HTTP API 的监控可用性状态只与 HTTP Code 有关,默认情况下只要目标地址返回的状态码不为 200 or 201 则会变为 “宕机”

Kylin-Guo avatar Sep 05 '24 09:09 Kylin-Guo

对于某些HTTP API来说,当成功时返回的是200状态码,且response中包含一组正常时的数据。当失败时返回的是非200状态码,response中是另一组数据,key完全不同。这种情况如何让监控状态变为“宕机”状态?

HTTP API 的监控可用性状态只与 HTTP Code 有关,默认情况下只要目标地址返回的状态码不为 200 or 201 则会变为 “宕机”

@Kylin-Guo 我这里用的并不是HTTP API,即parseType并非website,而是jsonpath。这种情况下,如果status code为404,则并不会变为宕机状态

rty813 avatar Sep 05 '24 10:09 rty813