mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-22 14:20:19 +00:00
rebase: bump github.com/prometheus/client_golang from 1.12.1 to 1.12.2
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.12.1 to 1.12.2. - [Release notes](https://github.com/prometheus/client_golang/releases) - [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md) - [Commits](https://github.com/prometheus/client_golang/compare/v1.12.1...v1.12.2) --- updated-dependencies: - dependency-name: github.com/prometheus/client_golang dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
parent
6470cf3343
commit
4007283a5d
2
go.mod
2
go.mod
@ -22,7 +22,7 @@ require (
|
|||||||
github.com/onsi/ginkgo v1.16.5
|
github.com/onsi/ginkgo v1.16.5
|
||||||
github.com/onsi/gomega v1.19.0
|
github.com/onsi/gomega v1.19.0
|
||||||
github.com/pborman/uuid v1.2.1
|
github.com/pborman/uuid v1.2.1
|
||||||
github.com/prometheus/client_golang v1.12.1
|
github.com/prometheus/client_golang v1.12.2
|
||||||
github.com/stretchr/testify v1.7.1
|
github.com/stretchr/testify v1.7.1
|
||||||
golang.org/x/crypto v0.0.0-20220214200702-86341886e292
|
golang.org/x/crypto v0.0.0-20220214200702-86341886e292
|
||||||
golang.org/x/sys v0.0.0-20220209214540-3681064d5158
|
golang.org/x/sys v0.0.0-20220209214540-3681064d5158
|
||||||
|
3
go.sum
3
go.sum
@ -967,8 +967,9 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn
|
|||||||
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
|
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
|
||||||
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
|
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
|
||||||
github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
|
github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
|
||||||
github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk=
|
|
||||||
github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
|
github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
|
||||||
|
github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34=
|
||||||
|
github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
|
||||||
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||||
github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||||
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||||
|
24
vendor/github.com/prometheus/client_golang/prometheus/collectors/collectors.go
generated
vendored
24
vendor/github.com/prometheus/client_golang/prometheus/collectors/collectors.go
generated
vendored
@ -14,3 +14,27 @@
|
|||||||
// Package collectors provides implementations of prometheus.Collector to
|
// Package collectors provides implementations of prometheus.Collector to
|
||||||
// conveniently collect process and Go-related metrics.
|
// conveniently collect process and Go-related metrics.
|
||||||
package collectors
|
package collectors
|
||||||
|
|
||||||
|
import "github.com/prometheus/client_golang/prometheus"
|
||||||
|
|
||||||
|
// NewBuildInfoCollector returns a collector collecting a single metric
|
||||||
|
// "go_build_info" with the constant value 1 and three labels "path", "version",
|
||||||
|
// and "checksum". Their label values contain the main module path, version, and
|
||||||
|
// checksum, respectively. The labels will only have meaningful values if the
|
||||||
|
// binary is built with Go module support and from source code retrieved from
|
||||||
|
// the source repository (rather than the local file system). This is usually
|
||||||
|
// accomplished by building from outside of GOPATH, specifying the full address
|
||||||
|
// of the main package, e.g. "GO111MODULE=on go run
|
||||||
|
// github.com/prometheus/client_golang/examples/random". If built without Go
|
||||||
|
// module support, all label values will be "unknown". If built with Go module
|
||||||
|
// support but using the source code from the local file system, the "path" will
|
||||||
|
// be set appropriately, but "checksum" will be empty and "version" will be
|
||||||
|
// "(devel)".
|
||||||
|
//
|
||||||
|
// This collector uses only the build information for the main module. See
|
||||||
|
// https://github.com/povilasv/prommod for an example of a collector for the
|
||||||
|
// module dependencies.
|
||||||
|
func NewBuildInfoCollector() prometheus.Collector {
|
||||||
|
//nolint:staticcheck // Ignore SA1019 until v2.
|
||||||
|
return prometheus.NewBuildInfoCollector()
|
||||||
|
}
|
||||||
|
@ -11,6 +11,9 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
|
//go:build !go1.17
|
||||||
|
// +build !go1.17
|
||||||
|
|
||||||
package collectors
|
package collectors
|
||||||
|
|
||||||
import "github.com/prometheus/client_golang/prometheus"
|
import "github.com/prometheus/client_golang/prometheus"
|
||||||
@ -42,28 +45,5 @@ import "github.com/prometheus/client_golang/prometheus"
|
|||||||
// NOTE: The problem is solved in Go 1.15, see
|
// NOTE: The problem is solved in Go 1.15, see
|
||||||
// https://github.com/golang/go/issues/19812 for the related Go issue.
|
// https://github.com/golang/go/issues/19812 for the related Go issue.
|
||||||
func NewGoCollector() prometheus.Collector {
|
func NewGoCollector() prometheus.Collector {
|
||||||
//nolint:staticcheck // Ignore SA1019 until v2.
|
|
||||||
return prometheus.NewGoCollector()
|
return prometheus.NewGoCollector()
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewBuildInfoCollector returns a collector collecting a single metric
|
|
||||||
// "go_build_info" with the constant value 1 and three labels "path", "version",
|
|
||||||
// and "checksum". Their label values contain the main module path, version, and
|
|
||||||
// checksum, respectively. The labels will only have meaningful values if the
|
|
||||||
// binary is built with Go module support and from source code retrieved from
|
|
||||||
// the source repository (rather than the local file system). This is usually
|
|
||||||
// accomplished by building from outside of GOPATH, specifying the full address
|
|
||||||
// of the main package, e.g. "GO111MODULE=on go run
|
|
||||||
// github.com/prometheus/client_golang/examples/random". If built without Go
|
|
||||||
// module support, all label values will be "unknown". If built with Go module
|
|
||||||
// support but using the source code from the local file system, the "path" will
|
|
||||||
// be set appropriately, but "checksum" will be empty and "version" will be
|
|
||||||
// "(devel)".
|
|
||||||
//
|
|
||||||
// This collector uses only the build information for the main module. See
|
|
||||||
// https://github.com/povilasv/prommod for an example of a collector for the
|
|
||||||
// module dependencies.
|
|
||||||
func NewBuildInfoCollector() prometheus.Collector {
|
|
||||||
//nolint:staticcheck // Ignore SA1019 until v2.
|
|
||||||
return prometheus.NewBuildInfoCollector()
|
|
||||||
}
|
|
91
vendor/github.com/prometheus/client_golang/prometheus/collectors/go_collector_latest.go
generated
vendored
Normal file
91
vendor/github.com/prometheus/client_golang/prometheus/collectors/go_collector_latest.go
generated
vendored
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
// Copyright 2021 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.
|
||||||
|
|
||||||
|
//go:build go1.17
|
||||||
|
// +build go1.17
|
||||||
|
|
||||||
|
package collectors
|
||||||
|
|
||||||
|
import "github.com/prometheus/client_golang/prometheus"
|
||||||
|
|
||||||
|
//nolint:staticcheck // Ignore SA1019 until v2.
|
||||||
|
type goOptions = prometheus.GoCollectorOptions
|
||||||
|
type goOption func(o *goOptions)
|
||||||
|
|
||||||
|
type GoCollectionOption uint32
|
||||||
|
|
||||||
|
const (
|
||||||
|
// GoRuntimeMemStatsCollection represents the metrics represented by runtime.MemStats structure such as
|
||||||
|
// go_memstats_alloc_bytes
|
||||||
|
// go_memstats_alloc_bytes_total
|
||||||
|
// go_memstats_sys_bytes
|
||||||
|
// go_memstats_lookups_total
|
||||||
|
// go_memstats_mallocs_total
|
||||||
|
// go_memstats_frees_total
|
||||||
|
// go_memstats_heap_alloc_bytes
|
||||||
|
// go_memstats_heap_sys_bytes
|
||||||
|
// go_memstats_heap_idle_bytes
|
||||||
|
// go_memstats_heap_inuse_bytes
|
||||||
|
// go_memstats_heap_released_bytes
|
||||||
|
// go_memstats_heap_objects
|
||||||
|
// go_memstats_stack_inuse_bytes
|
||||||
|
// go_memstats_stack_sys_bytes
|
||||||
|
// go_memstats_mspan_inuse_bytes
|
||||||
|
// go_memstats_mspan_sys_bytes
|
||||||
|
// go_memstats_mcache_inuse_bytes
|
||||||
|
// go_memstats_mcache_sys_bytes
|
||||||
|
// go_memstats_buck_hash_sys_bytes
|
||||||
|
// go_memstats_gc_sys_bytes
|
||||||
|
// go_memstats_other_sys_bytes
|
||||||
|
// go_memstats_next_gc_bytes
|
||||||
|
// so the metrics known from pre client_golang v1.12.0, except skipped go_memstats_gc_cpu_fraction (see
|
||||||
|
// https://github.com/prometheus/client_golang/issues/842#issuecomment-861812034 for explanation.
|
||||||
|
//
|
||||||
|
// NOTE that this mode represents runtime.MemStats statistics, but they are
|
||||||
|
// actually implemented using new runtime/metrics package.
|
||||||
|
// Deprecated: Use GoRuntimeMetricsCollection instead going forward.
|
||||||
|
GoRuntimeMemStatsCollection GoCollectionOption = 1 << iota
|
||||||
|
// GoRuntimeMetricsCollection is the new set of metrics represented by runtime/metrics package and follows
|
||||||
|
// consistent naming. The exposed metric set depends on Go version, but it is controlled against
|
||||||
|
// unexpected cardinality. This set has overlapping information with GoRuntimeMemStatsCollection, just with
|
||||||
|
// new names. GoRuntimeMetricsCollection is what is recommended for using going forward.
|
||||||
|
GoRuntimeMetricsCollection
|
||||||
|
)
|
||||||
|
|
||||||
|
// WithGoCollections allows enabling different collections for Go collector on top of base metrics
|
||||||
|
// like go_goroutines, go_threads, go_gc_duration_seconds, go_memstats_last_gc_time_seconds, go_info.
|
||||||
|
//
|
||||||
|
// Check GoRuntimeMemStatsCollection and GoRuntimeMetricsCollection for more details. You can use none,
|
||||||
|
// one or more collections at once. For example:
|
||||||
|
// WithGoCollections(GoRuntimeMemStatsCollection | GoRuntimeMetricsCollection) means both GoRuntimeMemStatsCollection
|
||||||
|
// metrics and GoRuntimeMetricsCollection will be exposed.
|
||||||
|
//
|
||||||
|
// The current default is GoRuntimeMemStatsCollection, so the compatibility mode with
|
||||||
|
// client_golang pre v1.12 (move to runtime/metrics).
|
||||||
|
func WithGoCollections(flags GoCollectionOption) goOption {
|
||||||
|
return func(o *goOptions) {
|
||||||
|
o.EnabledCollections = uint32(flags)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewGoCollector returns a collector that exports metrics about the current Go
|
||||||
|
// process using debug.GCStats using runtime/metrics.
|
||||||
|
func NewGoCollector(opts ...goOption) prometheus.Collector {
|
||||||
|
//nolint:staticcheck // Ignore SA1019 until v2.
|
||||||
|
promPkgOpts := make([]func(o *prometheus.GoCollectorOptions), len(opts))
|
||||||
|
for i, opt := range opts {
|
||||||
|
promPkgOpts[i] = opt
|
||||||
|
}
|
||||||
|
//nolint:staticcheck // Ignore SA1019 until v2.
|
||||||
|
return prometheus.NewGoCollector(promPkgOpts...)
|
||||||
|
}
|
10
vendor/github.com/prometheus/client_golang/prometheus/go_collector.go
generated
vendored
10
vendor/github.com/prometheus/client_golang/prometheus/go_collector.go
generated
vendored
@ -197,14 +197,6 @@ func goRuntimeMemStats() memStatsMetrics {
|
|||||||
),
|
),
|
||||||
eval: func(ms *runtime.MemStats) float64 { return float64(ms.NextGC) },
|
eval: func(ms *runtime.MemStats) float64 { return float64(ms.NextGC) },
|
||||||
valType: GaugeValue,
|
valType: GaugeValue,
|
||||||
}, {
|
|
||||||
desc: NewDesc(
|
|
||||||
memstatNamespace("gc_cpu_fraction"),
|
|
||||||
"The fraction of this program's available CPU time used by the GC since the program started.",
|
|
||||||
nil, nil,
|
|
||||||
),
|
|
||||||
eval: func(ms *runtime.MemStats) float64 { return ms.GCCPUFraction },
|
|
||||||
valType: GaugeValue,
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -268,7 +260,6 @@ func (c *baseGoCollector) Collect(ch chan<- Metric) {
|
|||||||
quantiles[0.0] = stats.PauseQuantiles[0].Seconds()
|
quantiles[0.0] = stats.PauseQuantiles[0].Seconds()
|
||||||
ch <- MustNewConstSummary(c.gcDesc, uint64(stats.NumGC), stats.PauseTotal.Seconds(), quantiles)
|
ch <- MustNewConstSummary(c.gcDesc, uint64(stats.NumGC), stats.PauseTotal.Seconds(), quantiles)
|
||||||
ch <- MustNewConstMetric(c.gcLastTimeDesc, GaugeValue, float64(stats.LastGC.UnixNano())/1e9)
|
ch <- MustNewConstMetric(c.gcLastTimeDesc, GaugeValue, float64(stats.LastGC.UnixNano())/1e9)
|
||||||
|
|
||||||
ch <- MustNewConstMetric(c.goInfoDesc, GaugeValue, 1)
|
ch <- MustNewConstMetric(c.goInfoDesc, GaugeValue, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,6 +269,7 @@ func memstatNamespace(s string) string {
|
|||||||
|
|
||||||
// memStatsMetrics provide description, evaluator, runtime/metrics name, and
|
// memStatsMetrics provide description, evaluator, runtime/metrics name, and
|
||||||
// value type for memstat metrics.
|
// value type for memstat metrics.
|
||||||
|
// TODO(bwplotka): Remove with end Go 1.16 EOL and replace with runtime/metrics.Description
|
||||||
type memStatsMetrics []struct {
|
type memStatsMetrics []struct {
|
||||||
desc *Desc
|
desc *Desc
|
||||||
eval func(*runtime.MemStats) float64
|
eval func(*runtime.MemStats) float64
|
||||||
|
17
vendor/github.com/prometheus/client_golang/prometheus/go_collector_go116.go
generated
vendored
17
vendor/github.com/prometheus/client_golang/prometheus/go_collector_go116.go
generated
vendored
@ -40,13 +40,28 @@ type goCollector struct {
|
|||||||
//
|
//
|
||||||
// Deprecated: Use collectors.NewGoCollector instead.
|
// Deprecated: Use collectors.NewGoCollector instead.
|
||||||
func NewGoCollector() Collector {
|
func NewGoCollector() Collector {
|
||||||
|
msMetrics := goRuntimeMemStats()
|
||||||
|
msMetrics = append(msMetrics, struct {
|
||||||
|
desc *Desc
|
||||||
|
eval func(*runtime.MemStats) float64
|
||||||
|
valType ValueType
|
||||||
|
}{
|
||||||
|
// This metric is omitted in Go1.17+, see https://github.com/prometheus/client_golang/issues/842#issuecomment-861812034
|
||||||
|
desc: NewDesc(
|
||||||
|
memstatNamespace("gc_cpu_fraction"),
|
||||||
|
"The fraction of this program's available CPU time used by the GC since the program started.",
|
||||||
|
nil, nil,
|
||||||
|
),
|
||||||
|
eval: func(ms *runtime.MemStats) float64 { return ms.GCCPUFraction },
|
||||||
|
valType: GaugeValue,
|
||||||
|
})
|
||||||
return &goCollector{
|
return &goCollector{
|
||||||
base: newBaseGoCollector(),
|
base: newBaseGoCollector(),
|
||||||
msLast: &runtime.MemStats{},
|
msLast: &runtime.MemStats{},
|
||||||
msRead: runtime.ReadMemStats,
|
msRead: runtime.ReadMemStats,
|
||||||
msMaxWait: time.Second,
|
msMaxWait: time.Second,
|
||||||
msMaxAge: 5 * time.Minute,
|
msMaxAge: 5 * time.Minute,
|
||||||
msMetrics: goRuntimeMemStats(),
|
msMetrics: msMetrics,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,11 +25,71 @@ import (
|
|||||||
|
|
||||||
//nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility.
|
//nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility.
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
"github.com/prometheus/client_golang/prometheus/internal"
|
|
||||||
dto "github.com/prometheus/client_model/go"
|
dto "github.com/prometheus/client_model/go"
|
||||||
|
|
||||||
|
"github.com/prometheus/client_golang/prometheus/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
goGCHeapTinyAllocsObjects = "/gc/heap/tiny/allocs:objects"
|
||||||
|
goGCHeapAllocsObjects = "/gc/heap/allocs:objects"
|
||||||
|
goGCHeapFreesObjects = "/gc/heap/frees:objects"
|
||||||
|
goGCHeapAllocsBytes = "/gc/heap/allocs:bytes"
|
||||||
|
goGCHeapObjects = "/gc/heap/objects:objects"
|
||||||
|
goGCHeapGoalBytes = "/gc/heap/goal:bytes"
|
||||||
|
goMemoryClassesTotalBytes = "/memory/classes/total:bytes"
|
||||||
|
goMemoryClassesHeapObjectsBytes = "/memory/classes/heap/objects:bytes"
|
||||||
|
goMemoryClassesHeapUnusedBytes = "/memory/classes/heap/unused:bytes"
|
||||||
|
goMemoryClassesHeapReleasedBytes = "/memory/classes/heap/released:bytes"
|
||||||
|
goMemoryClassesHeapFreeBytes = "/memory/classes/heap/free:bytes"
|
||||||
|
goMemoryClassesHeapStacksBytes = "/memory/classes/heap/stacks:bytes"
|
||||||
|
goMemoryClassesOSStacksBytes = "/memory/classes/os-stacks:bytes"
|
||||||
|
goMemoryClassesMetadataMSpanInuseBytes = "/memory/classes/metadata/mspan/inuse:bytes"
|
||||||
|
goMemoryClassesMetadataMSPanFreeBytes = "/memory/classes/metadata/mspan/free:bytes"
|
||||||
|
goMemoryClassesMetadataMCacheInuseBytes = "/memory/classes/metadata/mcache/inuse:bytes"
|
||||||
|
goMemoryClassesMetadataMCacheFreeBytes = "/memory/classes/metadata/mcache/free:bytes"
|
||||||
|
goMemoryClassesProfilingBucketsBytes = "/memory/classes/profiling/buckets:bytes"
|
||||||
|
goMemoryClassesMetadataOtherBytes = "/memory/classes/metadata/other:bytes"
|
||||||
|
goMemoryClassesOtherBytes = "/memory/classes/other:bytes"
|
||||||
|
)
|
||||||
|
|
||||||
|
// runtime/metrics names required for runtimeMemStats like logic.
|
||||||
|
var rmForMemStats = []string{goGCHeapTinyAllocsObjects,
|
||||||
|
goGCHeapAllocsObjects,
|
||||||
|
goGCHeapFreesObjects,
|
||||||
|
goGCHeapAllocsBytes,
|
||||||
|
goGCHeapObjects,
|
||||||
|
goGCHeapGoalBytes,
|
||||||
|
goMemoryClassesTotalBytes,
|
||||||
|
goMemoryClassesHeapObjectsBytes,
|
||||||
|
goMemoryClassesHeapUnusedBytes,
|
||||||
|
goMemoryClassesHeapReleasedBytes,
|
||||||
|
goMemoryClassesHeapFreeBytes,
|
||||||
|
goMemoryClassesHeapStacksBytes,
|
||||||
|
goMemoryClassesOSStacksBytes,
|
||||||
|
goMemoryClassesMetadataMSpanInuseBytes,
|
||||||
|
goMemoryClassesMetadataMSPanFreeBytes,
|
||||||
|
goMemoryClassesMetadataMCacheInuseBytes,
|
||||||
|
goMemoryClassesMetadataMCacheFreeBytes,
|
||||||
|
goMemoryClassesProfilingBucketsBytes,
|
||||||
|
goMemoryClassesMetadataOtherBytes,
|
||||||
|
goMemoryClassesOtherBytes,
|
||||||
|
}
|
||||||
|
|
||||||
|
func bestEffortLookupRM(lookup []string) []metrics.Description {
|
||||||
|
ret := make([]metrics.Description, 0, len(lookup))
|
||||||
|
for _, rm := range metrics.All() {
|
||||||
|
for _, m := range lookup {
|
||||||
|
if m == rm.Name {
|
||||||
|
ret = append(ret, rm)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
type goCollector struct {
|
type goCollector struct {
|
||||||
|
opt GoCollectorOptions
|
||||||
base baseGoCollector
|
base baseGoCollector
|
||||||
|
|
||||||
// mu protects updates to all fields ensuring a consistent
|
// mu protects updates to all fields ensuring a consistent
|
||||||
@ -51,12 +111,46 @@ type goCollector struct {
|
|||||||
msMetrics memStatsMetrics
|
msMetrics memStatsMetrics
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Those are not exposed due to need to move Go collector to another package in v2.
|
||||||
|
// See issue https://github.com/prometheus/client_golang/issues/1030.
|
||||||
|
goRuntimeMemStatsCollection uint32 = 1 << iota
|
||||||
|
goRuntimeMetricsCollection
|
||||||
|
)
|
||||||
|
|
||||||
|
// GoCollectorOptions should not be used be directly by anything, except `collectors` package.
|
||||||
|
// Use it via collectors package instead. See issue
|
||||||
|
// https://github.com/prometheus/client_golang/issues/1030.
|
||||||
|
//
|
||||||
|
// Deprecated: Use collectors.WithGoCollections
|
||||||
|
type GoCollectorOptions struct {
|
||||||
|
// EnabledCollection sets what type of collections collector should expose on top of base collection.
|
||||||
|
// By default it's goMemStatsCollection | goRuntimeMetricsCollection.
|
||||||
|
EnabledCollections uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c GoCollectorOptions) isEnabled(flag uint32) bool {
|
||||||
|
return c.EnabledCollections&flag != 0
|
||||||
|
}
|
||||||
|
|
||||||
|
const defaultGoCollections = goRuntimeMemStatsCollection
|
||||||
|
|
||||||
// NewGoCollector is the obsolete version of collectors.NewGoCollector.
|
// NewGoCollector is the obsolete version of collectors.NewGoCollector.
|
||||||
// See there for documentation.
|
// See there for documentation.
|
||||||
//
|
//
|
||||||
// Deprecated: Use collectors.NewGoCollector instead.
|
// Deprecated: Use collectors.NewGoCollector instead.
|
||||||
func NewGoCollector() Collector {
|
func NewGoCollector(opts ...func(o *GoCollectorOptions)) Collector {
|
||||||
descriptions := metrics.All()
|
opt := GoCollectorOptions{EnabledCollections: defaultGoCollections}
|
||||||
|
for _, o := range opts {
|
||||||
|
o(&opt)
|
||||||
|
}
|
||||||
|
|
||||||
|
var descriptions []metrics.Description
|
||||||
|
if opt.isEnabled(goRuntimeMetricsCollection) {
|
||||||
|
descriptions = metrics.All()
|
||||||
|
} else if opt.isEnabled(goRuntimeMemStatsCollection) {
|
||||||
|
descriptions = bestEffortLookupRM(rmForMemStats)
|
||||||
|
}
|
||||||
|
|
||||||
// Collect all histogram samples so that we can get their buckets.
|
// Collect all histogram samples so that we can get their buckets.
|
||||||
// The API guarantees that the buckets are always fixed for the lifetime
|
// The API guarantees that the buckets are always fixed for the lifetime
|
||||||
@ -67,7 +161,11 @@ func NewGoCollector() Collector {
|
|||||||
histograms = append(histograms, metrics.Sample{Name: d.Name})
|
histograms = append(histograms, metrics.Sample{Name: d.Name})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
metrics.Read(histograms)
|
|
||||||
|
if len(histograms) > 0 {
|
||||||
|
metrics.Read(histograms)
|
||||||
|
}
|
||||||
|
|
||||||
bucketsMap := make(map[string][]float64)
|
bucketsMap := make(map[string][]float64)
|
||||||
for i := range histograms {
|
for i := range histograms {
|
||||||
bucketsMap[histograms[i].Name] = histograms[i].Value.Float64Histogram().Buckets
|
bucketsMap[histograms[i].Name] = histograms[i].Value.Float64Histogram().Buckets
|
||||||
@ -83,7 +181,7 @@ func NewGoCollector() Collector {
|
|||||||
if !ok {
|
if !ok {
|
||||||
// Just ignore this metric; we can't do anything with it here.
|
// Just ignore this metric; we can't do anything with it here.
|
||||||
// If a user decides to use the latest version of Go, we don't want
|
// If a user decides to use the latest version of Go, we don't want
|
||||||
// to fail here. This condition is tested elsewhere.
|
// to fail here. This condition is tested in TestExpectedRuntimeMetrics.
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,12 +221,18 @@ func NewGoCollector() Collector {
|
|||||||
}
|
}
|
||||||
metricSet = append(metricSet, m)
|
metricSet = append(metricSet, m)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var msMetrics memStatsMetrics
|
||||||
|
if opt.isEnabled(goRuntimeMemStatsCollection) {
|
||||||
|
msMetrics = goRuntimeMemStats()
|
||||||
|
}
|
||||||
return &goCollector{
|
return &goCollector{
|
||||||
|
opt: opt,
|
||||||
base: newBaseGoCollector(),
|
base: newBaseGoCollector(),
|
||||||
rmSampleBuf: sampleBuf,
|
rmSampleBuf: sampleBuf,
|
||||||
rmSampleMap: sampleMap,
|
rmSampleMap: sampleMap,
|
||||||
rmMetrics: metricSet,
|
rmMetrics: metricSet,
|
||||||
msMetrics: goRuntimeMemStats(),
|
msMetrics: msMetrics,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -163,40 +267,47 @@ func (c *goCollector) Collect(ch chan<- Metric) {
|
|||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
|
|
||||||
// Populate runtime/metrics sample buffer.
|
if len(c.rmSampleBuf) > 0 {
|
||||||
metrics.Read(c.rmSampleBuf)
|
// Populate runtime/metrics sample buffer.
|
||||||
|
metrics.Read(c.rmSampleBuf)
|
||||||
|
}
|
||||||
|
|
||||||
// Update all our metrics from rmSampleBuf.
|
if c.opt.isEnabled(goRuntimeMetricsCollection) {
|
||||||
for i, sample := range c.rmSampleBuf {
|
// Collect all our metrics from rmSampleBuf.
|
||||||
// N.B. switch on concrete type because it's significantly more efficient
|
for i, sample := range c.rmSampleBuf {
|
||||||
// than checking for the Counter and Gauge interface implementations. In
|
// N.B. switch on concrete type because it's significantly more efficient
|
||||||
// this case, we control all the types here.
|
// than checking for the Counter and Gauge interface implementations. In
|
||||||
switch m := c.rmMetrics[i].(type) {
|
// this case, we control all the types here.
|
||||||
case *counter:
|
switch m := c.rmMetrics[i].(type) {
|
||||||
// Guard against decreases. This should never happen, but a failure
|
case *counter:
|
||||||
// to do so will result in a panic, which is a harsh consequence for
|
// Guard against decreases. This should never happen, but a failure
|
||||||
// a metrics collection bug.
|
// to do so will result in a panic, which is a harsh consequence for
|
||||||
v0, v1 := m.get(), unwrapScalarRMValue(sample.Value)
|
// a metrics collection bug.
|
||||||
if v1 > v0 {
|
v0, v1 := m.get(), unwrapScalarRMValue(sample.Value)
|
||||||
m.Add(unwrapScalarRMValue(sample.Value) - m.get())
|
if v1 > v0 {
|
||||||
|
m.Add(unwrapScalarRMValue(sample.Value) - m.get())
|
||||||
|
}
|
||||||
|
m.Collect(ch)
|
||||||
|
case *gauge:
|
||||||
|
m.Set(unwrapScalarRMValue(sample.Value))
|
||||||
|
m.Collect(ch)
|
||||||
|
case *batchHistogram:
|
||||||
|
m.update(sample.Value.Float64Histogram(), c.exactSumFor(sample.Name))
|
||||||
|
m.Collect(ch)
|
||||||
|
default:
|
||||||
|
panic("unexpected metric type")
|
||||||
}
|
}
|
||||||
m.Collect(ch)
|
|
||||||
case *gauge:
|
|
||||||
m.Set(unwrapScalarRMValue(sample.Value))
|
|
||||||
m.Collect(ch)
|
|
||||||
case *batchHistogram:
|
|
||||||
m.update(sample.Value.Float64Histogram(), c.exactSumFor(sample.Name))
|
|
||||||
m.Collect(ch)
|
|
||||||
default:
|
|
||||||
panic("unexpected metric type")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ms is a dummy MemStats that we populate ourselves so that we can
|
// ms is a dummy MemStats that we populate ourselves so that we can
|
||||||
// populate the old metrics from it.
|
// populate the old metrics from it if goMemStatsCollection is enabled.
|
||||||
var ms runtime.MemStats
|
if c.opt.isEnabled(goRuntimeMemStatsCollection) {
|
||||||
memStatsFromRM(&ms, c.rmSampleMap)
|
var ms runtime.MemStats
|
||||||
for _, i := range c.msMetrics {
|
memStatsFromRM(&ms, c.rmSampleMap)
|
||||||
ch <- MustNewConstMetric(i.desc, i.valType, i.eval(&ms))
|
for _, i := range c.msMetrics {
|
||||||
|
ch <- MustNewConstMetric(i.desc, i.valType, i.eval(&ms))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,35 +372,30 @@ func memStatsFromRM(ms *runtime.MemStats, rm map[string]*metrics.Sample) {
|
|||||||
// while having Mallocs - Frees still represent a live object count.
|
// while having Mallocs - Frees still represent a live object count.
|
||||||
// Unfortunately, MemStats doesn't actually export a large allocation count,
|
// Unfortunately, MemStats doesn't actually export a large allocation count,
|
||||||
// so it's impossible to pull this number out directly.
|
// so it's impossible to pull this number out directly.
|
||||||
tinyAllocs := lookupOrZero("/gc/heap/tiny/allocs:objects")
|
tinyAllocs := lookupOrZero(goGCHeapTinyAllocsObjects)
|
||||||
ms.Mallocs = lookupOrZero("/gc/heap/allocs:objects") + tinyAllocs
|
ms.Mallocs = lookupOrZero(goGCHeapAllocsObjects) + tinyAllocs
|
||||||
ms.Frees = lookupOrZero("/gc/heap/frees:objects") + tinyAllocs
|
ms.Frees = lookupOrZero(goGCHeapFreesObjects) + tinyAllocs
|
||||||
|
|
||||||
ms.TotalAlloc = lookupOrZero("/gc/heap/allocs:bytes")
|
ms.TotalAlloc = lookupOrZero(goGCHeapAllocsBytes)
|
||||||
ms.Sys = lookupOrZero("/memory/classes/total:bytes")
|
ms.Sys = lookupOrZero(goMemoryClassesTotalBytes)
|
||||||
ms.Lookups = 0 // Already always zero.
|
ms.Lookups = 0 // Already always zero.
|
||||||
ms.HeapAlloc = lookupOrZero("/memory/classes/heap/objects:bytes")
|
ms.HeapAlloc = lookupOrZero(goMemoryClassesHeapObjectsBytes)
|
||||||
ms.Alloc = ms.HeapAlloc
|
ms.Alloc = ms.HeapAlloc
|
||||||
ms.HeapInuse = ms.HeapAlloc + lookupOrZero("/memory/classes/heap/unused:bytes")
|
ms.HeapInuse = ms.HeapAlloc + lookupOrZero(goMemoryClassesHeapUnusedBytes)
|
||||||
ms.HeapReleased = lookupOrZero("/memory/classes/heap/released:bytes")
|
ms.HeapReleased = lookupOrZero(goMemoryClassesHeapReleasedBytes)
|
||||||
ms.HeapIdle = ms.HeapReleased + lookupOrZero("/memory/classes/heap/free:bytes")
|
ms.HeapIdle = ms.HeapReleased + lookupOrZero(goMemoryClassesHeapFreeBytes)
|
||||||
ms.HeapSys = ms.HeapInuse + ms.HeapIdle
|
ms.HeapSys = ms.HeapInuse + ms.HeapIdle
|
||||||
ms.HeapObjects = lookupOrZero("/gc/heap/objects:objects")
|
ms.HeapObjects = lookupOrZero(goGCHeapObjects)
|
||||||
ms.StackInuse = lookupOrZero("/memory/classes/heap/stacks:bytes")
|
ms.StackInuse = lookupOrZero(goMemoryClassesHeapStacksBytes)
|
||||||
ms.StackSys = ms.StackInuse + lookupOrZero("/memory/classes/os-stacks:bytes")
|
ms.StackSys = ms.StackInuse + lookupOrZero(goMemoryClassesOSStacksBytes)
|
||||||
ms.MSpanInuse = lookupOrZero("/memory/classes/metadata/mspan/inuse:bytes")
|
ms.MSpanInuse = lookupOrZero(goMemoryClassesMetadataMSpanInuseBytes)
|
||||||
ms.MSpanSys = ms.MSpanInuse + lookupOrZero("/memory/classes/metadata/mspan/free:bytes")
|
ms.MSpanSys = ms.MSpanInuse + lookupOrZero(goMemoryClassesMetadataMSPanFreeBytes)
|
||||||
ms.MCacheInuse = lookupOrZero("/memory/classes/metadata/mcache/inuse:bytes")
|
ms.MCacheInuse = lookupOrZero(goMemoryClassesMetadataMCacheInuseBytes)
|
||||||
ms.MCacheSys = ms.MCacheInuse + lookupOrZero("/memory/classes/metadata/mcache/free:bytes")
|
ms.MCacheSys = ms.MCacheInuse + lookupOrZero(goMemoryClassesMetadataMCacheFreeBytes)
|
||||||
ms.BuckHashSys = lookupOrZero("/memory/classes/profiling/buckets:bytes")
|
ms.BuckHashSys = lookupOrZero(goMemoryClassesProfilingBucketsBytes)
|
||||||
ms.GCSys = lookupOrZero("/memory/classes/metadata/other:bytes")
|
ms.GCSys = lookupOrZero(goMemoryClassesMetadataOtherBytes)
|
||||||
ms.OtherSys = lookupOrZero("/memory/classes/other:bytes")
|
ms.OtherSys = lookupOrZero(goMemoryClassesOtherBytes)
|
||||||
ms.NextGC = lookupOrZero("/gc/heap/goal:bytes")
|
ms.NextGC = lookupOrZero(goGCHeapGoalBytes)
|
||||||
|
|
||||||
// N.B. LastGC is omitted because runtime.GCStats already has this.
|
|
||||||
// See https://github.com/prometheus/client_golang/issues/842#issuecomment-861812034
|
|
||||||
// for more details.
|
|
||||||
ms.LastGC = 0
|
|
||||||
|
|
||||||
// N.B. GCCPUFraction is intentionally omitted. This metric is not useful,
|
// N.B. GCCPUFraction is intentionally omitted. This metric is not useful,
|
||||||
// and often misleading due to the fact that it's an average over the lifetime
|
// and often misleading due to the fact that it's an average over the lifetime
|
||||||
@ -324,6 +430,11 @@ type batchHistogram struct {
|
|||||||
// buckets must always be from the runtime/metrics package, following
|
// buckets must always be from the runtime/metrics package, following
|
||||||
// the same conventions.
|
// the same conventions.
|
||||||
func newBatchHistogram(desc *Desc, buckets []float64, hasSum bool) *batchHistogram {
|
func newBatchHistogram(desc *Desc, buckets []float64, hasSum bool) *batchHistogram {
|
||||||
|
// We need to remove -Inf values. runtime/metrics keeps them around.
|
||||||
|
// But -Inf bucket should not be allowed for prometheus histograms.
|
||||||
|
if buckets[0] == math.Inf(-1) {
|
||||||
|
buckets = buckets[1:]
|
||||||
|
}
|
||||||
h := &batchHistogram{
|
h := &batchHistogram{
|
||||||
desc: desc,
|
desc: desc,
|
||||||
buckets: buckets,
|
buckets: buckets,
|
||||||
@ -382,8 +493,10 @@ func (h *batchHistogram) Write(out *dto.Metric) error {
|
|||||||
for i, count := range h.counts {
|
for i, count := range h.counts {
|
||||||
totalCount += count
|
totalCount += count
|
||||||
if !h.hasSum {
|
if !h.hasSum {
|
||||||
// N.B. This computed sum is an underestimate.
|
if count != 0 {
|
||||||
sum += h.buckets[i] * float64(count)
|
// N.B. This computed sum is an underestimate.
|
||||||
|
sum += h.buckets[i] * float64(count)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Skip the +Inf bucket, but only for the bucket list.
|
// Skip the +Inf bucket, but only for the bucket list.
|
14
vendor/github.com/prometheus/client_golang/prometheus/internal/go_runtime_metrics.go
generated
vendored
14
vendor/github.com/prometheus/client_golang/prometheus/internal/go_runtime_metrics.go
generated
vendored
@ -62,7 +62,7 @@ func RuntimeMetricsToProm(d *metrics.Description) (string, string, string, bool)
|
|||||||
// other data.
|
// other data.
|
||||||
name = strings.ReplaceAll(name, "-", "_")
|
name = strings.ReplaceAll(name, "-", "_")
|
||||||
name = name + "_" + unit
|
name = name + "_" + unit
|
||||||
if d.Cumulative {
|
if d.Cumulative && d.Kind != metrics.KindFloat64Histogram {
|
||||||
name = name + "_total"
|
name = name + "_total"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,12 +84,12 @@ func RuntimeMetricsToProm(d *metrics.Description) (string, string, string, bool)
|
|||||||
func RuntimeMetricsBucketsForUnit(buckets []float64, unit string) []float64 {
|
func RuntimeMetricsBucketsForUnit(buckets []float64, unit string) []float64 {
|
||||||
switch unit {
|
switch unit {
|
||||||
case "bytes":
|
case "bytes":
|
||||||
// Rebucket as powers of 2.
|
// Re-bucket as powers of 2.
|
||||||
return rebucketExp(buckets, 2)
|
return reBucketExp(buckets, 2)
|
||||||
case "seconds":
|
case "seconds":
|
||||||
// Rebucket as powers of 10 and then merge all buckets greater
|
// Re-bucket as powers of 10 and then merge all buckets greater
|
||||||
// than 1 second into the +Inf bucket.
|
// than 1 second into the +Inf bucket.
|
||||||
b := rebucketExp(buckets, 10)
|
b := reBucketExp(buckets, 10)
|
||||||
for i := range b {
|
for i := range b {
|
||||||
if b[i] <= 1 {
|
if b[i] <= 1 {
|
||||||
continue
|
continue
|
||||||
@ -103,11 +103,11 @@ func RuntimeMetricsBucketsForUnit(buckets []float64, unit string) []float64 {
|
|||||||
return buckets
|
return buckets
|
||||||
}
|
}
|
||||||
|
|
||||||
// rebucketExp takes a list of bucket boundaries (lower bound inclusive) and
|
// reBucketExp takes a list of bucket boundaries (lower bound inclusive) and
|
||||||
// downsamples the buckets to those a multiple of base apart. The end result
|
// downsamples the buckets to those a multiple of base apart. The end result
|
||||||
// is a roughly exponential (in many cases, perfectly exponential) bucketing
|
// is a roughly exponential (in many cases, perfectly exponential) bucketing
|
||||||
// scheme.
|
// scheme.
|
||||||
func rebucketExp(buckets []float64, base float64) []float64 {
|
func reBucketExp(buckets []float64, base float64) []float64 {
|
||||||
bucket := buckets[0]
|
bucket := buckets[0]
|
||||||
var newBuckets []float64
|
var newBuckets []float64
|
||||||
// We may see a -Inf here, in which case, add it and skip it
|
// We may see a -Inf here, in which case, add it and skip it
|
||||||
|
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
@ -473,7 +473,7 @@ github.com/pkg/errors
|
|||||||
# github.com/pmezard/go-difflib v1.0.0
|
# github.com/pmezard/go-difflib v1.0.0
|
||||||
## explicit
|
## explicit
|
||||||
github.com/pmezard/go-difflib/difflib
|
github.com/pmezard/go-difflib/difflib
|
||||||
# github.com/prometheus/client_golang v1.12.1
|
# github.com/prometheus/client_golang v1.12.2
|
||||||
## explicit; go 1.13
|
## explicit; go 1.13
|
||||||
github.com/prometheus/client_golang/prometheus
|
github.com/prometheus/client_golang/prometheus
|
||||||
github.com/prometheus/client_golang/prometheus/collectors
|
github.com/prometheus/client_golang/prometheus/collectors
|
||||||
|
Loading…
Reference in New Issue
Block a user