Getting Started
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:
-
Read the configuration (checks, timeouts, OTEL endpoint)
-
Run all checks concurrently
-
Evaluate assertions against response bodies (JSON-Pointer extraction with equality or numeric comparisons)
-
Emit
http_check_duration_ms,http_check_total, andhttp_check_upmetrics to the configured OTEL collector -
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 |
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
-
CLI Reference -- all configuration options and CLI parameters
-
Deployment -- running standalone or with Yupiik BundleBee on Kubernetes
-
BundleBee Deployment -- detailed Kubernetes CronJob setup