在Grafana中添加Prometheus数据

更新时间:
复制为 MD 格式

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

前提条件

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

步骤一:获取HTTP API地址

  1. 登录云监控控制台,在左侧导航栏选择Prometheus 监控 - 实例列表,进入实例列表页面。

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

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

    image

  4. 对于V1版本的Prometheus实例,如果您需要提高Grafana数据读取的安全性,可以单击生成token,获取Prometheus实例的鉴权Token。

    重要

步骤二:在Grafana中添加数据源

在自建Grafana中添加数据源

此处以10.x版本Grafana为例,其他版本Grafana添加数据源的操作请参见Grafana官方文档

  1. 配置Grafana数据源。

    1. 以管理员账号登录自建Grafana。

    2. 单击页面左上角的image图标,然后选择管理 - 数据源

    3. 单击+ Add new data source,然后选择数据源类型为Prometheus

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

    5. 设置安全增强。

      V1版本(可选)

      单击+ Add header,在Custom HTTP Headers区域单击+Add header,设置HeaderAuthorization,设置Value步骤一获取的鉴权Token。

      image

      V2版本

      打开Basic auth,并设置User为用户的AccessKey,设置Password为用户的SecretKey。

      image

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

  3. 查询Prometheus指标。

    1. 登录本地Grafana系统。

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

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

    4. 单击+ Add visualization,在Select data source页面选择您创建的数据源。

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

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

      image

在可观测可视化 Grafana 版中集成数据源

阿里云可观测可视化 Grafana 版支持一键集成Prometheus数据源和大盘。

  1. ARMS控制台Grafana服务 - 工作区管理页面单击工作区ID。

  2. 工作区信息页面的云服务集成区域单击Prometheus监控服务,然后在对应实例右侧单击集成

  3. 在弹出的对话框中单击确认

    如果本次操作涉及的Prometheus实例为V2版本,请填写数据源访问AccessKey。

  4. 同步完成后,单击右侧的文件夹

  5. GrafanaDashboards页签单击大盘名称可以查看应用监控预置的默认大盘。

  6. 单击页面左上角的image图标,然后选择管理 - 数据源,可以查看已添加的应用监控数据源。

  7. 查询Prometheus指标。

    1. 登录本地Grafana系统。

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

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

    4. 单击+ Add visualization,在Select data source页面选择您创建的数据源。

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

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

      image

步骤三:获取Prometheus监控数据

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

V1版本

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和鉴权Token。

V2版本

GET {HTTP API}/api/v1/query

Accept: application/json
Content-Type: application/json
Authorization: Basic <base64Encode(<accessKey:secretKey>)>

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

}
说明
  • {HTTP API}替换为上文步骤一获取的HTTP API。

  • API接口支持STS鉴权。此时BasicAuth中的secretKey格式为{AccessKey Secret}${STS Token}。更多信息,请参见什么是STS

返回示例:

展开查看返回示例

{
    "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***"
                ]
            }
        ]
    }