Merge pull request #3329 from efuss/fix-3311
[collectd.git] / proto / prometheus.proto
1 // Copyright 2013 Prometheus Team
2 // Licensed under the Apache License, Version 2.0 (the "License");
3 // you may not use this file except in compliance with the License.
4 // You may obtain a copy of the License at
5 //
6 // http://www.apache.org/licenses/LICENSE-2.0
7 //
8 // Unless required by applicable law or agreed to in writing, software
9 // distributed under the License is distributed on an "AS IS" BASIS,
10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 // See the License for the specific language governing permissions and
12 // limitations under the License.
13
14 syntax = "proto2";
15
16 package io.prometheus.client;
17 option java_package = "io.prometheus.client";
18
19 message LabelPair {
20   optional string name = 1;
21   optional string value = 2;
22 }
23
24 enum MetricType {
25   COUNTER = 0; GAUGE = 1; SUMMARY = 2; UNTYPED = 3; HISTOGRAM = 4;
26 }
27
28 message Gauge { optional double value = 1; }
29
30 message Counter { optional double value = 1; }
31
32 message Quantile {
33   optional double quantile = 1;
34   optional double value = 2;
35 }
36
37 message Summary {
38   optional uint64 sample_count = 1;
39   optional double sample_sum = 2;
40   repeated Quantile quantile = 3;
41 }
42
43 message Untyped { optional double value = 1; }
44
45 message Histogram {
46   optional uint64 sample_count = 1;
47   optional double sample_sum = 2;
48   repeated Bucket bucket =
49       3; // Ordered in increasing order of upper_bound, +Inf bucket is optional.
50 }
51
52 message Bucket {
53   optional uint64 cumulative_count = 1; // Cumulative in increasing order.
54   optional double upper_bound = 2;      // Inclusive.
55 }
56
57 message Metric {
58   repeated LabelPair label = 1;
59   optional Gauge gauge = 2;
60   optional Counter counter = 3;
61   optional Summary summary = 4;
62   optional Untyped untyped = 5;
63   optional Histogram histogram = 7;
64   optional int64 timestamp_ms = 6;
65 }
66
67 message MetricFamily {
68   optional string name = 1;
69   optional string help = 2;
70   optional MetricType type = 3;
71   repeated Metric metric = 4;
72 }