def _submit_check_result( host: HostName, servicedesc: ServiceDetails, result: ServiceCheckResult, cache_info: Optional[Tuple[int, int]], ) -> None: state, infotext, perfdata = result if not (infotext.startswith("OK -") or infotext.startswith("WARN -") or infotext.startswith("CRIT -") or infotext.startswith("UNKNOWN -")): infotext = defines.short_service_state_name(state) + " - " + infotext # make sure that plugin output does not contain a vertical bar. If that is the # case then replace it with a Uniocode "Light vertical bar" if isinstance(infotext, str): # regular check results are unicode... infotext = infotext.replace(u"|", u"\u2758") else: # ...crash dumps, and hard-coded outputs are regular strings infotext = infotext.replace("|", u"\u2758".encode("utf8")) perftexts = [_convert_perf_data(p) for p in perfdata] if perftexts: check_command = _extract_check_command(infotext) if check_command and config.perfdata_format == "pnp": perftexts.append("[%s]" % check_command) perftext = "|" + (" ".join(perftexts)) else: perftext = "" if _submit_to_core: _do_submit_to_core(host, servicedesc, state, infotext + perftext, cache_info) _output_check_result(servicedesc, state, infotext, perftexts)
def _paint_aggr_state_short(state, assumed=False): if state is None: return "", "" name = short_service_state_name(state["state"], "") classes = "state svcstate state%s" % state["state"] if assumed: classes += " assumed" return classes, html.render_span(name, class_=["state_rounded_fill"])
def paint_aggr_state_short(state, assumed=False): if state is None: return "", "" name = short_service_state_name(state["state"], "") classes = "state svcstate state%s" % state["state"] if assumed: classes += " assumed" return classes, name
def wrapped_check_func(hostname, *args, **kwargs): # type: (HostName, Any, Any) -> int host_config = config.get_config_cache().get_host_config(hostname) exit_spec = host_config.exit_code_spec() status, infotexts, long_infotexts, perfdata = 0, [], [], [] try: status, infotexts, long_infotexts, perfdata = check_func( hostname, *args, **kwargs) except SystemExit: raise except MKTimeout: if _in_keepalive_mode(): raise else: infotexts.append("Timed out") status = max(status, cast(int, exit_spec.get("timeout", 2))) except (MKAgentError, MKSNMPError, MKIPAddressLookupError) as e: infotexts.append("%s" % e) status = cast(int, exit_spec.get("connection", 2)) except MKGeneralException as e: infotexts.append("%s" % e) status = max(status, cast(int, exit_spec.get("exception", 3))) except Exception: if cmk.utils.debug.enabled(): raise crash_output = cmk.base.crash_reporting.create_check_crash_dump( hostname, check_plugin_name, None, False, None, description, []) infotexts.append( crash_output.replace("Crash dump:\n", "Crash dump:\\n")) status = max(status, cast(int, exit_spec.get("exception", 3))) # Produce the service check result output output_txt = "%s - %s" % (defines.short_service_state_name(status), ", ".join(infotexts)) if perfdata: output_txt += " | %s" % " ".join(perfdata) if long_infotexts: output_txt = "%s\n%s" % (output_txt, "\n".join(long_infotexts)) output_txt += "\n" if _in_keepalive_mode(): keepalive.add_keepalive_active_check_result( hostname, output_txt) console.verbose(output_txt.encode("utf-8")) else: console.output(output_txt.encode("utf-8")) return status
def wrapped_check_func(hostname: HostName, *args: Any, **kwargs: Any) -> int: host_config = config.get_config_cache().get_host_config(hostname) exit_spec = host_config.exit_code_spec() status, infotexts, long_infotexts, perfdata = 0, [], [], [] try: status, infotexts, long_infotexts, perfdata = check_func( hostname, *args, **kwargs) except MKTimeout: if _in_keepalive_mode(): raise infotexts.append("Timed out") status = max(status, cast(int, exit_spec.get("timeout", 2))) except (MKAgentError, MKFetcherError, MKSNMPError, MKIPAddressLookupError) as e: infotexts.append("%s" % e) status = cast(int, exit_spec.get("connection", 2)) except MKGeneralException as e: infotexts.append("%s" % e) status = max(status, cast(int, exit_spec.get("exception", 3))) except Exception: if cmk.utils.debug.enabled(): raise crash_output = cmk.base.crash_reporting.create_check_crash_dump( hostname, check_plugin_name, {}, False, description) infotexts.append( crash_output.replace("Crash dump:\n", "Crash dump:\\n")) status = max(status, cast(int, exit_spec.get("exception", 3))) # Produce the service check result output output_txt = "%s - %s" % (defines.short_service_state_name(status), ", ".join(infotexts)) if perfdata: output_txt += " | %s" % " ".join(perfdata) if long_infotexts: output_txt = "%s\n%s" % (output_txt, "\n".join(long_infotexts)) output_txt += "\n" if _in_keepalive_mode(): if not cmk_version.is_raw_edition(): import cmk.base.cee.keepalive as keepalive # pylint: disable=no-name-in-module else: keepalive = None # type: ignore[assignment] keepalive.add_active_check_result(hostname, output_txt) console.verbose(ensure_str(output_txt)) else: out.output(ensure_str(output_txt)) return status
def _submit_check_result(host, servicedesc, result, cached_at=None, cache_interval=None): # type: (HostName, ServiceDetails, ServiceCheckResult, Optional[int], Optional[int]) -> None if not result: result = 3, "Check plugin did not return any result" if len(result) != 3: raise MKGeneralException("Invalid check result: %s" % (result, )) state, infotext, perfdata = result if not (infotext.startswith("OK -") or infotext.startswith("WARN -") or infotext.startswith("CRIT -") or infotext.startswith("UNKNOWN -")): infotext = defines.short_service_state_name(state) + " - " + infotext # make sure that plugin output does not contain a vertical bar. If that is the # case then replace it with a Uniocode "Light vertical bar" if isinstance(infotext, six.text_type): # regular check results are unicode... infotext = infotext.replace(u"|", u"\u2758") else: # ...crash dumps, and hard-coded outputs are regular strings infotext = infotext.replace("|", u"\u2758".encode("utf8")) # performance data - if any - is stored in the third part of the result perftexts = [] perftext = "" if perfdata: # Check may append the name of the check command to the # list of perfdata. It is of type string. And it might be # needed by the graphing tool in order to choose the correct # template. Currently this is used only by mrpe. if len(perfdata) > 0 and isinstance(perfdata[-1], six.string_types): check_command = perfdata[-1] del perfdata[-1] else: check_command = None for p in perfdata: perftexts.append(_convert_perf_data(p)) if perftexts != []: if check_command and config.perfdata_format == "pnp": perftexts.append("[%s]" % check_command) perftext = "|" + (" ".join(perftexts)) if _submit_to_core: _do_submit_to_core(host, servicedesc, state, infotext + perftext, cached_at, cache_interval) _output_check_result(servicedesc, state, infotext, perftexts)
def __str__(self): return _("Worst state, %d nodes, restrict to %s") % ( self.count, short_service_state_name(self.restrict_state))