使用HTTP API地址对接Grafana或自建应用中接入Prometheus数据

可观测监控 Prometheus 版提供了HTTP API地址,以便您在自建的Grafana中接入Prometheus监控数据,或在二次开发过程中通过Prometheus API获取监控数据。

前提条件

已接入Prometheus,具体操作,请参见:

步骤一:获取HTTP API地址

  1. 登录Prometheus控制台

  2. 在左侧导航栏单击实例列表,进入可观测监控 Prometheus 版的实例列表页面。

  3. 在页面顶部菜单栏选择Prometheus实例所在的地域,并在目标集群右侧的操作列单击设置

  4. 设置页签上,根据需求复制公网或内网的HTTP API地址。

    说明

    如果是云服务类型的Prometheus实例,请根据接入云服务的产品类型选择对应的HTTP API地址。

    image

  5. 可选:如果您需要提高Grafana数据读取的安全性,可以单击生成token,获取Prometheus实例的鉴权Token。

    重要

    生成Token后,在Grafana中添加数据源时必须配置Token,否则无法读取Prometheus的监控数据。

步骤二:接入自建Grafana

  1. 配置Grafana数据源。

    1. 以管理员账号登录本地Grafana系统。

    2. 单击页面左上角的image图标。

    3. 在左侧导航栏中选择Configuration > Data Sources

      说明

      仅管理员可以看到此菜单。

    4. Data Sources页签上单击+ Add new data source

    5. Add data source页面上单击Prometheus

    6. Settings页签的Name字段中输入自定义的名称,在Prometheus server URL字段中粘贴上文步骤一:获取HTTP API地址中获得的HTTP API地址。

    7. 可选:单击+ Add header,在Custom HTTP Headers区域单击+Add header,设置Header为Authorization,设置Value为步骤一:获取HTTP API地址中获取的鉴权Token。

      image

    8. 单击页签底部的Save & Test

  2. 验证结果。

    1. 登录本地Grafana系统。

    2. 单击页面左上角的image图标,然后在左侧导航栏中单击Dashboards

    3. 单击Dashboards页面右侧的New,然后在下拉菜单中单击New dashboard

    4. 单击+ Add visualization

    5. Select data source页面选择您创建的数据源。

    6. Edit Panel页面的Query页签下的A区域的Metrics字段和Label filters字段中输入指标名称和值,单击Run queries进行查询。

      如果能显示出相应指标的图表,则说明操作成功。否则请检查填写的接口地址或Token是否正确,以及数据源是否有Prometheus的监控数据。

      image

步骤三:获取Prometheus监控数据

调用Prometheus监控数据的请求示例如下。更多使用HTTP API获取Prometheus监控数据的操作,请参见开源版Prometheus HTTP API

GET {HTTP API}/api/v1/query

Accept: application/json
Content-Type: application/json
Authorization: {Token}

{
  "query":"arms_prometheus_target_interval_length_seconds_sum",
  "time":"1635302655",
  "timeout":"1000"

}
说明

{HTTP API}{Token}请替换为上文步骤一:获取HTTP API地址中获取的HTTP API和鉴权Token。

返回示例:

展开查看返回示例

{
    "status": "success",
    "data": {
        "resultType": "vector",
        "result": [
            {
                "metric": {
                    "__name__": "arms_prometheus_target_interval_length_seconds_sum",
                    "instance": "localhost:9335",
                    "interval": "15s",
                    "job": "_arms-prom/kubelet/1"
                },
                "value": [
                    1635302655,
                    "146655.24420603***"
                ]
            },
            {
                "metric": {
                    "__name__": "arms_prometheus_target_interval_length_seconds_sum",
                    "instance": "localhost:9335",
                    "interval": "30s",
                    "job": "_arms-prom/kubelet/1"
                },
                "value": [
                    1635302655,
                    "879810.747346***"
                ]
            },
            {
                "metric": {
                    "__name__": "arms_prometheus_target_interval_length_seconds_sum",
                    "instance": "localhost:9335",
                    "interval": "20s",
                    "job": "_arms-prom/kubelet/1"
                },
                "value": [
                    1635302655,
                    "73320.13578499***"
                ]
            }
        ]
    }