MKP 0.1.0 with section mailcow_info completed

This commit is contained in:
Ralf Mellis 2023-08-20 18:01:52 +02:00
parent 790d5b8e48
commit 0d241f6521
6 changed files with 193 additions and 0 deletions

View File

@ -0,0 +1,17 @@
title: Mailcow: Various information
agents: linux
catalog: unsorted
license: GPL
distribution: check_mk
description:
Tested with Mailcow versions 2022-07a and higher (use at your own risk with lower versions).
Tested only with fully dockerized Mailcow instances.
You have to provide at least the hostname/IP of your Mailcow server and an API key.
Got to configuration settings and create a new API key (read-only access is sufficient).
Allow API access to at least your CheckMK server IP address.
Shows several information about a Mailcow instance, e.g. number of domains/mailboxes/messages.
The check will raise WARN/CRIT if the number of domains is above the configurable levels.
The check will raise WARN/CRIT if the number of mailboxes is above the configurable levels.
The check will raise WARN/CRIT if the number of messages is above the configurable levels.
inventory:
one service is created (with several details)

View File

@ -0,0 +1,24 @@
#!/usr/bin/env python3
from cmk.gui.i18n import _
from cmk.gui.plugins.metrics import (
metric_info,
graph_info,
)
metric_info["mc_num_domains"] = {
"title": _("Number of Domains"),
"unit": "count",
"color": "44/a",
}
metric_info["mc_num_mailboxes"] = {
"title": _("Number of Mailboxes"),
"unit": "count",
"color": "44/b",
}
metric_info["mc_num_global_messages"] = {
"title": _("Number of Messages"),
"unit": "count",
"color": "42/a",
}

View File

@ -0,0 +1,32 @@
#!/usr/bin/env python3
from cmk.gui.plugins.metrics import perfometer_info
perfometer_info.append({
"type": "stacked",
"perfometers": [
{
"type": "linear",
"segments": ["mc_num_domains","mc_num_mailboxes","mc_num_global_messages"],
},
],
})
#perfometer_info.append({
# "type": "stacked",
# "perfometers": [
# {
# "type": "linear",
# "segments": ["mc_num_mailboxes"],
# },
# ],
#})
#perfometer_info.append({
# "type": "stacked",
# "perfometers": [
# {
# "type": "linear",
# "segments": ["mc_num_global_messages"],
# },
# ],
#})

View File

@ -0,0 +1,70 @@
from cmk.gui.i18n import _
from cmk.gui.plugins.wato import (
CheckParameterRulespecWithoutItem,
rulespec_registry,
RulespecGroupCheckParametersApplications
)
from cmk.gui.valuespec import (
Dictionary,
ListChoice,
Tuple,
Percentage,
Integer,
Float,
)
def _parameter_spec_mailcow_info():
return Dictionary(
elements=[
("levels_num_domains", Tuple(
title=_("Number of email domains"),
elements=[
Integer(
title=_("Warning at"),
default_value=100,
),
Integer(
title=_("Critical at"),
default_value=200,
)
],
)),
("levels_num_mailboxes", Tuple(
title=_("Number of mailboxes"),
elements=[
Integer(
title=_("Warning at"),
default_value=500,
),
Integer(
title=_("Critical at"),
default_value=1000,
)
],
)),
("levels_num_global_messages", Tuple(
title=_("Number of messages"),
elements=[
Integer(
title=_("Warning at"),
default_value=100000,
),
Integer(
title=_("Critical at"),
default_value=250000,
)
],
)),
],
)
rulespec_registry.register(
CheckParameterRulespecWithoutItem(
check_group_name="mailcow_info",
group=RulespecGroupCheckParametersApplications,
match_type="dict",
parameter_valuespec=_parameter_spec_mailcow_info,
title=lambda: _("Mailcow Info"),
)
)

View File

@ -0,0 +1,50 @@
from cmk.gui.i18n import _
from cmk.gui.plugins.wato import (
CheckParameterRulespecWithItem,
rulespec_registry,
RulespecGroupCheckParametersOperatingSystem,
)
from cmk.gui.valuespec import (
Dictionary,
ListChoice,
Checkbox,
TextAscii,
Password,
)
from cmk.gui.plugins.wato import (
HostRulespec,
)
from cmk.gui.plugins.wato.datasource_programs import RulespecGroupDatasourceProgramsCustom
def _valuespec_special_agent_mailcow():
return Dictionary(
title=_("Mailcow Server Information"),
help = _("Checking Mailcow instances via API"),
elements=[
("hostname", TextAscii(title=_("Hostname"),
allow_empty=False,
help=_("Hostname of Mailcow server (bare FQDN or IP), mandatory"))),
("apikey", TextAscii(title=_("API Key"),
allow_empty=False,
help=_("API Key, mandatory"))),
("port", TextAscii(title=_("Port"),
allow_empty=True,
help=_("Specify port if not listening to HTTPS/HTTP, optional"))),
("no_https", Checkbox(title=_("Disable HTTPS"),
help=_("Activate to disable TLS encryption (not recommended), optional"))),
("no_cert_check", Checkbox(title=_("Disable certificate validation"),
help=_("Activate to disable certificate validation (not recommended), optional"))),
],
optional_keys=[],
)
rulespec_registry.register(
HostRulespec(
group=RulespecGroupDatasourceProgramsCustom,
name="special_agents:mailcow",
valuespec=_valuespec_special_agent_mailcow,
)
)

BIN
mkp/Mailcow-0.1.0.mkp Executable file

Binary file not shown.