问题描述
我想用 prometheus 获取 arangodb 指标。 由于我启用了身份验证,因此必须使用用户和密码来完成。
这需要什么权限?
目前有效:
arangosh
const users = require('@arangodb/users');
users.save('prometheus','supersecure')
users.grantDatabase("prometheus","_system","ro")
users.grantCollection("prometheus","*","none")
解决方法
最后一个命令不是必需的。这些是我的步骤:
-
创建一个用户
prometheus
,按照您的建议对_system
进行只读访问 -
创建访问令牌
require('@arangodb/crypto').jwtEncode( "secret_token",{ "preferred_username": "prometheus","allowed_paths": ["/_admin/metrics"],"iss": "arangodb","exp": Math.floor(Date.now() / 1000) + 31536000 },"HS256");
其中
secret_token
是超级用户令牌,31536000
是在这种情况下大约一年的生存时间(以秒为单位)。
此令牌将授予对 /_admin/metrics
API 的访问权限,如下所示:
curl -H"Authorization: bearer $TOKEN" https://instance-ip:port/_admin/metrics