Ceilometer/blueprints/pollster-swift
< Ceilometer | blueprints
pollster-swift 蓝图
用例
- 提供商希望检索 Swift 使用情况数据以向其客户计费
- 客户希望监控其 Swift 使用情况
提议的实现方案
以下是需要收集的第一个计量表列表,以便计费系统能够对 Swift 执行其任务。此列表必须能够随着时间的推移进行扩展,并且每个管理员必须能够根据其本地需求启用或禁用每个计量表
| 计量表名称 | 优先级 | 资源 ID | 单位 | Metadata | 类型 | |
| o1 | storage.objects | 必须 | swift 账户 ID | 对象数量 | Gauge(计量表) | |
| o2 | storage.objects.size | 必须 | swift 账户 ID | 字节 | Gauge(计量表) | |
| o3 | storage.objects.containers | 必须 | swift 账户 ID | 容器数量 | Gauge(计量表) | |
| o4 | storage.containers.objects | 可能 | 容器名称 | 对象数量 | Gauge(计量表) | |
| o5 | storage.containers.objects.size | 可能 | 容器名称 | 字节 | Gauge(计量表) | |
| o6 | storage.objects.upload.internal | 可能 | 容器名称 | 请求数量 | Delta | |
| o7 | storage.objects.download.internal | 可能 | 容器名称 | 请求数量 | Delta | |
| o8 | storage.objects.update.internal | 可能 | 容器名称 | 请求数量 | Delta | |
| o9 | storage.objects.delete.internal | 可能 | 容器名称 | 请求数量 | Delta | |
| o10 | storage.objects.upload.size.internal | 可能 | 容器名称 | 字节 | Delta | |
| o11 | storage.objects.download.size.internal | 可能 | 容器名称 | 字节 | Delta | |
| o12 | storage.objects.update.size.internal | 可能 | 容器名称 | 字节 | Delta | |
| o13 | storage.objects.delete.size.internal | 可能 | 容器名称 | 字节 | Delta | |
| o14 | storage.objects.upload.external | 可能 | 容器名称 | 请求数量 | Delta | |
| o15 | storage.objects.download.external | 可能 | 容器名称 | 请求数量 | Delta | |
| o16 | storage.objects.update.external | 可能 | 容器名称 | 请求数量 | Delta | |
| o17 | storage.objects.delete.external | 可能 | 容器名称 | 请求数量 | Delta | |
| o18 | storage.objects.upload.size.external | 可能 | 容器名称 | 字节 | Delta | |
| o19 | storage.objects.download.size.external | 可能 | 容器名称 | 字节 | Delta | |
| o20 | storage.objects.update.size.external | 可能 | 容器名称 | 字节 | Delta | |
| o21 | storage.objects.delete.size.external | 可能 | 容器名称 | 字节 | Delta | |
| o22 | storage.objects.incoming.bytes | 必须 | swift 账户 ID | 字节 | Delta | |
| o23 | storage.objects.outgoing.bytes | 必须 | swift 账户 ID | 字节 | Delta |
计数器 o1 到 o5 必须通过轮询 Swift 实现。
轮询 Swift 有 2 种方法
1. 作为拥有 ResellerAdmin 角色的其中一个租户的用户,通过 swift-proxy 获取令牌
2. 使用环来确定正确的 swift-<type>-server 并直接从其请求信息。swift-account-server 可以提供存储在所有容器中的对象数量和大小,以及容器数量和容器列表。swift-container-server 可以提供每个容器的对象数量和大小。
在第一次实现时,选项 1 应该更简单、更清晰,但会给 Keystone 带来更大的负载。如果实现,可以通过一个选项来选择选项 2。
计数器 o6 到 o21 应该通过 Swift 中间件实现,该中间件统计请求及其大小并定期发布计数器。
为了区分网络,建议我们从使用列出内部网络的配置文件开始实现此功能,默认情况下,该配置文件应列出 A、B 和 C 私有网络类 (RFC 1918)。