mirror of
				https://github.com/prometheus/prometheus.git
				synced 2025-10-31 16:31:03 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			89 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
| // Copyright 2016 Prometheus Team
 | |
| // Licensed under the Apache License, Version 2.0 (the "License");
 | |
| // you may not use this file except in compliance with the License.
 | |
| // You may obtain a copy of the License at
 | |
| //
 | |
| // http://www.apache.org/licenses/LICENSE-2.0
 | |
| //
 | |
| // Unless required by applicable law or agreed to in writing, software
 | |
| // distributed under the License is distributed on an "AS IS" BASIS,
 | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| // See the License for the specific language governing permissions and
 | |
| // limitations under the License.
 | |
| 
 | |
| syntax = "proto3";
 | |
| package prometheus;
 | |
| 
 | |
| option go_package = "prompb";
 | |
| 
 | |
| import "types.proto";
 | |
| import "gogoproto/gogo.proto";
 | |
| 
 | |
| message WriteRequest {
 | |
|   repeated prometheus.TimeSeries timeseries = 1 [(gogoproto.nullable) = false];
 | |
|   // Cortex uses this field to determine the source of the write request.
 | |
|   // We reserve it to avoid any compatibility issues.
 | |
|   reserved  2;
 | |
|   repeated prometheus.MetricMetadata metadata = 3 [(gogoproto.nullable) = false];
 | |
| }
 | |
| 
 | |
| // ReadRequest represents a remote read request.
 | |
| message ReadRequest {
 | |
|   repeated Query queries = 1;
 | |
| 
 | |
|   enum ResponseType {
 | |
|     // Server will return a single ReadResponse message with matched series that includes list of raw samples.
 | |
|     // It's recommended to use streamed response types instead.
 | |
|     //
 | |
|     // Response headers:
 | |
|     // Content-Type: "application/x-protobuf"
 | |
|     // Content-Encoding: "snappy"
 | |
|     SAMPLES = 0;
 | |
|     // Server will stream a delimited ChunkedReadResponse message that
 | |
|     // contains XOR or HISTOGRAM(!) encoded chunks for a single series.
 | |
|     // Each message is following varint size and fixed size bigendian
 | |
|     // uint32 for CRC32 Castagnoli checksum.
 | |
|     //
 | |
|     // Response headers:
 | |
|     // Content-Type: "application/x-streamed-protobuf; proto=prometheus.ChunkedReadResponse"
 | |
|     // Content-Encoding: ""
 | |
|     STREAMED_XOR_CHUNKS = 1;
 | |
|   }
 | |
| 
 | |
|   // accepted_response_types allows negotiating the content type of the response.
 | |
|   //
 | |
|   // Response types are taken from the list in the FIFO order. If no response type in `accepted_response_types` is
 | |
|   // implemented by server, error is returned.
 | |
|   // For request that do not contain `accepted_response_types` field the SAMPLES response type will be used.
 | |
|   repeated ResponseType accepted_response_types = 2;
 | |
| }
 | |
| 
 | |
| // ReadResponse is a response when response_type equals SAMPLES.
 | |
| message ReadResponse {
 | |
|   // In same order as the request's queries.
 | |
|   repeated QueryResult results = 1;
 | |
| }
 | |
| 
 | |
| message Query {
 | |
|   int64 start_timestamp_ms = 1;
 | |
|   int64 end_timestamp_ms = 2;
 | |
|   repeated prometheus.LabelMatcher matchers = 3;
 | |
|   prometheus.ReadHints hints = 4;
 | |
| }
 | |
| 
 | |
| message QueryResult {
 | |
|   // Samples within a time series must be ordered by time.
 | |
|   repeated prometheus.TimeSeries timeseries = 1;
 | |
| }
 | |
| 
 | |
| // ChunkedReadResponse is a response when response_type equals STREAMED_XOR_CHUNKS.
 | |
| // We strictly stream full series after series, optionally split by time. This means that a single frame can contain
 | |
| // partition of the single series, but once a new series is started to be streamed it means that no more chunks will
 | |
| // be sent for previous one. Series are returned sorted in the same way TSDB block are internally.
 | |
| message ChunkedReadResponse {
 | |
|   repeated prometheus.ChunkedSeries chunked_series = 1;
 | |
| 
 | |
|   // query_index represents an index of the query from ReadRequest.queries these chunks relates to.
 | |
|   int64 query_index = 2;
 | |
| }
 |