配置并使用Prometheus V2实例的免密访问功能

更新时间:
复制 MD 格式

默认情况下,访问Prometheus V2实例需要用户提供AccessKeySecretyKey进行鉴权。但在某些场景下,用户可能需要直接访问某些Prometheus实例数据,本文介绍如何配置并使用Prometheus实例的免密访问功能。

前提条件

  • 已创建Prometheus V2实例。

  • 目前仅支持免密访问Prometheus客户端的IP地址或IP地址段。

配置免密访问

  1. 登录云监控控制台

  2. 在左侧导航栏,选择Prometheus监控 > 实例列表,然后单击目标实例名称。

  3. 设置页面单击免密访问配置

  4. 根据需求开启或关闭读取免密写入免密功能。

    功能开启后还需配置免密读写的客户端IP地址或IP地址段:

    • 0.0.0.0/0表示对所有客户端地址开启免密。

    • 多行IP地址或IP地址段以换行分隔。

  5. 单击确定

获取 Prometheus V2 实例的 Project

  1. 登录云监控2.0控制台,选择目标工作空间,在左侧导航栏选择所有功能 > 运维监控 > Prometheus服务

  2. 实例列表页面找到目标实例,右侧的操作列单击设置

  3. 设置页面的基础信息栏,单击存储位置,跳转到SLS 控制台,左上角就是当前实例的 Project。

客户端免密读写

获取读写地址

Prometheus实例设置页面的访问地址区域,可查看HTTP API、Remote Write、Remote Read等地址。

发起免密读写请求

客户端直接发起读写,HTTP头中不要携带AccessKey、SecretKey信息。以下是HTTP API免密读请求示例:

GET {HTTP API}/api/v1/query
Accept: application/json
Content-Type: application/json
{
  "query":"arms_prometheus_target_interval_length_seconds_sum",
  "time":"1635302655",
  "timeout":"1000"
}
重要

开启免密访问后,发起访问请求时请勿带携带AccessKey、SecretKey头,否则Promethues服务端仍按AccessKey身份进行RAM权限认证与鉴权,可能导致访问被拒绝。

常见问题

免密访问配置完成,但在请求V2 实例访问地址时仍遇到401报错

问题现象

虽然免密访问配置已完成,但在请求Prometheus V2 实例访问地址时仍遇到401报错:

unauthorized: get query instance error: { "httpCode": 401, "errorCode": "Unauthorized", "errorMessage": "Anonymous access is forbidden for this operation.", "requestID": "6AXDEFXXXEBFDAEXXXXXXXXX" }

问题原因

Prometheus V2 实例使用 SLS MetricStore 作为存储引擎,服务端获取到的客户端 IP 地址可能不是您客户端所在 VPC 内的 IP 地址,而是受请求链路多个环节影响。

处理方法

  1. 参考开通服务日志检查是否开通SLS服务日志。

  2. 日志服务的 Project列表,单击存储服务日志的 Project 名称。

  3. 打开 LogStore:internal-operation_log,输入过滤条件 * and Status: 401 and LogStore: aliyun-prom-{Prometheus实例ID} 可查询鉴权失败的日志,其中 ClientIP 即为服务端获取到的客户端 IP。

    image.png

    说明

    internal-operation_log 能查询 Project 下所有资源的操作日志,详见通过服务日志监测日志服务