blob: e7a3181bea70b1354aaece5e8b300f1e74d9ee6a [file] [log] [blame] [view]
# Dashboards for James on top of Prometheus / Grafana
The boards are slightly different than what we used to do with ES reporter, as we
count now on Prometheus to scrap metrics from the /metrics endpoint exposed from James.
This is just a rough conversion for starters, it will likely need more refining over time.
# Grafana reporting
This is a collection of Grafana dashboards to display James metrics.
## Expose metrics for Prometheus collection
To enable James metrics, add ``extensions.routes`` to [webadmin.properties]( https://github.com/apache/james-project/blob/master/server/apps/distributed-app/docs/modules/ROOT/pages/configure/webadmin.adoc) file:
```
extensions.routes=org.apache.james.webadmin.dropwizard.MetricsRoutes
```
## Configure Prometheus Data source
You need to set up [Prometheus](https://prometheus.io/docs/prometheus/latest/getting_started/) first to scrape James metrics.\
Add Apache James WebAdmin Url or IP address to `prometheus.yaml` configuration file.
```
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'WebAdmin url Example'
scrape_interval: 5s
metrics_path: /metrics
static_configs:
- targets: ['james-webamin-url']
- job_name: 'WebAdmin IP Example'
scrape_interval: 5s
metrics_path: /metrics
static_configs:
- targets: ['192.168.100.10:8000']
```
For Kubernetes deployment, we recommend using Prometheus `ServiceMonitor` to collect James metrics through James Webadmin service. Please see our James Helm-chart for more information.
## Connect Data source to Grafana
Add Prometheus data source to Grafana.\
You can do this either from [Grafana UI](https://prometheus.io/docs/visualization/grafana/) or from a [configuration file](https://grafana.com/docs/grafana/latest/datasources/prometheus/).
The following `docker-compose.yaml` will help you install a simple Prometheus/ Grafana stack :
```
version: '3'
#Metric monitoring
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
prometheus:
image: prom/prometheus:latest
restart: unless-stopped
ports:
- "9090:9090"
volumes:
- ./conf/prometheus.yml:/etc/prometheus/prometheus.yml
```
## Getting dashboards
All dasboards can be found [HERE](https://github.com/apache/james-project/tree/master/server/grafana-reporting/prometheus-datasource/). Import the different JSON files in this directory to Grafana via UI.