注意
本文档适用于 Ceph 的开发版本。
指标
Ceph Object Gateway 使用 Perf counters 来跟踪指标。计数器可以带有标签(带标签的 Perf Counters)。当计数器带有标签时,它们存储在 Ceph Object Gateway 特定的缓存中。
这些指标可以发送到时间序列数据库 Prometheus,以随时间推移可视化集群范围内的使用数据(例如:特定存储桶上的 S3 put 操作次数)。
操作指标
以下与 S3 或 Swift 操作相关的指标按每个 Ceph Object Gateway 跟踪。
名称 |
类型 |
描述 |
|---|---|---|
put_obj_ops |
计数器 |
put 操作次数 |
put_obj_bytes |
计数器 |
put 字节数 |
put_obj_lat |
Gauge |
put 操作的总延迟 |
get_obj_ops |
计数器 |
get 操作次数 |
get_obj_bytes |
计数器 |
get 请求的字节数 |
get_obj_lat |
Gauge |
get 操作的总延迟 |
del_obj_ops |
计数器 |
删除对象操作次数 |
del_obj_bytes |
计数器 |
删除字节数 |
del_obj_lat |
Gauge |
删除对象操作的总延迟 |
del_bucket_ops |
计数器 |
删除存储桶操作次数 |
del_bucket_lat |
Gauge |
删除存储桶操作的总延迟 |
copy_obj_ops |
计数器 |
复制对象操作次数 |
copy_obj_bytes |
计数器 |
复制字节数 |
copy_obj_lat |
Gauge |
复制对象操作的总延迟 |
list_object_ops |
计数器 |
列出对象操作次数 |
list_object_lat |
Gauge |
列出对象操作的总延迟 |
list_bucket_ops |
计数器 |
列出存储桶操作次数 |
list_bucket_lat |
Gauge |
列出存储桶操作的总延迟 |
counter dump 和 counter schema 命令的输出中有三个不同的部分显示操作指标及其信息。这些部分是 rgw_op、rgw_op_per_user 和 rgw_op_per_bucket。
rgw_op 部分中的计数器反映了给定 Ceph Object Gateway 的每个操作指标的总数。rgw_op_per_user 和 rgw_op_per_bucket 部分中的计数器是分别针对用户或存储桶的操作指标的带标签计数器。
操作指标的信息可以在 counter schema 命令输出的 rgw_op 部分中查看。
要在 Ceph Object Gateway 中查看操作指标,请转到 counter dump 命令输出的 rgw_op 部分
"rgw_op": [
{
"labels": {},
"counters": {
"put_obj_ops": 2,
"put_obj_bytes": 5327,
"put_obj_lat": {
"avgcount": 2,
"sum": 2.818064835,
"avgtime": 1.409032417
},
"get_obj_ops": 5,
"get_obj_bytes": 5325,
"get_obj_lat": {
"avgcount": 2,
"sum": 0.003000069,
"avgtime": 0.001500034
},
...
"list_buckets_ops": 1,
"list_buckets_lat": {
"avgcount": 1,
"sum": 0.002300000,
"avgtime": 0.002300000
}
}
},
]
操作指标标签
操作指标也可以按用户或按存储桶跟踪。这些指标以标签 bucket = {name} 或 user = {userid} 导出到 Prometheus
"rgw_op_per_bucket": [
...
{
"labels": {
"Bucket": "bucket1"
},
"counters": {
"put_obj_ops": 2,
"put_obj_bytes": 5327,
"put_obj_lat": {
"avgcount": 2,
"sum": 2.818064835,
"avgtime": 1.409032417
},
"get_obj_ops": 5,
"get_obj_bytes": 5325,
"get_obj_lat": {
"avgcount": 2,
"sum": 0.003000069,
"avgtime": 0.001500034
},
...
"list_buckets_ops": 1,
"list_buckets_lat": {
"avgcount": 1,
"sum": 0.002300000,
"avgtime": 0.002300000
}
}
},
...
]
RGW 多租户 允许使用具有相同名称的存储桶和用户,前提是它们是在不同的租户下创建的。如果用户或存储桶位于某个租户下,则会向该指标添加一个形式为 Tenant = {tenantid} 的租户标签。
在具有许多用户和存储桶的大型系统中,将所有指标导出到 Prometheus 可能不可行。因此,默认情况下禁用这些带标签指标的收集。
启用后,跟踪的用户和存储桶的工作集会受到限制,以限制内存和数据库使用。因此,这些带标签指标的收集并不总是可靠的。
用户和存储桶计数器缓存
要按用户跟踪操作指标,Ceph Object Gateway 配置值 rgw_user_counters_cache 必须设置为 true。
要按存储桶跟踪操作指标,Ceph Object Gateway 配置值 rgw_bucket_counters_cache 必须设置为 true。
这些配置值通过命令 ceph config set client.rgw rgw_{user,bucket}_counters_cache true 在 Ceph 中设置
由于操作指标是带标签的性能计数器,因此它们存在于内存中。如果 Ceph Object Gateway 重新启动或崩溃,Ceph Object Gateway 中的所有计数器,无论是否在缓存中,都将丢失。
用户和存储桶计数器缓存大小和逐出
rgw_user_counters_cache_size 和 rgw_bucket_counters_cache_size 均可用于设置每个缓存中的条目数。
一旦缓存中的计数器数量大于缓存大小配置变量,计数器就会从缓存中逐出。被逐出的计数器是最近最少使用(LRU)的计数器。
例如,如果存储桶数量超过 rgw_bucket_counters_cache_size 1 个,并且带有标签 bucket1 的计数器是最后更新的,则 bucket1 的计数器将被从缓存中逐出。如果在逐出后对 bucket1 执行了操作指标跟踪的 S3 操作,则缓存中 bucket1 的所有指标将从 0 开始。
缓存大小可能取决于许多因素。这些因素包括
集群中的用户数
集群中的存储桶数
Ceph Object Gateway 的内存使用情况
Prometheus 的磁盘和内存使用情况。
为了帮助计算 Ceph Object Gateway 的缓存内存使用情况,需要注意的是,每个缓存条目(包含所有操作指标)为 1360 字节。这是一个估计值,如果操作指标列表添加或删除指标,可能会有所变化。
将指标发送到 Prometheus
要将指标从 Ceph Object Gateway 获取到时间序列数据库 Prometheus 中,必须运行 ceph-exporter 守护程序并将其配置为抓取 Ceph Object Gateway 的管理套接字。
ceph-exporter 守护程序以配置变量 exporter_stats_period 定义的固定间隔抓取 Ceph Object Gateway 的管理套接字。
Prometheus 有一个可配置的间隔来抓取导出器(请参阅:https://prometheus.ac.cn/docs/prometheus/latest/configuration/configuration/)。
配置参考
以下 Ceph Object Gateway 操作指标相关设置可以通过 ceph config set client.rgw CONFIG_VARIABLE VALUE 进行设置。
- rgw_user_counters_cache
为带有用户标签的计数器启用 rgw 性能计数器缓存
- 类型:
bool- 默认值:
false- 另请参阅:
- rgw_user_counters_cache_size
用户性能计数器缓存可以存储的带标签性能计数器数量
- 类型:
uint- 默认值:
10000- 另请参阅:
- rgw_bucket_counters_cache
为带有存储桶标签的计数器启用 rgw 性能计数器缓存
- 类型:
bool- 默认值:
false- 另请参阅:
- rgw_bucket_counters_cache_size
存储桶性能计数器缓存可以存储的带标签性能计数器数量
- 类型:
uint- 默认值:
10000- 另请参阅:
以下是可以通过 ceph config set global CONFIG_VARIABLE VALUE 进行设置的值得注意的 ceph-exporter 相关设置。
- exporter_stats_period
再次向导出器服务器发送请求前等待的时间(秒)
- 类型:
int- 默认值:
5