A lightweight Java library providing Protocol Buffer definitions for the Prometheus Remote Write API specification.
This library contains only the Java protobuf classes needed to serialize and deserialize Prometheus Remote Write protocol messages, making it ideal for applications that need to interact with Prometheus remote write endpoints.
- ✅ Protocol Buffer definitions for Prometheus Remote Write v1
- ✅ Minimal dependencies (only
protobuf-java) - ✅ Java 11+ compatible
- ✅ Auto-generated from official Prometheus protocol specification
<dependency>
<groupId>com.log10x</groupId>
<artifactId>prometheus-remote-write</artifactId>
<version>0.1.0-alpha</version>
</dependency>implementation 'com.log10x:prometheus-remote-write:0.1.0-alpha'The library provides the following protobuf message types:
WriteRequest- The main request message containing time series dataTimeSeries- A collection of labels and samplesLabel- A key-value pair for metric labelsSample- A single data point with timestamp and value
import com.log10x.prometheus.remotewrite.RemoteWrite.*;
// Create labels for the metric
Label metricName = Label.newBuilder()
.setName("__name__")
.setValue("my_metric")
.build();
Label instance = Label.newBuilder()
.setName("instance")
.setValue("localhost:8080")
.build();
// Create a sample with timestamp and value
Sample sample = Sample.newBuilder()
.setValue(42.0)
.setTimestamp(System.currentTimeMillis())
.build();
// Create a time series
TimeSeries timeSeries = TimeSeries.newBuilder()
.addLabels(metricName)
.addLabels(instance)
.addSamples(sample)
.build();
// Create the write request
WriteRequest writeRequest = WriteRequest.newBuilder()
.addTimeseries(timeSeries)
.build();
// Serialize to bytes for sending over HTTP
byte[] payload = writeRequest.toByteArray();import com.log10x.prometheus.remotewrite.RemoteWrite.*;
// Parse from bytes
byte[] receivedData = /* ... received from HTTP request ... */;
WriteRequest request = WriteRequest.parseFrom(receivedData);
// Process the time series
for (TimeSeries ts : request.getTimeseriesList()) {
for (Label label : ts.getLabelsList()) {
System.out.println(label.getName() + "=" + label.getValue());
}
for (Sample sample : ts.getSamplesList()) {
System.out.println("Value: " + sample.getValue() +
" at " + sample.getTimestamp());
}
}- JDK 11 or higher
- No IDE required (build is command-line only)
Generate protobuf classes and build the library:
./gradlew clean build generateProtoGenerated Java classes are located at:
build/generated/source/proto/main/java/com/log10x/prometheus/remotewrite/
The built JAR files can be found at:
build/libs/
This library implements the Prometheus Remote Write protocol as documented at: https://prometheus.io/docs/concepts/remote_write_spec/
The protocol uses Protocol Buffers for efficient serialization and is typically sent over HTTP with Snappy compression.
This project is licensed under the MIT License - see the LICENSE file for details.
Maintained by Dor Levi at Log10x Inc.