# Grafana centralised logging and monitoring service

**URL:** <https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445>\
**Category:** Implementing\
**Tags:** kubernetes, docker, o3\
**Created:** [February 24, 2026, 1:15pm UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445 "2026-02-24T13:15:09Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![raff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/raff/32/11894_2.png) [@raff](https://talk.openmrs.org/u/raff)\
**Post date:** [February 24, 2026, 1:15pm UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/1 "2026-02-24T13:15:09Z")

</div>

I’m excited to announce that we now have a centralised Grafana logging and monitoring service for OpenMRS!

The common setup is available for OpenMRS O3 in [docker-compose](https://github.com/openmrs/openmrs-distro-referenceapplication?tab=readme-ov-file#running-with-grafana) and [Kubernetes](https://github.com/openmrs/openmrs-contrib-cluster/blob/bc3af885962ae7143d2339a6694f75197080037b/helm/openmrs-backend/values.yaml#L265-L362)!

You can see it in action at [https://o3-k8s.openmrs.org/grafana/](https://o3-k8s.openmrs.org/grafana/) (login with user: `admin` and password: `Admin123`).

Logs from all services can now be found in a single place on a dedicated Grafana dashboard. You can quickly see error and warning counts, filter by services, list error logs, search etc.

Soon we will be adding alarms so you are notified about errors via e.g. e-mail. We are also planning to add metrics for monitoring your hardware utilisation so you can act when e.g. you are running out of storage.

The best part is that if you use docker-compose or OpenMRS Kubernetes helm chart, it’s extremely easy to deploy! Just copy over needed files or enable the feature in helm chart. No additional configuration needed. It comes with a pre-configured dashboard.

We welcome tweaks and improvements! If you make any changes in the dashboard, please do share them with the broader community so we can include them in the common setup and everyone can benefit!

Thank you!

---

<div class="post-metadata">

**Author:** ![dkayiwa](https://talk.openmrs.org/user_avatar/talk.openmrs.org/dkayiwa/32/179_2.png) [@dkayiwa](https://talk.openmrs.org/u/dkayiwa)\
**Post date:** [February 24, 2026, 1:49pm UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/2 "2026-02-24T13:49:07Z")

</div>

> [@raff](#):
>
> The best part is that if you use docker-compose or OpenMRS Kubernetes helm chart

How does the worst part look like? Or what detailed steps would it require? 😊

---

<div class="post-metadata">

**Author:** ![raff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/raff/32/11894_2.png) [@raff](https://talk.openmrs.org/u/raff)\
**Post date:** [February 24, 2026, 2:04pm UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/3 "2026-02-24T14:04:54Z")

</div>

Please see the README I linked. It’s just copying config files and docker-compose.

In K8s it’s setting `monitoring.enabled: true` when deploying the chart and adjusting ingress config if needed.

I think I’m going to make a small adjustment to the gateway service so that grafana can be hidden behind nginx in docker-compose setup.

---

<div class="post-metadata">

**Author:** ![ibacher](https://talk.openmrs.org/user_avatar/talk.openmrs.org/ibacher/32/19751_2.png) [@ibacher](https://talk.openmrs.org/u/ibacher)\
**Post date:** [February 24, 2026, 2:06pm UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/4 "2026-02-24T14:06:15Z")

</div>

Hey @raff! This is great! One thing: instead of using volume mounts to get the configuration into loki, alloy, and grafana containers is it possible to setup our own Dockerfiles to create those? This helps with getting things deployed in our weird infrastructure setup.

---

<div class="post-metadata">

**Author:** ![raff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/raff/32/11894_2.png) [@raff](https://talk.openmrs.org/u/raff)\
**Post date:** [February 24, 2026, 2:10pm UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/5 "2026-02-24T14:10:22Z")

</div>

@ibacher good idea! I’m thinking of a small init container that has the whole config and copies it over to alloy, grafana and loki upon startup. It will make it super easy to distribute updates.

---

<div class="post-metadata">

**Author:** ![ibacher](https://talk.openmrs.org/user_avatar/talk.openmrs.org/ibacher/32/19751_2.png) [@ibacher](https://talk.openmrs.org/u/ibacher)\
**Post date:** [February 24, 2026, 2:10pm UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/6 "2026-02-24T14:10:49Z")

</div>

Yeah, that sounds great!

---

<div class="post-metadata">

**Author:** ![pwargulak](https://talk.openmrs.org/user_avatar/talk.openmrs.org/pwargulak/32/14013_2.png) [@pwargulak](https://talk.openmrs.org/u/pwargulak)\
**Post date:** [February 25, 2026, 10:06am UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/7 "2026-02-25T10:06:58Z")

</div>

Great stuff @raff!

We’ve been using Grafana at [@SolDevelo](https://talk.openmrs.org/groups/soldevelo) for our OpenLMIS implementations, and I think we have some configs that we could contribute here.

For instance, we built out a custom dashboard for endpoint health-checks (uptime, SSL cert expiration, etc.). It basically allowed us to ditch Pingdom for an entirely OSS stack.

Let me know if you think these would be a good fit for the O3 setup, we’d be happy to share them.

---

<div class="post-metadata">

**Author:** ![raff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/raff/32/11894_2.png) [@raff](https://talk.openmrs.org/u/raff)\
**Post date:** [February 25, 2026, 10:54am UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/8 "2026-02-25T10:54:38Z")

</div>

@pwargulak absolutely, please do share! Our dashboards go to [openmrs-distro-referenceapplication/monitoring/dashboards at main · openmrs/openmrs-distro-referenceapplication · GitHub](https://github.com/openmrs/openmrs-distro-referenceapplication/tree/main/monitoring/dashboards)

Grafana made it to dev3 at [Grafana](https://dev3.openmrs.org/grafana)

The whole config is now being packaged as a docker init image so it’s even easier to deploy. You just need to copy over [docker-compose.grafana.yml](https://github.com/openmrs/openmrs-distro-referenceapplication/blob/main/docker-compose.grafana.yml).

---

<div class="post-metadata">

**Author:** ![bawanthathilan](https://talk.openmrs.org/user_avatar/talk.openmrs.org/bawanthathilan/32/22532_2.png) [@bawanthathilan](https://talk.openmrs.org/u/bawanthathilan)\
**Post date:** [February 25, 2026, 5:22pm UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/9 "2026-02-25T17:22:06Z")

</div>

> [@raff](#):
>
> [Grafana](https://o3-k8s.openmrs.org/grafana/)

This is great @raff

---

<div class="post-metadata">

**Author:** ![tendomart](https://talk.openmrs.org/user_avatar/talk.openmrs.org/tendomart/32/6753_2.png) [@tendomart](https://talk.openmrs.org/u/tendomart)\
**Post date:** [February 26, 2026, 2:01pm UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/10 "2026-02-26T14:01:33Z")

</div>

phenomenal addition thanks @raff

---

<div class="post-metadata">

**Author:** ![kszymankiewicz](https://talk.openmrs.org/user_avatar/talk.openmrs.org/kszymankiewicz/32/21947_2.png) [@kszymankiewicz](https://talk.openmrs.org/u/kszymankiewicz)\
**Post date:** [March 9, 2026, 8:28am UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/11 "2026-03-09T08:28:35Z")

</div>

@raff Hi I have been working on developing the monitoring stack of OpenLMIS. I think the tool I have been using for probing the services might come in handy for OpenMRS monitoring service.

In OpenLMIS we are using it to test the endpoints availability, response time and connection details (which is base feature of the tool) but also as a way to preview the uptime and availability of instances as well as analyze occured downtimes. Take a look at some screenshot from running system below.

 ![obraz](https://talk.openmrs.org/uploads/default/original/3X/f/5/f5792cce66adb8585ab2e438478718846cde5426.png)

 ![Blur_Zrzut ekranu z 2026-03-09 09-19-38](https://talk.openmrs.org/uploads/default/original/3X/6/8/68669f9845d9f7fbd9ce03bfd22674846d6e645a.png)

I have successfully configured the tool for OpenMRS and set up for probing backend and frontend of the app. For the deployments this tool can be configured to probe services directly, through load balancers and dns to be sure what part is misbehaving in case of any problems.

Take a look at PR I have prepared [Monitoring extension by kszymankiewicz-sd · Pull Request #971 · openmrs/openmrs-distro-referenceapplication · GitHub](https://github.com/openmrs/openmrs-distro-referenceapplication/pull/971) In case of any questions I’d be happy to provide some more info.

---

<div class="post-metadata">

**Author:** ![raff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/raff/32/11894_2.png) [@raff](https://talk.openmrs.org/u/raff)\
**Post date:** [March 9, 2026, 10:28am UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/12 "2026-03-09T10:28:35Z")

</div>

Thanks! It’s a great addition to our setup! I’ll try to find some time this week to review and test it out!

---

<div class="post-metadata">

**Author:** ![alebiedzinski](https://talk.openmrs.org/user_avatar/talk.openmrs.org/alebiedzinski/32/21314_2.png) [@alebiedzinski](https://talk.openmrs.org/u/alebiedzinski)\
**Post date:** [March 20, 2026, 2:16pm UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/13 "2026-03-20T14:16:44Z")

</div>

Hi @raff . Did you have time to test our setup? What’s you view on that? Would it be useful for you?

---

<div class="post-metadata">

**Author:** ![raff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/raff/32/11894_2.png) [@raff](https://talk.openmrs.org/u/raff)\
**Post date:** [March 26, 2026, 3:55pm UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/14 "2026-03-26T15:55:28Z")

</div>

The PR went through review and fixes and it looks good now. It would be great to have it merged. Asked @dkayiwa and @ibacher to help with that.

---

<div class="post-metadata">

**Author:** ![dkayiwa](https://talk.openmrs.org/user_avatar/talk.openmrs.org/dkayiwa/32/179_2.png) [@dkayiwa](https://talk.openmrs.org/u/dkayiwa)\
**Post date:** [July 22, 2026, 3:15pm UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/15 "2026-07-22T15:15:47Z")

</div>

FWIW, @jayasanka is continuing with this by adding more as below:

- cAdvisor for per-container CPU/memory metrics, plus a container dashboard.
- JMX exporter javaagent on the backend for JVM metrics (heap, file descriptors, restarts), plus a JVM dashboard.
- A TCP probe for MariaDB (db:3306) via the existing Blackbox exporter, plus a DB dashboard.
- Grafana-managed alerting (663 lines of provisioned rules) the piece that turns the whole thing from “dashboards you have to watch” into something that notifies you.

---

<div class="post-metadata">

**Author:** ![bawanthathilan](https://talk.openmrs.org/user_avatar/talk.openmrs.org/bawanthathilan/32/22532_2.png) [@bawanthathilan](https://talk.openmrs.org/u/bawanthathilan)\
**Post date:** [October 9, 2026, 6:10am UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/16 "2026-10-09T06:10:55Z")

</div>

I’m trying to view the dashboard, but I’m getting this @raff

 ![Screenshot 2026-10-09 at 11.39.22 AM](https://talk.openmrs.org/uploads/default/original/3X/8/a/8a1845531f9f110cce9e4722e77d631bbbcb1c75.png)

---

<div class="post-metadata">

**Author:** ![jayasanka](https://talk.openmrs.org/user_avatar/talk.openmrs.org/jayasanka/32/22204_2.png) [@jayasanka](https://talk.openmrs.org/u/jayasanka)\
**Post date:** [October 9, 2026, 11:10am UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/17 "2026-10-09T11:10:03Z")

</div>

@bawanthathilan it’s now available on dev3.

[https://dev3.openmrs.org/grafana](https://dev3.openmrs.org/grafana) (login with user: `admin` and password: `Admin123`).

---

<div class="post-metadata">

**Author:** ![jayasanka](https://talk.openmrs.org/user_avatar/talk.openmrs.org/jayasanka/32/22204_2.png) [@jayasanka](https://talk.openmrs.org/u/jayasanka)\
**Post date:** [October 9, 2026, 11:11am UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/18 "2026-10-09T11:11:25Z")

</div>

The updated monitoring work can be found here:

> [@JVM & Usage Metrics for OpenMRS](https://talk.openmrs.org/t/jvm-usage-metrics-for-openmrs/50069):
>
> Ever run OpenMRS in production and had no idea why it suddenly slowed to a crawl? No CPU graph to check, no memory trend to look at, just a support ticket saying “it’s slow”? That was the problem that got us started on this project. We wanted OpenMRS to actually tell us how it’s doing: JVM health, CPU, RAM, garbage collection, and the rest. Here’s a rundown of where things started, where they are now, and where they’re headed. Phase 1: Get the metrics flowing, out of the box The firs…

---

<div class="post-metadata">

**Author:** ![bawanthathilan](https://talk.openmrs.org/user_avatar/talk.openmrs.org/bawanthathilan/32/22532_2.png) [@bawanthathilan](https://talk.openmrs.org/u/bawanthathilan)\
**Post date:** [October 9, 2026, 11:53am UTC](https://talk.openmrs.org/t/grafana-centralised-logging-and-monitoring-service/48445/19 "2026-10-09T11:53:42Z")

</div>

thanks @jayasanka
