新闻

NEWS

VC君讲技术06 | rgw : usage输出时间格式为cst

发布时间:2020-08-12 发布者:瑞驰信息技术

《VC君讲技术》

技术分享第6期

作者:带鱼、乐枫


ceph版本:12.2.12


问题背景

通过radosgw-admin查询出来的统计时间是UTC,我们一般习惯是使用CST,需要把UTC转换为CST。


思路

在保存usage entry的时候存储UTC时间,这一点不去改动,主要是为了不影响其他地方去使用这个时间。在我们使用CST时间去查询的时候,平台将CST时间转为UTC时间后,再传递给命令去查询,然后我们在rgw里面增加一个配置,来规定输出的时间格式,默认输出CST时间,万一需要UTC时间的时候修改rgw配置即可。


修改代码

src/rgw/rgw_usage.cc

int RGWUsage::show(...){

...

utime_t ut(entry.epoch, 0);

// 增加以下代码,用来根据配置输出对应的时间格式

if (g_conf->rgw_usage_show_cst) {

ut.gmtime(formatter->dump_stream("time"));

} else {

       ut.localtime(formatter->dump_stream("time"));

}

formatter->dump_int("epoch", entry.epoch);

...

 

src/common/legacy_config_opts.h

OPTION(rgw_enable_usage_log, OPT_BOOL) // enable logging bandwidth usage

// 增加配置项,用来设置rgw usage输出时间的时区

OPTION(rgw_usage_show_cst, OPT_BOOL)

 

src/common/options.cc

Option("rgw_usage_max_user_shards", Option::TYPE_INT, Option::LEVEL_ADVANCED)

    .set_default(1)

    .set_min(1)

    .set_description("Number of shards for single user in usage log")

    .set_long_description(

        "The number of shards that a single user will span over in the usage log.")

    .add_see_also("rgw_enable_usage_log"),

    // 增加配置项,用来设置rgw usage输出时间的时区

    Option("rgw_usage_show_cst", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)

    .set_default(true)

    .set_description("The Usage log information is displayed in CST time format")

    .add_see_also("rgw_enable_usage_log"),