* The 'ceph osd rm' command has been deprecated. Users should use
'ceph osd destroy' or 'ceph osd purge' (but after first confirming it is
safe to do so via the 'ceph osd safe-to-destroy' command).
+* The mon_health_preluminous_compat and mon_health_preluminous_compat_warning
+ config options are removed, as the related functionality is more
+ than two versions old. Any legacy monitoring system expecting Jewel-style
+ health output will need to be updated to work with Nautilus.
* Nautilus is not supported on any distros still running upstart so upstart
specific files and references have been removed.
OPTION(mon_health_to_clog, OPT_BOOL)
OPTION(mon_health_to_clog_interval, OPT_INT)
OPTION(mon_health_to_clog_tick_interval, OPT_DOUBLE)
-OPTION(mon_health_preluminous_compat, OPT_BOOL)
OPTION(mon_data_avail_crit, OPT_INT)
OPTION(mon_data_avail_warn, OPT_INT)
OPTION(mon_data_size_warn, OPT_U64) // issue a warning when the monitor's data store goes over 15GB (in bytes)
.set_default(60.0)
.set_description(""),
- Option("mon_health_preluminous_compat", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
- .set_default(false)
- .set_description("Include health warnings in preluminous JSON fields"),
-
- Option("mon_health_preluminous_compat_warning", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
- .set_default(true)
- .set_description("Warn about the health JSON format change in preluminous JSON fields"),
-
Option("mon_health_max_detail", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
.set_default(50)
.set_description("max detailed pgs to report in health detail"),
const char *sep2)
{
health_status_t r = HEALTH_OK;
- bool compat = g_conf()->mon_health_preluminous_compat;
- bool compat_warn = g_conf().get_val<bool>("mon_health_preluminous_compat_warning");
if (f) {
f->open_object_section("health");
f->open_object_section("checks");
if (f) {
f->close_section();
f->dump_stream("status") << r;
+ f->close_section();
} else {
// one-liner: HEALTH_FOO[ thing1[; thing2 ...]]
*plain = stringify(r);
*plain += "\n";
}
- if (f && (compat || compat_warn)) {
- health_status_t cr = compat_warn ? min(HEALTH_WARN, r) : r;
- if (compat) {
- f->open_array_section("summary");
- if (compat_warn) {
- f->open_object_section("item");
- f->dump_stream("severity") << HEALTH_WARN;
- f->dump_string("summary", "'ceph health' JSON format has changed in luminous; update your health monitoring scripts");
- f->close_section();
- }
- for (auto& svc : paxos_service) {
- svc->get_health_checks().dump_summary_compat(f);
- }
- f->close_section();
- }
- f->dump_stream("overall_status") << cr;
- }
-
- if (want_detail) {
- if (f && (compat || compat_warn)) {
- f->open_array_section("detail");
- if (compat_warn) {
- f->dump_string("item", "'ceph health' JSON format has changed in luminous. If you see this your monitoring system is scraping the wrong fields. Disable this with 'mon health preluminous compat warning = false'");
- }
- }
-
+ if (want_detail && !f) {
for (auto& svc : paxos_service) {
- svc->get_health_checks().dump_detail(f, plain, compat);
- }
-
- if (f && (compat || compat_warn)) {
- f->close_section();
+ svc->get_health_checks().dump_detail(plain);
}
}
- if (f) {
- f->close_section();
- }
+
return r;
}
}
}
- void dump_detail(Formatter *f, std::string *plain, bool compat) const {
+ void dump_detail(std::string *plain) const {
for (auto& p : checks) {
- if (f) {
- if (compat) {
- // this is sloppy, but the best we can do: just dump all of the
- // individual checks' details together
- for (auto& d : p.second.detail) {
- f->dump_string("item", d);
- }
- }
- } else {
- if (!compat) {
- *plain += p.first + " " + p.second.summary + "\n";
- }
- for (auto& d : p.second.detail) {
- if (!compat) {
- *plain += " ";
- }
- *plain += d;
- *plain += "\n";
- }
+ *plain += p.first + " " + p.second.summary + "\n";
+ for (auto& d : p.second.detail) {
+ *plain += " ";
+ *plain += d;
+ *plain += "\n";
}
}
}