Skip to main content

Grommunio email system data exporter for Prometheus

Project description

Grommunio exporter for Prometheus

License Percentage of issues still open GitHub Release Linux linter

This program exposes Grommunio email system metrics for Prometheus
Since we already have node_exporter for system metrics and postfix_exporter for email deliverability metrics, this closes the gap with mailbox metrics.

Grafana Dashboard

You can find an example dashboard in the examples directory

image image

Automatic installation

On current Grommunio appliances based on OpenSuSE, you can use the following all-in-one installer script

curl -sSfL https://raw.githubusercontent.com/netinvent/grommunio_exporter/refs/heads/main/install.sh | sh -

Manual Install

Easiest way to install grommunio_exporter is to use python pip:

python3 -m pip install grommunio_exporter

Upgrading

Upgrading can be done via following command lines

python3 -m pip install --upgrade grommunio_exporter
systemctl restart grommunio_exporter

Special notes for Grommunio appliances

Note that on Grommunio appliances based on OpenSuSE 15.5, you'll have to install pip first and update wheel package via the following commands. Also note that installing the requested requirements for grommunio_exporter will fail if pip and wheel package isn't up to date in the Grommunio appliance (zypper installs pip 10.0.1, and pip 21.3.1 is required). Lastly, the message pygobject 3.42.2 requires pycairo>=1.16.0, which is not installed. can be ignored on these systems.

zypper install -y python3-pip
python3 -m pip install --upgrade pip setuptools wheel
python3 -m pip install grommunio_exporter

Installing via pip will create /usr/bin/grommunio_exporter. This file can be run manually for testing purposes, or run as service.

The exporter needs to be installed on the host that has grommunio-admin cli interface.
Once installed, you can create a systemd service file from the systemd unit file in the example dir.
Once the service is running, you may query the exporter with:

curl http://localhost:9769/metrics

Firewall

The default exporter-port is 9799/tcp, which you can change in the config file. Keep in mind that you need to create a firewall rule if you want to query it's output.

You can create the firewall rule with the following command on a Grommunio appliance

firewall-cmd --add-port=9799/tcp --permanent && firewall-cmd --reload

Metrics

The exporter currently produces the following metrics:

  • grommunio_api_status is 0 when no errors where found in api calls
  • grommunio_exporter_version is 0 when version successfully reported
  • grommunio_gromox_version is 0 when version successfully reported
  • grommunio_admin_version is 0 when version successfully reported
  • grommunio_mailbox_count
  • grommunio_shared_mailbox_count

The following metrics are per user and have labels hostname,domain,username:

  • grommunio_mailbox_messagesize
  • grommunio_mailbox_storage_quota_limit
  • grommunio_mailbox_prohibit_receive_limit
  • grommunio_mailbox_prohibit_send_quota
  • grommunio_mailbox_creation_time

Alert rules:

    - alert: Storage Quota
      expr: (1-((grommunio_mailbox_storage_quota_limit - grommunio_mailbox_messagesize)/grommunio_mailbox_storage_quota_limit))*100 > 95
      for: 5m

    - alert: Prohibit Send Quota
      expr: (1-((grommunio_mailbox_prohibit_send_quota - grommunio_mailbox_messagesize)/grommunio_mailbox_prohibit_send_quota))*100 > 95
      for: 5m

    - alert: Prohibit Receive Quota
      expr:  (1-((grommunio_mailbox_prohibit_receive_limit - grommunio_mailbox_messagesize)/grommunio_mailbox_prohibit_receive_limit))*100 > 95
      for: 5m

Customization

You may create a grommunio_exporter.yaml that can be added to the exporter via --config-file=/etc/grommunio_exporter.yaml argument.
This file can override the following:

  • http listen ip
  • http listen port
  • http authentication
  • grommunio api concurrency
  • grommunio hostname
  • path to grommunio-admin

Troubleshooting

This program has currently been tested on grommunio-admin-api-1.16.8.

By default, the exporter will log to /var/log/grommunio_exporter.log
You can override this in the config file.

You may also run the exporter with --debug in order to gain more information.

In order to be quick, grommunio_exporter uses concurrency to the grommunio_api. By default, this concurrency is set to 4. You can increase the concurrency if querying is to slow. Nevertheless, you should never query more than every 5 minutes to keep the server load down.

You can set the following scrape settings in the prometheus job:

scrape_interval: 300s
scrape_timeout: 240s

Misc

This version of the grommunio exporter uses the locally installed grommunio-admin cli interface instead of the REST API.
Pros:

  • No need for authentication

Cons:

  • Not all commands output parseable json
  • Probably slower than REST UI

If the project gains some traction, we can add REST UI support.

License

Licensed under GPLv3.0... Contributions are welcome
(C) 2024 NetInvent SASU

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

grommunio_exporter-0.5.0.tar.gz (28.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

grommunio_exporter-0.5.0-py3-none-any.whl (29.8 kB view details)

Uploaded Python 3

File details

Details for the file grommunio_exporter-0.5.0.tar.gz.

File metadata

  • Download URL: grommunio_exporter-0.5.0.tar.gz
  • Upload date:
  • Size: 28.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.10

File hashes

Hashes for grommunio_exporter-0.5.0.tar.gz
Algorithm Hash digest
SHA256 89cee3a278eb893f96e5031f06f1ec59e105e34d911dfe3c305fc4f970fb0710
MD5 853c94fb71f22d7a7a8e31d4ef252d8a
BLAKE2b-256 06ce61b3275a7f850bae8e29c643f5fba6019770c940f4fb93a115367ee06d63

See more details on using hashes here.

File details

Details for the file grommunio_exporter-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for grommunio_exporter-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5f20d55e5b49260a224ec6f969c0df3aec85dd40dacdace907c60d38b15e7edc
MD5 12ef00d5b5d98899f3c601318d1f2efc
BLAKE2b-256 4c3fbdf6c11747cec01ca0c04c2c32006dd11ff129c1b5444d974f92259ed35f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page