tree: e6a595d9ec7c2a5aa1427185680a0483d6b87fe4 [path history] [tgz]
  1. BlobStore-1543222647953-dashboard.json
  2. CacheBlobStore-15911761170000-dashboard.json
  3. Cassandra_driver-1504068385404-dashboard.json
  4. DeletedMessagesVault-1563771591074-dashboard.json
  5. IMAP_board-1488774825351-dashboard.json
  6. IMAP_count_board-1488774815587-dashboard.json
  7. JAMES_DNS_dashboard-1491268903944-dashboard.json
  8. James_JVM-1504068360629-dashboard.json
  9. JMAP_board-1488774804236-dashboard.json
  10. JMAP_count_board-1488774795514-dashboard.json
  11. MailboxListeners rate-1552903378376.json
  12. MailboxListeners-1528958667486-dashboard.json
  13. MAILET-1490071694187-dashboard.json
  14. MailQueue-1490071879988-dashboard.json
  15. MATCHER-1490071813409-dashboard.json
  16. MessageFastViewProjection-1575520507952.json
  17. Miscalleneous-1490072265151-dashboard.json
  18. PreDeletionHooks-1553684324244-dashboard.json
  19. README.md
  20. SMTP_board-1488774774172-dashboard.json
  21. SMTP_count_board-1488774761350-dashboard.json
  22. SpamAssassin-1522226824255-dashboard.json
  23. Tika-1522226794419-dashboard.json
grafana-reporting/README.md

Grafana reporting

This is a collection of Grafana dashboards to display James metrics.

Run Grafana

The following command allow you to run a fresh grafana server :

docker run -i -p 3000:3000 grafana/grafana

Configure a data source

Once running, you need to set up an ElasticSearch data-source. You can do this either from UI or from a configuration file.

Setting up via UI

  • name it DS_JAMES_ES
  • select proxy mode
  • Select version 6.x of ElasticSearch
  • make the URL point your ES node
  • Specify the index name. By default, it should be :
[james-metrics-]YYYY-MM

Setting up using a configuration file

Look up file grafana-datasource.yaml from Grafana and add following data source into it:

apiVersion: 1

datasources:
  - name: DS_JAMES_ES
    type: elasticsearch
    access: proxy
    database: "[james-metrics-]YYYY-MM"
    url: http://elasticsearch:9200
    version: 6
    editable: true
    jsonData:
      interval: Daily
      timeField: "@timestamp"

Getting dashboards

Import the different dashboard JSON files in this directory to Grafana via UI or paste the files into Grafana dashboards folder (/var/lib/grafana/dashboards by default)

Enable reporting from James configuration

You then need to enable James to report its stats into ElasticSearch. Modify your James ElasticSearch configuration file accordingly. To help you doing this, you can take a look to GitHub. Note that you need to run a guice version of James.

Presentation of the different boards

  • JVM statistics
  • Percentiles for IMAP / JMAP / SMTP commands
  • Requests counts for IMAP / JMAP / SMTP commands
  • Statistics about Mailet / Matcher execution times
  • Statistics about Mail queues
  • Statistics about DNS calls
  • Some other, diverse information on the James server internals
  • Cassandra driver statistics
  • Tika HTTP client statistics
  • SpamAssassin TCP client statistics
  • Mailbox listeners statistics execution times
  • Mailbox listeners requests rate
  • MailQueue enqueue/dequeue timer & counter statistics
  • BlobStore timer statistics
  • Statistics about pre-deletion hooks execution times
  • MessageFastViewProjection retrieving hits & miss count