mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 10:51:29 +00:00
add support for merging calls to Linear/Exponential Buckets
Change-Id: Id6005912ac71c9c15354e9e8242f0febf8569dec
This commit is contained in:
parent
4216ad3542
commit
7b616b39b1
@ -438,6 +438,38 @@ func (c *metricDecoder) decodeBuckets(expr ast.Expr) ([]float64, error) {
|
|||||||
func (c *metricDecoder) decodeBucketFunctionCall(v *ast.CallExpr) ([]float64, error, bool) {
|
func (c *metricDecoder) decodeBucketFunctionCall(v *ast.CallExpr) ([]float64, error, bool) {
|
||||||
se, ok := v.Fun.(*ast.SelectorExpr)
|
se, ok := v.Fun.(*ast.SelectorExpr)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
// support merged
|
||||||
|
if ai, ok := v.Fun.(*ast.Ident); ok && ai.Name == "merge" {
|
||||||
|
merged := []float64{}
|
||||||
|
for _, arg := range v.Args {
|
||||||
|
v2, ok := arg.(*ast.CallExpr)
|
||||||
|
if !ok {
|
||||||
|
return nil, newDecodeErrorf(v2, errBuckets), true
|
||||||
|
}
|
||||||
|
se, ok = v2.Fun.(*ast.SelectorExpr)
|
||||||
|
if ok {
|
||||||
|
functionName := se.Sel.String()
|
||||||
|
functionImport, ok := se.X.(*ast.Ident)
|
||||||
|
if !ok {
|
||||||
|
return nil, newDecodeErrorf(v, errBuckets), true
|
||||||
|
}
|
||||||
|
if functionImport.String() != c.kubeMetricsImportName {
|
||||||
|
return nil, newDecodeErrorf(v, errBuckets), true
|
||||||
|
}
|
||||||
|
firstArg, secondArg, thirdArg, err := decodeBucketArguments(v2)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err, true
|
||||||
|
}
|
||||||
|
switch functionName {
|
||||||
|
case "LinearBuckets":
|
||||||
|
merged = append(merged, metrics.LinearBuckets(firstArg, secondArg, thirdArg)...)
|
||||||
|
case "ExponentialBuckets":
|
||||||
|
merged = append(merged, metrics.LinearBuckets(firstArg, secondArg, thirdArg)...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return merged, nil, true
|
||||||
|
}
|
||||||
return nil, newDecodeErrorf(v, errBuckets), true
|
return nil, newDecodeErrorf(v, errBuckets), true
|
||||||
}
|
}
|
||||||
functionName := se.Sel.String()
|
functionName := se.Sel.String()
|
||||||
|
@ -473,6 +473,21 @@ var (
|
|||||||
},
|
},
|
||||||
[]string{"container_state"},
|
[]string{"container_state"},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
NetworkProgrammingLatency = metrics.NewHistogram(
|
||||||
|
&metrics.HistogramOpts{
|
||||||
|
Subsystem: "kube_proxy",
|
||||||
|
Name: "network_programming_duration_seconds",
|
||||||
|
Help: "In Cluster Network Programming Latency in seconds",
|
||||||
|
Buckets: merge(
|
||||||
|
metrics.LinearBuckets(0.25, 0.25, 2), // 0.25s, 0.50s
|
||||||
|
metrics.LinearBuckets(1, 1, 59), // 1s, 2s, 3s, ... 59s
|
||||||
|
metrics.LinearBuckets(60, 5, 12), // 60s, 65s, 70s, ... 115s
|
||||||
|
metrics.LinearBuckets(120, 30, 7), // 2min, 2.5min, 3min, ..., 5min
|
||||||
|
),
|
||||||
|
StabilityLevel: metrics.BETA,
|
||||||
|
},
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
var registerMetrics sync.Once
|
var registerMetrics sync.Once
|
||||||
@ -503,6 +518,7 @@ func Register(collectors ...metrics.StableCollector) {
|
|||||||
legacyregistry.MustRegister(RunningPodCount)
|
legacyregistry.MustRegister(RunningPodCount)
|
||||||
legacyregistry.MustRegister(RunPodSandboxDuration)
|
legacyregistry.MustRegister(RunPodSandboxDuration)
|
||||||
legacyregistry.MustRegister(RunPodSandboxErrors)
|
legacyregistry.MustRegister(RunPodSandboxErrors)
|
||||||
|
legacyregistry.MustRegister(NetworkProgrammingLatency)
|
||||||
for _, collector := range collectors {
|
for _, collector := range collectors {
|
||||||
legacyregistry.CustomMustRegister(collector)
|
legacyregistry.CustomMustRegister(collector)
|
||||||
}
|
}
|
||||||
@ -547,3 +563,11 @@ func SetNodeName(name types.NodeName) {
|
|||||||
func Blah() metrics.ObserverMetric {
|
func Blah() metrics.ObserverMetric {
|
||||||
return EvictionStatsAge.With(metrics.Labels{"plugins": "ASDf"})
|
return EvictionStatsAge.With(metrics.Labels{"plugins": "ASDf"})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func merge(slices ...[]float64) []float64 {
|
||||||
|
result := make([]float64, 1)
|
||||||
|
for _, s := range slices {
|
||||||
|
result = append(result, s...)
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
@ -1,3 +1,89 @@
|
|||||||
|
- name: network_programming_duration_seconds
|
||||||
|
subsystem: kube_proxy
|
||||||
|
help: In Cluster Network Programming Latency in seconds
|
||||||
|
type: Histogram
|
||||||
|
stabilityLevel: BETA
|
||||||
|
buckets:
|
||||||
|
- 0.25
|
||||||
|
- 0.5
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 3
|
||||||
|
- 4
|
||||||
|
- 5
|
||||||
|
- 6
|
||||||
|
- 7
|
||||||
|
- 8
|
||||||
|
- 9
|
||||||
|
- 10
|
||||||
|
- 11
|
||||||
|
- 12
|
||||||
|
- 13
|
||||||
|
- 14
|
||||||
|
- 15
|
||||||
|
- 16
|
||||||
|
- 17
|
||||||
|
- 18
|
||||||
|
- 19
|
||||||
|
- 20
|
||||||
|
- 21
|
||||||
|
- 22
|
||||||
|
- 23
|
||||||
|
- 24
|
||||||
|
- 25
|
||||||
|
- 26
|
||||||
|
- 27
|
||||||
|
- 28
|
||||||
|
- 29
|
||||||
|
- 30
|
||||||
|
- 31
|
||||||
|
- 32
|
||||||
|
- 33
|
||||||
|
- 34
|
||||||
|
- 35
|
||||||
|
- 36
|
||||||
|
- 37
|
||||||
|
- 38
|
||||||
|
- 39
|
||||||
|
- 40
|
||||||
|
- 41
|
||||||
|
- 42
|
||||||
|
- 43
|
||||||
|
- 44
|
||||||
|
- 45
|
||||||
|
- 46
|
||||||
|
- 47
|
||||||
|
- 48
|
||||||
|
- 49
|
||||||
|
- 50
|
||||||
|
- 51
|
||||||
|
- 52
|
||||||
|
- 53
|
||||||
|
- 54
|
||||||
|
- 55
|
||||||
|
- 56
|
||||||
|
- 57
|
||||||
|
- 58
|
||||||
|
- 59
|
||||||
|
- 60
|
||||||
|
- 65
|
||||||
|
- 70
|
||||||
|
- 75
|
||||||
|
- 80
|
||||||
|
- 85
|
||||||
|
- 90
|
||||||
|
- 95
|
||||||
|
- 100
|
||||||
|
- 105
|
||||||
|
- 110
|
||||||
|
- 115
|
||||||
|
- 120
|
||||||
|
- 150
|
||||||
|
- 180
|
||||||
|
- 210
|
||||||
|
- 240
|
||||||
|
- 270
|
||||||
|
- 300
|
||||||
- name: certificate_manager_client_ttl_seconds
|
- name: certificate_manager_client_ttl_seconds
|
||||||
subsystem: kubelet
|
subsystem: kubelet
|
||||||
help: Gauge of the TTL (time-to-live) of the Kubelet's client certificate. The value
|
help: Gauge of the TTL (time-to-live) of the Kubelet's client certificate. The value
|
||||||
|
Loading…
Reference in New Issue
Block a user