如何通过基础认证将pino-loki连接到Grafana?
解决pino-loki连接Grafana Cloud Loki的401认证问题
核心问题
你把服务账号ID当作认证用户名是错误的,Grafana Cloud Loki的基础认证规则不同:
- 用户名必须是你的Grafana Cloud日志实例ID(不是服务账号ID)
- 密码用你生成的服务账号令牌即可,但要确保该账号拥有日志推送权限
正确操作步骤
获取正确的实例ID
登录Grafana Cloud控制台,进入你的grafanacloud-myapi-logs实例详情页,里面能看到一串数字格式的实例ID,这才是认证需要的用户名。确认服务账号权限
检查sa-1-myapi服务账号的权限配置,必须开启Logs > Push权限,没有这个权限的话,即使令牌正确也会返回401。修正pino-loki配置
将认证参数替换为实例ID和服务账号令牌,示例代码如下:const pino = require('pino'); const pinoLoki = require('pino-loki'); const transport = pinoLoki({ host: 'https://logs-prod-006.grafana.net', basicAuth: { username: '你的日志实例ID', // 替换为实际的数字ID password: 'sa-1-myapi生成的令牌' }, labels: { application: 'my-api' }, batching: true, }); const logger = pino({ level: 'info' }, transport);快速验证认证有效性
可以用curl先测试认证是否正常,避免卡在代码层面:curl -u "你的实例ID:服务账号令牌" -X POST https://logs-prod-006.grafana.net/loki/api/v1/push -H "Content-Type: application/json" -d '{"streams":[{"stream":{"foo":"bar"},"values":[["'$(date +%s000)'","test log"]]}]}'如果返回204,说明认证没问题,再去排查pino-loki的配置细节;如果还是401,那就是权限或认证参数仍有错误。
内容的提问来源于stack exchange,提问作者Edon
相关产品推荐
相关产品推荐

