MKP 0.9.9, section mailcow_mailboxes completed

This commit is contained in:
2023-08-27 11:03:51 +02:00
parent 16956e8d05
commit 9ffe91c13c
8 changed files with 277 additions and 33 deletions

View File

@@ -219,18 +219,18 @@ def getMailcowInfo(headers, verify, base_url):
'''
Output is as follows:
mailbox name email address used for login
active 1 --> active, 0 --> not active
creation date "None" if ???
last modified date "None" if never modified
name display name
number of messages
percent in use quota used, rounded to full percents
quota max quota in bytes
quota used quota used in bytes
last imap login seconds since epoch, 0 if never logged inin seconds since epoch
last pop3 login seconds since epoch, 0 if never logged in
last smtp login seconds since epoch, 0 if never logged in
0 mailbox name email address used for login
1 active 1 --> active, 0 --> not active
2 creation date "None" if ???
3 last modified date "None" if never modified
4 name display name
5 number of messages
6 percent in use quota used, rounded to full percents
7 quota max quota in bytes
8 quota used quota used in bytes
9 last imap login seconds since epoch, 0 if never logged in
10 last pop3 login seconds since epoch, 0 if never logged in
11 last smtp login seconds since epoch, 0 if never logged in
Example:
user1@dom1.de;1;2022-04-29 14:29:34;2022-04-29 14:29:34;Sarah;2433;2;21474836480;495481374;1692520168;0;1692281537
@@ -266,17 +266,17 @@ def doCmkOutputMailcow(version, num_domains, num_mailboxes, num_global_messages)
'''
Output is as follows:
domain_name
active 1 --> active, 0 --> not active
creation date "None" if ???
last modified date "None" if never modified
max number mailboxes
number of mailboxes
max number of aliases
number of aliases
total number of messages
total number of bytes used in bytes
max quota in bytes
0 domain_name
1 active 1 --> active, 0 --> not active
2 creation date "None" if ???
3 last modified date "None" if never modified
4 max number mailboxes
5 number of mailboxes
6 max number of aliases
7 number of aliases
8 total number of messages
9 total number of bytes used in bytes
10 max quota in bytes
Example:
dom1.de;1;2022-04-23 22:54:57;None;10;0;400;6;0;0;10737418240

View File

@@ -0,0 +1,18 @@
title: Mailcow: Usage per Mailbox, Quota and Number of Messages
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 mailbox, e.g. number of messages and quota.
The check will raise WARN/CRIT if quota usage is above the configurable levels.
The check will raise WARN/CRIT if number of messages is above the configurable levels.
item:
mailboxname
inventory:
one service is created for each mailbox

View File

@@ -57,4 +57,16 @@ metric_info["mailcow_domains_configured_mailboxes"] = {
"title": _("Number of Configured Mailboxes"),
"unit": "count",
"color": "24/b",
}
metric_info["mailcow_mailboxes_used_quota"] = {
"title": _("Mailbox Quota Used"),
"unit": "%",
"color": "24/a",
}
metric_info["mailcow_mailboxes_messages"] = {
"title": _("Number of Messages"),
"unit": "count",
"color": "24/b",
}

View File

@@ -22,6 +22,17 @@ perfometer_info.append({
],
})
perfometer_info.append({
"type": "stacked",
"perfometers": [
{
"type": "linear",
"segments": ["mailcow_mailboxes_used_quota"],
"total": 100.0,
},
],
})
#perfometer_info.append({
# "type": "stacked",
# "perfometers": [

View File

@@ -0,0 +1,63 @@
from cmk.gui.i18n import _
from cmk.gui.plugins.wato import (
CheckParameterRulespecWithItem,
rulespec_registry,
RulespecGroupCheckParametersApplications
)
from cmk.gui.valuespec import (
Dictionary,
ListChoice,
TextAscii,
Percentage,
Tuple,
Float,
Integer
)
def _item_spec_mailcow_mailboxes():
return TextAscii(
title=_("Domain")
)
def _parameter_spec_mailcow_mailboxes():
return Dictionary(
elements=[
("levels_mailcow_mailboxes_quota_used", Tuple(
title=_("Mailcow mailbox quota usage for storage"),
elements=[
Percentage(
title=_("Warning at"),
default_value=65.0,
),
Percentage(
title=_("Critical at"),
default_value=85.0,
)
],
)),
("levels_mailcow_mailboxes_num_messages", Tuple(
title=_("Number of messages in mailbox"),
elements=[
Integer(
title=_("Warning at"),
default_value=1000,
),
Integer(
title=_("Critical at"),
default_value=2500,
)
],
)),
],
)
rulespec_registry.register(
CheckParameterRulespecWithItem(
check_group_name="mailcow_mailboxes",
group=RulespecGroupCheckParametersApplications,
match_type="dict",
item_spec=_item_spec_mailcow_mailboxes,
parameter_valuespec=_parameter_spec_mailcow_mailboxes,
title=lambda: _("Levels for Mailcow mailboxes"),
)
)