尽管这个问题已经存在三个月了,但我希望我的回答仍然对某人有所帮助。
Ceilometer 的流水线处理似乎从未正常工作过。正如最初的发布者所注意到的那样,Ceilometer 开发团队采取了有点激进的措施来弃用并废弃此功能。因此, Ceilometer 库中唯一保留的 CPU 计量器是实例的累积 CPU 时间,以纳秒为单位。
要基于此计量器计算单个实例的 CPU 利用率,可以使用 Gnocchi 的速率聚合。如果rate:mean是归档策略中的聚合方法之一,您可以这样做:
gnocchi measures show --resource-id <uuid> --aggregation rate:mean cpu
或者使用动态聚合功能获得相同的结果:
gnocchi aggregates '(metric cpu rate:mean)' id=<uuid>
aggregates命令的第一个参数是定义您想要的数字的操作。您可以在Gnocchi API 文档中找到操作说明,尤其是列出支持的操作的部分和示例部分。第二个参数是一个搜索表达式,它将计算限制为具有此特定 UUID 的实例(当然,只有一个这样的实例)。
到目前为止,该命令只是从 Gnocchi 数据库中提取数字。但是,您可以从数据库中提取数据,然后即时聚合它们。这种技术被(或曾经)称为重新聚合。这样,您无需在归档策略中包含rate:mean :
gnocchi aggregates '(aggregate rate:mean (metric cpu mean))' id=<uuid>
这些数字以纳秒表示,这有点笨拙。好消息:Gnocchi 聚合操作也支持算术。要将纳秒转换为秒,请将它们除以十亿:
gnocchi aggregates '(/ (aggregate rate:mean (metric cpu mean)) 1000000000)' id=<uuid>
并将它们转换为百分比,将它们除以(粒度乘以十亿),然后将结果乘以 100。假设粒度为 60:
gnocchi aggregates '(* (/ (aggregate rate:mean (metric cpu mean)) 60000000000) 100)' id=<uuid>