# Observability

## Overview

Joule offers robust observability features designed for monitoring each component in real-time.

This system-wide observability is achieved through JMX (Java Management Extensions) and a Metrics API, enabling users to track events, processing status and data movement across processors, connectors and storage.

By leveraging a standard monitoring pattern, JMX beans offer visibility into the state of all active processes.

Below is an example configuration for enabling JMX beans, illustrating how Joule’s system architecture exposes these metrics.

<figure><img src="/files/fqoo5yJoojApvFOewFVy" alt=""><figcaption><p>JMX beans UI</p></figcaption></figure>

## Key features of observability in Joule

1. <mark style="color:green;">**JMX integration**</mark>\
   Enables remote monitoring and management of processes.
2. <mark style="color:green;">**Metrics API**</mark>\
   Provides real-time counters for events processed, failed, discarded and more.
3. <mark style="color:green;">**Automated Monitoring**</mark>\
   Each component (data pipelines, processor, connectors, storage) has default metrics enabled, facilitating quick access to performance insights.
4. <mark style="color:green;">**Configurable**</mark>\
   Users can customize monitoring parameters for tailored observability.

### Metrics

The following metrics are enabled by default and are accessible via JMX beans:

* <mark style="color:green;">**Received**</mark>\
  Count of events received by the component.
* <mark style="color:green;">**Processed**</mark>\
  Number of events successfully processed.
* <mark style="color:green;">**Failed**</mark>\
  Events that failed during processing.
* <mark style="color:green;">**Discarded**</mark>\
  Events discarded based on specified rules.
* <mark style="color:green;">**Ignored**</mark>\
  Events ignored by the system.
* <mark style="color:green;">**Average processing latency**</mark>\
  Measures the average time taken to process events.

## Activate observability and monitoring

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><mark style="color:orange;"><strong>Enabling JMX for Joule</strong></mark></td><td>Activate JMX monitoring for Joule with configurable settings</td><td></td><td><a href="/pages/1R4AnRrqt5NW64dbeKQm">/pages/1R4AnRrqt5NW64dbeKQm</a></td></tr><tr><td><mark style="color:orange;"><strong>Meters</strong></mark></td><td>Automated metrics monitor for Joule pipelines: data pipelines, processors, transport, storage</td><td></td><td><a href="/pages/smuPDqddiByUXUbh6cSH">/pages/smuPDqddiByUXUbh6cSH</a></td></tr><tr><td><mark style="color:orange;"><strong>Metrics API</strong></mark></td><td>Tracks component events and data flow with counters</td><td></td><td><a href="/pages/tZThBjmCZRUD8sWO59CB">/pages/tZThBjmCZRUD8sWO59CB</a></td></tr></tbody></table>

## Additional information

* Learn about the [JMX technology](https://www.oracle.com/technical-resources/articles/javase/jmx.html)
* Learn about how to use the [monitoring and management using JMX technology](https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fractalworks.io/joule/components/observability.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
