OPTION(mon_timecheck_skew_interval, OPT_FLOAT) // on leader, timecheck (clock drift check) interval when in presence of a skew (seconds)
OPTION(mon_pg_stuck_threshold, OPT_INT) // number of seconds after which pgs can be considered stuck inactive, unclean, etc (see doc/control.rst under dump_stuck for more info)
OPTION(mon_pg_min_inactive, OPT_U64) // the number of PGs which have to be inactive longer than 'mon_pg_stuck_threshold' before health goes into ERR. 0 means disabled, never go into ERR.
-OPTION(mon_pg_warn_min_per_osd, OPT_INT) // min # pgs per (in) osd before we warn the admin
OPTION(mon_pg_warn_max_object_skew, OPT_FLOAT) // max skew few average in objects per pg
OPTION(mon_pg_warn_min_objects, OPT_INT) // do not warn below this object #
OPTION(mon_pg_warn_min_pool_objects, OPT_INT) // do not warn on pools below this object #
.set_default(1)
.set_description(""),
- Option("mon_pg_warn_min_per_osd", Option::TYPE_INT, Option::LEVEL_ADVANCED)
+ Option("mon_pg_warn_min_per_osd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
.set_default(30)
- .set_description(""),
+ .set_description("minimal number PGs per (in) osd before we warn the admin"),
Option("mon_max_pg_per_osd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
.set_default(200)
// TOO_FEW_PGS
unsigned num_in = osdmap.get_num_in_osds();
auto sum_pg_up = std::max(static_cast<size_t>(pg_sum.up), pg_stat.size());
- if (num_in &&
- cct->_conf->mon_pg_warn_min_per_osd > 0 &&
- osdmap.get_pools().size() > 0) {
+ const auto min_pg_per_osd =
+ cct->_conf->get_val<uint64_t>("mon_pg_warn_min_per_osd");
+ if (num_in && min_pg_per_osd > 0 && osdmap.get_pools().size() > 0) {
auto per = sum_pg_up / num_in;
- if (per < cct->_conf->mon_pg_warn_min_per_osd && per) {
+ if (per < min_pg_per_osd && per) {
ostringstream ss;
ss << "too few PGs per OSD (" << per
- << " < min " << cct->_conf->mon_pg_warn_min_per_osd << ")";
+ << " < min " << min_pg_per_osd << ")";
checks->add("TOO_FEW_PGS", HEALTH_WARN, ss.str());
}
}
}
// pg skew
- int num_in = osdmap.get_num_in_osds();
- int sum_pg_up = MAX(pg_sum.up, static_cast<int32_t>(pg_stat.size()));
+ auto num_in = osdmap.get_num_in_osds();
+ auto sum_pg_up = MAX(static_cast<unsigned>(pg_sum.up), pg_stat.size());
int sum_objects = pg_sum.stats.sum.num_objects;
if (sum_objects < cct->_conf->mon_pg_warn_min_objects) {
return;
}
- if (num_in && cct->_conf->mon_pg_warn_min_per_osd > 0) {
- int per = sum_pg_up / num_in;
- if (per < cct->_conf->mon_pg_warn_min_per_osd && per) {
+ const auto min_pg_per_osd =
+ cct->_conf->get_val<uint64_t>("mon_pg_warn_min_per_osd");
+ if (num_in && min_pg_per_osd > 0) {
+ auto per = sum_pg_up / num_in;
+ if (per < min_pg_per_osd && per) {
ostringstream ss;
- ss << "too few PGs per OSD (" << per << " < min " << cct->_conf->mon_pg_warn_min_per_osd << ")";
+ ss << "too few PGs per OSD (" << per << " < min " << min_pg_per_osd << ")";
summary.push_back(make_pair(HEALTH_WARN, ss.str()));
if (detail)
detail->push_back(make_pair(HEALTH_WARN, ss.str()));