如何查询OpenStack租户的创建日期?Keystone数据库无created_at字段
嘿,这个问题我之前踩过坑——用实例最早创建日期来替代租户创建时间确实太不靠谱了,空租户直接就被漏掉了。下面给你几个精准的解决方案:
1. 用OpenStack命令行/API直接查(最推荐)
Keystone从v3版本开始就已经在project(也就是你说的租户)的返回数据里包含created_at字段了,不用绕弯子查实例。
- 用
openstack客户端的话,直接执行:
比如查名为openstack project show <你的租户ID或名称> -c created_atdemo的租户:openstack project show demo -c created_at,输出会直接显示创建时间。 - 如果没有装客户端,也可以用curl调用Keystone的v3 API:
先获取认证token(需要用到你的OpenStack认证地址、用户名密码等信息),然后发送请求:
返回的JSON数据里肯定能找到curl -H "X-Auth-Token: <你的认证token>" https://<keystone地址>:5000/v3/projects/<租户ID>created_at字段。
2. 直接查Keystone数据库(找对表就有)
你说找不到created_at字段,大概率是查错表了😅。Keystone的租户数据默认存在project表(如果你的数据库有自定义前缀,可能是keystone_project),这个表里明确有created_at和updated_at字段。
直接跑SQL查询就行:
SELECT id, name, created_at FROM project;
如果是多域部署,还可以加上域的过滤条件:
SELECT id, name, created_at FROM project WHERE domain_id = '<你的域ID>';
要是你用的是非常老的Keystone v2版本,那确实没有这个字段,这时候就得看下面的方法了。
3. 极端情况:老版本Keystone无字段的处理
如果真碰到没有created_at字段的老版本,针对无实例的租户,可以试试这些办法:
- 翻Keystone的日志文件:默认日志路径一般是
/var/log/keystone/keystone.log,搜索关键词Created project,日志里会记录创建租户的时间戳和租户ID/名称。 - 查计量服务记录:如果你的OpenStack部署了Ceilometer或者Gnocchi,这些服务会记录租户创建的事件,你可以通过它们的API或者数据库查询对应的事件时间。
- 查部署配置记录:如果是用Ansible、Terraform这类工具部署的OpenStack,部署脚本或日志里可能会有创建租户的时间点。
内容的提问来源于stack exchange,提问作者Lauden
相关产品推荐
相关产品推荐

