[

Statura is an OTEL synthetic monitoring probe. It runs a set of configurable HTTP health checks against your endpoints, evaluates assertions on the responses, and pushes the results as OpenTelemetry metrics to a collector.

Each invocation is a single batch run: checks execute in parallel using virtual threads, metrics are flushed, and the process exits. This makes it a natural fit for a Kubernetes CronJob, but it works just as well from your local machine or a CI pipeline.

The project ships as a Java application (requires Java 25+) and can also be compiled to a native binary with GraalVM.

How It Works

At a high level, Statura takes a JSON configuration describing one or more checks, executes them, and reports the results:

  1. Read the configuration (checks, timeouts, OTEL endpoint)

  2. Run all checks concurrently

  3. Evaluate assertions against response bodies (JSON-Pointer extraction with equality or numeric comparisons)

  4. Emit http_check_duration_ms, http_check_total, and http_check_up metrics to the configured OTEL collector

  5. Exit

Prerequisites

  • Java 25+

  • Apache Maven 3.9+

Build

mvn clean package -DskipTests

Run Locally

Create a configuration file config.json - it is controlled with statura.configurationLocation system properties (or STATURA_CONFIGURATIONLOCATION environment variable):

{
  "checks": [
    {
      "name": "example",
      "type": "HTTP",
      "http": {
        "url": "http://localhost:8080/health",
        "expectedStatus": 200
      }
    }
  ],
  "opentelemetry": {
    "endpoint": "http://localhost:4318/v1/metrics",
    "headers": {}
  },
  "execution-timeout": "PT5M",
  "default-timeout": "PT30S"
}
TIP

this is exactly the executor CLI options but using a hierarchic (or not) style in a JSON file. The - are replaced by dot when the JSON is flattened. You can see the JSON-Schema at JSON-Schema .

You can use the maven-exec-plugin to test locally after creating a config.json file at the root base of the project

<plugin><!-- mvn exec:java -->
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <configuration>
        <mainClass>io.yupiik.fusion.framework.api.main.CliLauncher</mainClass>
        <arguments>
            <argument>executor</argument>
        </arguments>
        <systemProperties>
            <property>
                <key>java.util.logging.manager</key>
                <value>io.yupiik.logging.jul.YupiikLogManager</value>
            </property>
            <property>
                <key>statura.configurationLocation</key>
                <value>${project.basedir}/config.json</value>
            </property>
        </systemProperties>
    </configuration>
</plugin>

Then run:

mvn exec:java

Next Steps