You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按文档配置Gnocchi后调用API遇401未授权问题求助

解决Gnocchi Keystone认证请求失败问题

我来帮你一步步排查这个认证失败的问题:

1. 先确认请求是否携带了有效认证令牌

Gnocchi启用Keystone认证后,所有API请求都必须在请求头里带上X-Auth-Token,这个令牌需要先从Keystone获取:

获取Keystone令牌

用curl发送请求到Keystone的认证接口(替换成你的Keystone地址、用户名、密码和项目信息):

curl -i -X POST http://<keystone-server-ip>:5000/v3/auth/tokens \
  -H "Content-Type: application/json" \
  -d '{
    "auth": {
      "identity": {
        "methods": ["password"],
        "password": {
          "user": {
            "name": "<你的用户名>",
            "domain": {"name": "Default"},
            "password": "<你的密码>"
          }
        }
      },
      "scope": {
        "project": {
          "name": "<你的项目名>",
          "domain": {"name": "Default"}
        }
      }
    }
  }'

响应头里的X-Subject-Token就是你需要的有效令牌。

携带令牌请求Gnocchi

用拿到的令牌重新请求Gnocchi的metric接口:

curl -H "X-Auth-Token: <刚才获取的令牌>" http://<serverIP>:8041/v1/metric/0b5aa633-3ebf-49d5-99ad-e78302c41376

2. 检查Gnocchi的Keystone配置正确性

打开Gnocchi的主配置文件(通常是/etc/gnocchi/gnocchi.conf),重点核对[keystone_authtoken]章节的配置:

  • auth_url:必须是外部可访问的Keystone地址,不能是http://127.0.0.1/identity(除非你是在Gnocchi服务器本地发起请求),比如应该设置成http://<keystone-ip>:5000/v3
  • 确保username、password、project_name、user_domain_name、project_domain_name这些配置和Keystone里的服务用户信息完全匹配

3. 验证Gnocchi与Keystone的网络连通性

如果Gnocchi和Keystone不在同一台服务器,登录Gnocchi服务器,测试能否访问Keystone的认证地址:

curl http://<keystone-ip>:5000/v3

如果请求失败,说明存在网络障碍(比如防火墙拦截、路由不通),需要先解决网络问题。

4. 查看Gnocchi日志获取完整错误信息

你的响应里错误消息被截断了("message": "Th..."),查看Gnocchi的日志文件(通常在/var/log/gnocchi/目录下),找到对应时间点的日志条目,里面会有完整的错误描述,这能帮你更精准定位问题。

内容的提问来源于stack exchange,提问作者M. Pav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:21:12