默认情况下,访问Prometheus V2实例需要用户提供AccessKey和SecretyKey进行鉴权。但在某些场景下,用户可能需要直接访问某些Prometheus实例数据,本文介绍如何配置并使用Prometheus实例的免密访问功能。
前提条件
已创建Prometheus V2实例。
目前仅支持免密访问Prometheus客户端的IP地址或IP地址段。
配置免密访问
登录云监控控制台。
在左侧导航栏,选择,然后单击目标实例名称。
在设置页面单击免密访问配置。
根据需求开启或关闭读取免密和写入免密功能。
功能开启后还需配置免密读写的客户端IP地址或IP地址段:
0.0.0.0/0表示对所有客户端地址开启免密。
多行IP地址或IP地址段以换行分隔。
单击确定。
获取 Prometheus V2 实例的 Project
登录云监控2.0控制台,选择目标工作空间,在左侧导航栏选择所有功能 > 运维监控 > Prometheus服务。
在实例列表页面找到目标实例,右侧的操作列单击设置。
在设置页面的基础信息栏,单击存储位置,跳转到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 地址,而是受请求链路多个环节影响。
处理方法
参考开通服务日志检查是否开通SLS服务日志。
在日志服务的 Project列表,单击存储服务日志的 Project 名称。
打开 LogStore:internal-operation_log,输入过滤条件
* and Status: 401 and LogStore: aliyun-prom-{Prometheus实例ID}可查询鉴权失败的日志,其中 ClientIP 即为服务端获取到的客户端 IP。
说明internal-operation_log 能查询 Project 下所有资源的操作日志,详见通过服务日志监测日志服务。