默认情况下,访问Prometheus V2实例需要用户提供AccessKey和SecretyKey进行鉴权。但在某些场景下,用户可能需要直接访问某些Prometheus实例数据,本文介绍如何配置并使用Prometheus实例的免密访问功能。
前提条件
本功能仅适用于Prometheus V2实例。
已创建Prometheus V2实例。
目前仅支持免密访问Prometheus客户端的IP地址或IP地址段。
配置免密访问
登录云监控控制台。
在左侧导航栏,选择
,然后单击目标实例名称。在设置页面单击免密访问配置。
根据需求开启或关闭读取免密和写入免密功能。
功能开启后还需配置免密读写的客户端IP地址或IP地址段:
0.0.0.0/0表示对所有客户端地址开启免密。
多外IP地址或IP地址段以换行分隔。
单击确定。
获取客户端IP地址
Prometheus V2实例使用SLS MetricStore作为存储引擎,服务端获取到的客户端IP地址可能不是您客户端所在VPC内的IP地址,受请求链路多个环节影响,想要确切获取您当前场景下Prometheus服务获取到的客户端IP地址,可通过服务日志自助查询访问Prometheus V2实例的客户端IP地址。
获取Prometheus V2实例对应的SLS MetricStore
在Prometheus V2实例详情的设置界面可获取实例对应的SLS Project和MetricStore。
SLS Project:HTTP API地址域名中的一段。
SLS MetricStore:命名规则为
aliyun-prom-{prometheus实例id}
,在基础信息区域可以获取实例ID。
查看Prometheus V2服务端获取到的请求客户端IP地址
开启SLS Project的服务日志后,在服务日志的Project下,进入名称为internal-operation_log的Logstore中,输入过滤条件* and Status: 401 and LogStore: aliyun-prom-{Prometheus实例ID}
可查询鉴权失败日志,其中ClientIP即为服务端获取到的您当前场景下的客户端IP。
客户端免密读写
获取读写地址
在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权限认证与鉴权,可能导致访问被拒绝。