Merge pull request #53 from prometheus/beorn7/benchmark
Add benchmarks to compare text and protobuf parsing.
This commit is contained in:
commit
80ad13d35e
File diff suppressed because it is too large
Load Diff
|
@ -14,7 +14,9 @@
|
||||||
package extraction
|
package extraction
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
@ -200,3 +202,25 @@ func BenchmarkProcessor002Process(b *testing.B) {
|
||||||
|
|
||||||
b.Logf("Allocated %d at %f per cycle with %d cycles.", allocated, float64(allocated)/float64(b.N), b.N)
|
b.Logf("Allocated %d at %f per cycle with %d cycles.", allocated, float64(allocated)/float64(b.N), b.N)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func BenchmarkProcessor002ParseOnly(b *testing.B) {
|
||||||
|
b.StopTimer()
|
||||||
|
data, err := ioutil.ReadFile("fixtures/test0_0_1-0_0_2-large.json")
|
||||||
|
if err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
ing := fakeIngester{}
|
||||||
|
b.StartTimer()
|
||||||
|
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
if err := Processor002.ProcessSingle(bytes.NewReader(data), ing, &ProcessOptions{}); err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type fakeIngester struct{}
|
||||||
|
|
||||||
|
func (i fakeIngester) Ingest(model.Samples) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,168 @@
|
||||||
|
// Copyright 2015 The Prometheus Authors
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
package text
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"compress/gzip"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"testing"
|
||||||
|
dto "github.com/prometheus/client_model/go"
|
||||||
|
|
||||||
|
"github.com/matttproud/golang_protobuf_extensions/ext"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Benchmarks to show how much penalty text format parsing actually inflicts.
|
||||||
|
//
|
||||||
|
// Example results on Linux 3.13.0, Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz, go1.4.
|
||||||
|
//
|
||||||
|
// BenchmarkParseText 1000 1188535 ns/op 205085 B/op 6135 allocs/op
|
||||||
|
// BenchmarkParseTextGzip 1000 1376567 ns/op 246224 B/op 6151 allocs/op
|
||||||
|
// BenchmarkParseProto 10000 172790 ns/op 52258 B/op 1160 allocs/op
|
||||||
|
// BenchmarkParseProtoGzip 5000 324021 ns/op 94931 B/op 1211 allocs/op
|
||||||
|
// BenchmarkParseProtoMap 10000 187946 ns/op 58714 B/op 1203 allocs/op
|
||||||
|
//
|
||||||
|
// CONCLUSION: The overhead for the map is negligible. Text format needs ~5x more allocations.
|
||||||
|
// Without compression, it needs ~7x longer, but with compression (the more relevant scenario),
|
||||||
|
// the difference becomes less relevant, only ~4x.
|
||||||
|
//
|
||||||
|
// The test data contains 248 samples.
|
||||||
|
//
|
||||||
|
// BenchmarkProcessor002ParseOnly in the extraction package is not quite
|
||||||
|
// comparable to the benchmarks here, but it gives an idea: JSON parsing is even
|
||||||
|
// slower than text parsing and needs a comparable amount of allocs.
|
||||||
|
|
||||||
|
// BenchmarkParseText benchmarks the parsing of a text-format scrape into metric
|
||||||
|
// family DTOs.
|
||||||
|
func BenchmarkParseText(b *testing.B) {
|
||||||
|
b.StopTimer()
|
||||||
|
data, err := ioutil.ReadFile("testdata/text")
|
||||||
|
if err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
b.StartTimer()
|
||||||
|
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
if _, err := parser.TextToMetricFamilies(bytes.NewReader(data)); err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// BenchmarkParseTextGzip benchmarks the parsing of a gzipped text-format scrape
|
||||||
|
// into metric family DTOs.
|
||||||
|
func BenchmarkParseTextGzip(b *testing.B) {
|
||||||
|
b.StopTimer()
|
||||||
|
data, err := ioutil.ReadFile("testdata/text.gz")
|
||||||
|
if err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
b.StartTimer()
|
||||||
|
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
in, err := gzip.NewReader(bytes.NewReader(data))
|
||||||
|
if err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
if _, err := parser.TextToMetricFamilies(in); err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// BenchmarkParseProto benchmarks the parsing of a protobuf-format scrape into
|
||||||
|
// metric family DTOs. Note that this does not build a map of metric families
|
||||||
|
// (as the text version does), because it is not required for Prometheus
|
||||||
|
// ingestion either. (However, it is required for the text-format parsing, as
|
||||||
|
// the metric family might be sprinkled all over the text, while the
|
||||||
|
// protobuf-format guarantees bundling at one place.)
|
||||||
|
func BenchmarkParseProto(b *testing.B) {
|
||||||
|
b.StopTimer()
|
||||||
|
data, err := ioutil.ReadFile("testdata/protobuf")
|
||||||
|
if err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
b.StartTimer()
|
||||||
|
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
family := &dto.MetricFamily{}
|
||||||
|
in := bytes.NewReader(data)
|
||||||
|
for {
|
||||||
|
family.Reset()
|
||||||
|
if _, err := ext.ReadDelimited(in, family); err != nil {
|
||||||
|
if err == io.EOF {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// BenchmarkParseProtoGzip is like BenchmarkParseProto above, but parses gzipped
|
||||||
|
// protobuf format.
|
||||||
|
func BenchmarkParseProtoGzip(b *testing.B) {
|
||||||
|
b.StopTimer()
|
||||||
|
data, err := ioutil.ReadFile("testdata/protobuf.gz")
|
||||||
|
if err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
b.StartTimer()
|
||||||
|
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
family := &dto.MetricFamily{}
|
||||||
|
in, err := gzip.NewReader(bytes.NewReader(data))
|
||||||
|
if err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
family.Reset()
|
||||||
|
if _, err := ext.ReadDelimited(in, family); err != nil {
|
||||||
|
if err == io.EOF {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// BenchmarkParseProtoMap is like BenchmarkParseProto but DOES put the parsed
|
||||||
|
// metric family DTOs into a map. This is not happening during Prometheus
|
||||||
|
// ingestion. It is just here to measure the overhead of that map creation and
|
||||||
|
// separate it from the overhead of the text format parsing.
|
||||||
|
func BenchmarkParseProtoMap(b *testing.B) {
|
||||||
|
b.StopTimer()
|
||||||
|
data, err := ioutil.ReadFile("testdata/protobuf")
|
||||||
|
if err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
b.StartTimer()
|
||||||
|
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
families := map[string]*dto.MetricFamily{}
|
||||||
|
in := bytes.NewReader(data)
|
||||||
|
for {
|
||||||
|
family := &dto.MetricFamily{}
|
||||||
|
if _, err := ext.ReadDelimited(in, family); err != nil {
|
||||||
|
if err == io.EOF {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
families[family.GetName()] = family
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,322 @@
|
||||||
|
# HELP http_request_duration_microseconds The HTTP request latencies in microseconds.
|
||||||
|
# TYPE http_request_duration_microseconds summary
|
||||||
|
http_request_duration_microseconds{handler="/",quantile="0.5"} 0
|
||||||
|
http_request_duration_microseconds{handler="/",quantile="0.9"} 0
|
||||||
|
http_request_duration_microseconds{handler="/",quantile="0.99"} 0
|
||||||
|
http_request_duration_microseconds_sum{handler="/"} 0
|
||||||
|
http_request_duration_microseconds_count{handler="/"} 0
|
||||||
|
http_request_duration_microseconds{handler="/alerts",quantile="0.5"} 0
|
||||||
|
http_request_duration_microseconds{handler="/alerts",quantile="0.9"} 0
|
||||||
|
http_request_duration_microseconds{handler="/alerts",quantile="0.99"} 0
|
||||||
|
http_request_duration_microseconds_sum{handler="/alerts"} 0
|
||||||
|
http_request_duration_microseconds_count{handler="/alerts"} 0
|
||||||
|
http_request_duration_microseconds{handler="/api/metrics",quantile="0.5"} 0
|
||||||
|
http_request_duration_microseconds{handler="/api/metrics",quantile="0.9"} 0
|
||||||
|
http_request_duration_microseconds{handler="/api/metrics",quantile="0.99"} 0
|
||||||
|
http_request_duration_microseconds_sum{handler="/api/metrics"} 0
|
||||||
|
http_request_duration_microseconds_count{handler="/api/metrics"} 0
|
||||||
|
http_request_duration_microseconds{handler="/api/query",quantile="0.5"} 0
|
||||||
|
http_request_duration_microseconds{handler="/api/query",quantile="0.9"} 0
|
||||||
|
http_request_duration_microseconds{handler="/api/query",quantile="0.99"} 0
|
||||||
|
http_request_duration_microseconds_sum{handler="/api/query"} 0
|
||||||
|
http_request_duration_microseconds_count{handler="/api/query"} 0
|
||||||
|
http_request_duration_microseconds{handler="/api/query_range",quantile="0.5"} 0
|
||||||
|
http_request_duration_microseconds{handler="/api/query_range",quantile="0.9"} 0
|
||||||
|
http_request_duration_microseconds{handler="/api/query_range",quantile="0.99"} 0
|
||||||
|
http_request_duration_microseconds_sum{handler="/api/query_range"} 0
|
||||||
|
http_request_duration_microseconds_count{handler="/api/query_range"} 0
|
||||||
|
http_request_duration_microseconds{handler="/api/targets",quantile="0.5"} 0
|
||||||
|
http_request_duration_microseconds{handler="/api/targets",quantile="0.9"} 0
|
||||||
|
http_request_duration_microseconds{handler="/api/targets",quantile="0.99"} 0
|
||||||
|
http_request_duration_microseconds_sum{handler="/api/targets"} 0
|
||||||
|
http_request_duration_microseconds_count{handler="/api/targets"} 0
|
||||||
|
http_request_duration_microseconds{handler="/consoles/",quantile="0.5"} 0
|
||||||
|
http_request_duration_microseconds{handler="/consoles/",quantile="0.9"} 0
|
||||||
|
http_request_duration_microseconds{handler="/consoles/",quantile="0.99"} 0
|
||||||
|
http_request_duration_microseconds_sum{handler="/consoles/"} 0
|
||||||
|
http_request_duration_microseconds_count{handler="/consoles/"} 0
|
||||||
|
http_request_duration_microseconds{handler="/graph",quantile="0.5"} 0
|
||||||
|
http_request_duration_microseconds{handler="/graph",quantile="0.9"} 0
|
||||||
|
http_request_duration_microseconds{handler="/graph",quantile="0.99"} 0
|
||||||
|
http_request_duration_microseconds_sum{handler="/graph"} 0
|
||||||
|
http_request_duration_microseconds_count{handler="/graph"} 0
|
||||||
|
http_request_duration_microseconds{handler="/heap",quantile="0.5"} 0
|
||||||
|
http_request_duration_microseconds{handler="/heap",quantile="0.9"} 0
|
||||||
|
http_request_duration_microseconds{handler="/heap",quantile="0.99"} 0
|
||||||
|
http_request_duration_microseconds_sum{handler="/heap"} 0
|
||||||
|
http_request_duration_microseconds_count{handler="/heap"} 0
|
||||||
|
http_request_duration_microseconds{handler="/static/",quantile="0.5"} 0
|
||||||
|
http_request_duration_microseconds{handler="/static/",quantile="0.9"} 0
|
||||||
|
http_request_duration_microseconds{handler="/static/",quantile="0.99"} 0
|
||||||
|
http_request_duration_microseconds_sum{handler="/static/"} 0
|
||||||
|
http_request_duration_microseconds_count{handler="/static/"} 0
|
||||||
|
http_request_duration_microseconds{handler="prometheus",quantile="0.5"} 1307.275
|
||||||
|
http_request_duration_microseconds{handler="prometheus",quantile="0.9"} 1858.632
|
||||||
|
http_request_duration_microseconds{handler="prometheus",quantile="0.99"} 3087.384
|
||||||
|
http_request_duration_microseconds_sum{handler="prometheus"} 179886.5000000001
|
||||||
|
http_request_duration_microseconds_count{handler="prometheus"} 119
|
||||||
|
# HELP http_request_size_bytes The HTTP request sizes in bytes.
|
||||||
|
# TYPE http_request_size_bytes summary
|
||||||
|
http_request_size_bytes{handler="/",quantile="0.5"} 0
|
||||||
|
http_request_size_bytes{handler="/",quantile="0.9"} 0
|
||||||
|
http_request_size_bytes{handler="/",quantile="0.99"} 0
|
||||||
|
http_request_size_bytes_sum{handler="/"} 0
|
||||||
|
http_request_size_bytes_count{handler="/"} 0
|
||||||
|
http_request_size_bytes{handler="/alerts",quantile="0.5"} 0
|
||||||
|
http_request_size_bytes{handler="/alerts",quantile="0.9"} 0
|
||||||
|
http_request_size_bytes{handler="/alerts",quantile="0.99"} 0
|
||||||
|
http_request_size_bytes_sum{handler="/alerts"} 0
|
||||||
|
http_request_size_bytes_count{handler="/alerts"} 0
|
||||||
|
http_request_size_bytes{handler="/api/metrics",quantile="0.5"} 0
|
||||||
|
http_request_size_bytes{handler="/api/metrics",quantile="0.9"} 0
|
||||||
|
http_request_size_bytes{handler="/api/metrics",quantile="0.99"} 0
|
||||||
|
http_request_size_bytes_sum{handler="/api/metrics"} 0
|
||||||
|
http_request_size_bytes_count{handler="/api/metrics"} 0
|
||||||
|
http_request_size_bytes{handler="/api/query",quantile="0.5"} 0
|
||||||
|
http_request_size_bytes{handler="/api/query",quantile="0.9"} 0
|
||||||
|
http_request_size_bytes{handler="/api/query",quantile="0.99"} 0
|
||||||
|
http_request_size_bytes_sum{handler="/api/query"} 0
|
||||||
|
http_request_size_bytes_count{handler="/api/query"} 0
|
||||||
|
http_request_size_bytes{handler="/api/query_range",quantile="0.5"} 0
|
||||||
|
http_request_size_bytes{handler="/api/query_range",quantile="0.9"} 0
|
||||||
|
http_request_size_bytes{handler="/api/query_range",quantile="0.99"} 0
|
||||||
|
http_request_size_bytes_sum{handler="/api/query_range"} 0
|
||||||
|
http_request_size_bytes_count{handler="/api/query_range"} 0
|
||||||
|
http_request_size_bytes{handler="/api/targets",quantile="0.5"} 0
|
||||||
|
http_request_size_bytes{handler="/api/targets",quantile="0.9"} 0
|
||||||
|
http_request_size_bytes{handler="/api/targets",quantile="0.99"} 0
|
||||||
|
http_request_size_bytes_sum{handler="/api/targets"} 0
|
||||||
|
http_request_size_bytes_count{handler="/api/targets"} 0
|
||||||
|
http_request_size_bytes{handler="/consoles/",quantile="0.5"} 0
|
||||||
|
http_request_size_bytes{handler="/consoles/",quantile="0.9"} 0
|
||||||
|
http_request_size_bytes{handler="/consoles/",quantile="0.99"} 0
|
||||||
|
http_request_size_bytes_sum{handler="/consoles/"} 0
|
||||||
|
http_request_size_bytes_count{handler="/consoles/"} 0
|
||||||
|
http_request_size_bytes{handler="/graph",quantile="0.5"} 0
|
||||||
|
http_request_size_bytes{handler="/graph",quantile="0.9"} 0
|
||||||
|
http_request_size_bytes{handler="/graph",quantile="0.99"} 0
|
||||||
|
http_request_size_bytes_sum{handler="/graph"} 0
|
||||||
|
http_request_size_bytes_count{handler="/graph"} 0
|
||||||
|
http_request_size_bytes{handler="/heap",quantile="0.5"} 0
|
||||||
|
http_request_size_bytes{handler="/heap",quantile="0.9"} 0
|
||||||
|
http_request_size_bytes{handler="/heap",quantile="0.99"} 0
|
||||||
|
http_request_size_bytes_sum{handler="/heap"} 0
|
||||||
|
http_request_size_bytes_count{handler="/heap"} 0
|
||||||
|
http_request_size_bytes{handler="/static/",quantile="0.5"} 0
|
||||||
|
http_request_size_bytes{handler="/static/",quantile="0.9"} 0
|
||||||
|
http_request_size_bytes{handler="/static/",quantile="0.99"} 0
|
||||||
|
http_request_size_bytes_sum{handler="/static/"} 0
|
||||||
|
http_request_size_bytes_count{handler="/static/"} 0
|
||||||
|
http_request_size_bytes{handler="prometheus",quantile="0.5"} 291
|
||||||
|
http_request_size_bytes{handler="prometheus",quantile="0.9"} 291
|
||||||
|
http_request_size_bytes{handler="prometheus",quantile="0.99"} 291
|
||||||
|
http_request_size_bytes_sum{handler="prometheus"} 34488
|
||||||
|
http_request_size_bytes_count{handler="prometheus"} 119
|
||||||
|
# HELP http_requests_total Total number of HTTP requests made.
|
||||||
|
# TYPE http_requests_total counter
|
||||||
|
http_requests_total{code="200",handler="prometheus",method="get"} 119
|
||||||
|
# HELP http_response_size_bytes The HTTP response sizes in bytes.
|
||||||
|
# TYPE http_response_size_bytes summary
|
||||||
|
http_response_size_bytes{handler="/",quantile="0.5"} 0
|
||||||
|
http_response_size_bytes{handler="/",quantile="0.9"} 0
|
||||||
|
http_response_size_bytes{handler="/",quantile="0.99"} 0
|
||||||
|
http_response_size_bytes_sum{handler="/"} 0
|
||||||
|
http_response_size_bytes_count{handler="/"} 0
|
||||||
|
http_response_size_bytes{handler="/alerts",quantile="0.5"} 0
|
||||||
|
http_response_size_bytes{handler="/alerts",quantile="0.9"} 0
|
||||||
|
http_response_size_bytes{handler="/alerts",quantile="0.99"} 0
|
||||||
|
http_response_size_bytes_sum{handler="/alerts"} 0
|
||||||
|
http_response_size_bytes_count{handler="/alerts"} 0
|
||||||
|
http_response_size_bytes{handler="/api/metrics",quantile="0.5"} 0
|
||||||
|
http_response_size_bytes{handler="/api/metrics",quantile="0.9"} 0
|
||||||
|
http_response_size_bytes{handler="/api/metrics",quantile="0.99"} 0
|
||||||
|
http_response_size_bytes_sum{handler="/api/metrics"} 0
|
||||||
|
http_response_size_bytes_count{handler="/api/metrics"} 0
|
||||||
|
http_response_size_bytes{handler="/api/query",quantile="0.5"} 0
|
||||||
|
http_response_size_bytes{handler="/api/query",quantile="0.9"} 0
|
||||||
|
http_response_size_bytes{handler="/api/query",quantile="0.99"} 0
|
||||||
|
http_response_size_bytes_sum{handler="/api/query"} 0
|
||||||
|
http_response_size_bytes_count{handler="/api/query"} 0
|
||||||
|
http_response_size_bytes{handler="/api/query_range",quantile="0.5"} 0
|
||||||
|
http_response_size_bytes{handler="/api/query_range",quantile="0.9"} 0
|
||||||
|
http_response_size_bytes{handler="/api/query_range",quantile="0.99"} 0
|
||||||
|
http_response_size_bytes_sum{handler="/api/query_range"} 0
|
||||||
|
http_response_size_bytes_count{handler="/api/query_range"} 0
|
||||||
|
http_response_size_bytes{handler="/api/targets",quantile="0.5"} 0
|
||||||
|
http_response_size_bytes{handler="/api/targets",quantile="0.9"} 0
|
||||||
|
http_response_size_bytes{handler="/api/targets",quantile="0.99"} 0
|
||||||
|
http_response_size_bytes_sum{handler="/api/targets"} 0
|
||||||
|
http_response_size_bytes_count{handler="/api/targets"} 0
|
||||||
|
http_response_size_bytes{handler="/consoles/",quantile="0.5"} 0
|
||||||
|
http_response_size_bytes{handler="/consoles/",quantile="0.9"} 0
|
||||||
|
http_response_size_bytes{handler="/consoles/",quantile="0.99"} 0
|
||||||
|
http_response_size_bytes_sum{handler="/consoles/"} 0
|
||||||
|
http_response_size_bytes_count{handler="/consoles/"} 0
|
||||||
|
http_response_size_bytes{handler="/graph",quantile="0.5"} 0
|
||||||
|
http_response_size_bytes{handler="/graph",quantile="0.9"} 0
|
||||||
|
http_response_size_bytes{handler="/graph",quantile="0.99"} 0
|
||||||
|
http_response_size_bytes_sum{handler="/graph"} 0
|
||||||
|
http_response_size_bytes_count{handler="/graph"} 0
|
||||||
|
http_response_size_bytes{handler="/heap",quantile="0.5"} 0
|
||||||
|
http_response_size_bytes{handler="/heap",quantile="0.9"} 0
|
||||||
|
http_response_size_bytes{handler="/heap",quantile="0.99"} 0
|
||||||
|
http_response_size_bytes_sum{handler="/heap"} 0
|
||||||
|
http_response_size_bytes_count{handler="/heap"} 0
|
||||||
|
http_response_size_bytes{handler="/static/",quantile="0.5"} 0
|
||||||
|
http_response_size_bytes{handler="/static/",quantile="0.9"} 0
|
||||||
|
http_response_size_bytes{handler="/static/",quantile="0.99"} 0
|
||||||
|
http_response_size_bytes_sum{handler="/static/"} 0
|
||||||
|
http_response_size_bytes_count{handler="/static/"} 0
|
||||||
|
http_response_size_bytes{handler="prometheus",quantile="0.5"} 2049
|
||||||
|
http_response_size_bytes{handler="prometheus",quantile="0.9"} 2058
|
||||||
|
http_response_size_bytes{handler="prometheus",quantile="0.99"} 2064
|
||||||
|
http_response_size_bytes_sum{handler="prometheus"} 247001
|
||||||
|
http_response_size_bytes_count{handler="prometheus"} 119
|
||||||
|
# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
|
||||||
|
# TYPE process_cpu_seconds_total counter
|
||||||
|
process_cpu_seconds_total 0.55
|
||||||
|
# HELP process_goroutines Number of goroutines that currently exist.
|
||||||
|
# TYPE process_goroutines gauge
|
||||||
|
process_goroutines 70
|
||||||
|
# HELP process_max_fds Maximum number of open file descriptors.
|
||||||
|
# TYPE process_max_fds gauge
|
||||||
|
process_max_fds 8192
|
||||||
|
# HELP process_open_fds Number of open file descriptors.
|
||||||
|
# TYPE process_open_fds gauge
|
||||||
|
process_open_fds 29
|
||||||
|
# HELP process_resident_memory_bytes Resident memory size in bytes.
|
||||||
|
# TYPE process_resident_memory_bytes gauge
|
||||||
|
process_resident_memory_bytes 5.3870592e+07
|
||||||
|
# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
|
||||||
|
# TYPE process_start_time_seconds gauge
|
||||||
|
process_start_time_seconds 1.42236894836e+09
|
||||||
|
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
|
||||||
|
# TYPE process_virtual_memory_bytes gauge
|
||||||
|
process_virtual_memory_bytes 5.41478912e+08
|
||||||
|
# HELP prometheus_dns_sd_lookup_failures_total The number of DNS-SD lookup failures.
|
||||||
|
# TYPE prometheus_dns_sd_lookup_failures_total counter
|
||||||
|
prometheus_dns_sd_lookup_failures_total 0
|
||||||
|
# HELP prometheus_dns_sd_lookups_total The number of DNS-SD lookups.
|
||||||
|
# TYPE prometheus_dns_sd_lookups_total counter
|
||||||
|
prometheus_dns_sd_lookups_total 7
|
||||||
|
# HELP prometheus_evaluator_duration_milliseconds The duration for all evaluations to execute.
|
||||||
|
# TYPE prometheus_evaluator_duration_milliseconds summary
|
||||||
|
prometheus_evaluator_duration_milliseconds{quantile="0.01"} 0
|
||||||
|
prometheus_evaluator_duration_milliseconds{quantile="0.05"} 0
|
||||||
|
prometheus_evaluator_duration_milliseconds{quantile="0.5"} 0
|
||||||
|
prometheus_evaluator_duration_milliseconds{quantile="0.9"} 1
|
||||||
|
prometheus_evaluator_duration_milliseconds{quantile="0.99"} 1
|
||||||
|
prometheus_evaluator_duration_milliseconds_sum 12
|
||||||
|
prometheus_evaluator_duration_milliseconds_count 23
|
||||||
|
# HELP prometheus_local_storage_checkpoint_duration_milliseconds The duration (in milliseconds) it took to checkpoint in-memory metrics and head chunks.
|
||||||
|
# TYPE prometheus_local_storage_checkpoint_duration_milliseconds gauge
|
||||||
|
prometheus_local_storage_checkpoint_duration_milliseconds 0
|
||||||
|
# HELP prometheus_local_storage_chunk_ops_total The total number of chunk operations by their type.
|
||||||
|
# TYPE prometheus_local_storage_chunk_ops_total counter
|
||||||
|
prometheus_local_storage_chunk_ops_total{type="create"} 598
|
||||||
|
prometheus_local_storage_chunk_ops_total{type="persist"} 174
|
||||||
|
prometheus_local_storage_chunk_ops_total{type="pin"} 920
|
||||||
|
prometheus_local_storage_chunk_ops_total{type="transcode"} 415
|
||||||
|
prometheus_local_storage_chunk_ops_total{type="unpin"} 920
|
||||||
|
# HELP prometheus_local_storage_indexing_batch_latency_milliseconds Quantiles for batch indexing latencies in milliseconds.
|
||||||
|
# TYPE prometheus_local_storage_indexing_batch_latency_milliseconds summary
|
||||||
|
prometheus_local_storage_indexing_batch_latency_milliseconds{quantile="0.5"} 0
|
||||||
|
prometheus_local_storage_indexing_batch_latency_milliseconds{quantile="0.9"} 0
|
||||||
|
prometheus_local_storage_indexing_batch_latency_milliseconds{quantile="0.99"} 0
|
||||||
|
prometheus_local_storage_indexing_batch_latency_milliseconds_sum 0
|
||||||
|
prometheus_local_storage_indexing_batch_latency_milliseconds_count 1
|
||||||
|
# HELP prometheus_local_storage_indexing_batch_sizes Quantiles for indexing batch sizes (number of metrics per batch).
|
||||||
|
# TYPE prometheus_local_storage_indexing_batch_sizes summary
|
||||||
|
prometheus_local_storage_indexing_batch_sizes{quantile="0.5"} 2
|
||||||
|
prometheus_local_storage_indexing_batch_sizes{quantile="0.9"} 2
|
||||||
|
prometheus_local_storage_indexing_batch_sizes{quantile="0.99"} 2
|
||||||
|
prometheus_local_storage_indexing_batch_sizes_sum 2
|
||||||
|
prometheus_local_storage_indexing_batch_sizes_count 1
|
||||||
|
# HELP prometheus_local_storage_indexing_queue_capacity The capacity of the indexing queue.
|
||||||
|
# TYPE prometheus_local_storage_indexing_queue_capacity gauge
|
||||||
|
prometheus_local_storage_indexing_queue_capacity 16384
|
||||||
|
# HELP prometheus_local_storage_indexing_queue_length The number of metrics waiting to be indexed.
|
||||||
|
# TYPE prometheus_local_storage_indexing_queue_length gauge
|
||||||
|
prometheus_local_storage_indexing_queue_length 0
|
||||||
|
# HELP prometheus_local_storage_ingested_samples_total The total number of samples ingested.
|
||||||
|
# TYPE prometheus_local_storage_ingested_samples_total counter
|
||||||
|
prometheus_local_storage_ingested_samples_total 30473
|
||||||
|
# HELP prometheus_local_storage_invalid_preload_requests_total The total number of preload requests referring to a non-existent series. This is an indication of outdated label indexes.
|
||||||
|
# TYPE prometheus_local_storage_invalid_preload_requests_total counter
|
||||||
|
prometheus_local_storage_invalid_preload_requests_total 0
|
||||||
|
# HELP prometheus_local_storage_memory_chunkdescs The current number of chunk descriptors in memory.
|
||||||
|
# TYPE prometheus_local_storage_memory_chunkdescs gauge
|
||||||
|
prometheus_local_storage_memory_chunkdescs 1059
|
||||||
|
# HELP prometheus_local_storage_memory_chunks The current number of chunks in memory, excluding cloned chunks (i.e. chunks without a descriptor).
|
||||||
|
# TYPE prometheus_local_storage_memory_chunks gauge
|
||||||
|
prometheus_local_storage_memory_chunks 1020
|
||||||
|
# HELP prometheus_local_storage_memory_series The current number of series in memory.
|
||||||
|
# TYPE prometheus_local_storage_memory_series gauge
|
||||||
|
prometheus_local_storage_memory_series 424
|
||||||
|
# HELP prometheus_local_storage_persist_latency_microseconds A summary of latencies for persisting each chunk.
|
||||||
|
# TYPE prometheus_local_storage_persist_latency_microseconds summary
|
||||||
|
prometheus_local_storage_persist_latency_microseconds{quantile="0.5"} 30.377
|
||||||
|
prometheus_local_storage_persist_latency_microseconds{quantile="0.9"} 203.539
|
||||||
|
prometheus_local_storage_persist_latency_microseconds{quantile="0.99"} 2626.463
|
||||||
|
prometheus_local_storage_persist_latency_microseconds_sum 20424.415
|
||||||
|
prometheus_local_storage_persist_latency_microseconds_count 174
|
||||||
|
# HELP prometheus_local_storage_persist_queue_capacity The total capacity of the persist queue.
|
||||||
|
# TYPE prometheus_local_storage_persist_queue_capacity gauge
|
||||||
|
prometheus_local_storage_persist_queue_capacity 1024
|
||||||
|
# HELP prometheus_local_storage_persist_queue_length The current number of chunks waiting in the persist queue.
|
||||||
|
# TYPE prometheus_local_storage_persist_queue_length gauge
|
||||||
|
prometheus_local_storage_persist_queue_length 0
|
||||||
|
# HELP prometheus_local_storage_series_ops_total The total number of series operations by their type.
|
||||||
|
# TYPE prometheus_local_storage_series_ops_total counter
|
||||||
|
prometheus_local_storage_series_ops_total{type="create"} 2
|
||||||
|
prometheus_local_storage_series_ops_total{type="maintenance_in_memory"} 11
|
||||||
|
# HELP prometheus_notifications_latency_milliseconds Latency quantiles for sending alert notifications (not including dropped notifications).
|
||||||
|
# TYPE prometheus_notifications_latency_milliseconds summary
|
||||||
|
prometheus_notifications_latency_milliseconds{quantile="0.5"} 0
|
||||||
|
prometheus_notifications_latency_milliseconds{quantile="0.9"} 0
|
||||||
|
prometheus_notifications_latency_milliseconds{quantile="0.99"} 0
|
||||||
|
prometheus_notifications_latency_milliseconds_sum 0
|
||||||
|
prometheus_notifications_latency_milliseconds_count 0
|
||||||
|
# HELP prometheus_notifications_queue_capacity The capacity of the alert notifications queue.
|
||||||
|
# TYPE prometheus_notifications_queue_capacity gauge
|
||||||
|
prometheus_notifications_queue_capacity 100
|
||||||
|
# HELP prometheus_notifications_queue_length The number of alert notifications in the queue.
|
||||||
|
# TYPE prometheus_notifications_queue_length gauge
|
||||||
|
prometheus_notifications_queue_length 0
|
||||||
|
# HELP prometheus_rule_evaluation_duration_milliseconds The duration for a rule to execute.
|
||||||
|
# TYPE prometheus_rule_evaluation_duration_milliseconds summary
|
||||||
|
prometheus_rule_evaluation_duration_milliseconds{rule_type="alerting",quantile="0.5"} 0
|
||||||
|
prometheus_rule_evaluation_duration_milliseconds{rule_type="alerting",quantile="0.9"} 0
|
||||||
|
prometheus_rule_evaluation_duration_milliseconds{rule_type="alerting",quantile="0.99"} 2
|
||||||
|
prometheus_rule_evaluation_duration_milliseconds_sum{rule_type="alerting"} 12
|
||||||
|
prometheus_rule_evaluation_duration_milliseconds_count{rule_type="alerting"} 115
|
||||||
|
prometheus_rule_evaluation_duration_milliseconds{rule_type="recording",quantile="0.5"} 0
|
||||||
|
prometheus_rule_evaluation_duration_milliseconds{rule_type="recording",quantile="0.9"} 0
|
||||||
|
prometheus_rule_evaluation_duration_milliseconds{rule_type="recording",quantile="0.99"} 3
|
||||||
|
prometheus_rule_evaluation_duration_milliseconds_sum{rule_type="recording"} 15
|
||||||
|
prometheus_rule_evaluation_duration_milliseconds_count{rule_type="recording"} 115
|
||||||
|
# HELP prometheus_rule_evaluation_failures_total The total number of rule evaluation failures.
|
||||||
|
# TYPE prometheus_rule_evaluation_failures_total counter
|
||||||
|
prometheus_rule_evaluation_failures_total 0
|
||||||
|
# HELP prometheus_samples_queue_capacity Capacity of the queue for unwritten samples.
|
||||||
|
# TYPE prometheus_samples_queue_capacity gauge
|
||||||
|
prometheus_samples_queue_capacity 4096
|
||||||
|
# HELP prometheus_samples_queue_length Current number of items in the queue for unwritten samples. Each item comprises all samples exposed by one target as one metric family (i.e. metrics of the same name).
|
||||||
|
# TYPE prometheus_samples_queue_length gauge
|
||||||
|
prometheus_samples_queue_length 0
|
||||||
|
# HELP prometheus_target_interval_length_seconds Actual intervals between scrapes.
|
||||||
|
# TYPE prometheus_target_interval_length_seconds summary
|
||||||
|
prometheus_target_interval_length_seconds{interval="15s",quantile="0.01"} 14
|
||||||
|
prometheus_target_interval_length_seconds{interval="15s",quantile="0.05"} 14
|
||||||
|
prometheus_target_interval_length_seconds{interval="15s",quantile="0.5"} 15
|
||||||
|
prometheus_target_interval_length_seconds{interval="15s",quantile="0.9"} 15
|
||||||
|
prometheus_target_interval_length_seconds{interval="15s",quantile="0.99"} 15
|
||||||
|
prometheus_target_interval_length_seconds_sum{interval="15s"} 175
|
||||||
|
prometheus_target_interval_length_seconds_count{interval="15s"} 12
|
||||||
|
prometheus_target_interval_length_seconds{interval="1s",quantile="0.01"} 0
|
||||||
|
prometheus_target_interval_length_seconds{interval="1s",quantile="0.05"} 0
|
||||||
|
prometheus_target_interval_length_seconds{interval="1s",quantile="0.5"} 0
|
||||||
|
prometheus_target_interval_length_seconds{interval="1s",quantile="0.9"} 1
|
||||||
|
prometheus_target_interval_length_seconds{interval="1s",quantile="0.99"} 1
|
||||||
|
prometheus_target_interval_length_seconds_sum{interval="1s"} 55
|
||||||
|
prometheus_target_interval_length_seconds_count{interval="1s"} 117
|
Binary file not shown.
Loading…
Reference in New Issue