update monitoring stack to latest
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
7a98de6d1f
commit
301e297d45
|
@ -18,7 +18,7 @@
|
|||
"subdir": "Documentation/etcd-mixin"
|
||||
}
|
||||
},
|
||||
"version": "4a64198a9f424549c64d6c2eeb92eed8ff3a7bd8",
|
||||
"version": "ab494956bffb94b5e5cb088cebcf7572aad70d4a",
|
||||
"sum": "pk7mLpdUrHuJKkj2vhD6LGMU7P+oYYooBXAeZyZa398="
|
||||
},
|
||||
{
|
||||
|
@ -28,8 +28,8 @@
|
|||
"subdir": "jsonnet/kube-prometheus"
|
||||
}
|
||||
},
|
||||
"version": "d07466766d46710e54a627f913eea5661382331a",
|
||||
"sum": "vFv2xVX1SALKIOlQmcIvQ2pDKXqAbdBJ6zdGIrZUcis="
|
||||
"version": "f58d7b5695072bfcc15039969fd491a90b011aa8",
|
||||
"sum": "0LX0oFnq5YHb3XNWxoakJiJQWFkf38bEWA1226nk0BU="
|
||||
},
|
||||
{
|
||||
"source": {
|
||||
|
@ -38,8 +38,8 @@
|
|||
"subdir": "jsonnet/prometheus-operator"
|
||||
}
|
||||
},
|
||||
"version": "00cbd4911f931380cf9e19d771d7ebae1ec0a807",
|
||||
"sum": "PfB8G2nfy3e/BrXS1ayymsRRFJvQLWT+oY5aqLS0tE8="
|
||||
"version": "d0a871b710de7b764c05ced98dbd1eb32a681790",
|
||||
"sum": "cIOKRTNBUOl3a+QsaA/NjClmZAhyVJHlDFReKlXJBAs="
|
||||
},
|
||||
{
|
||||
"source": {
|
||||
|
@ -48,8 +48,8 @@
|
|||
"subdir": "grafonnet"
|
||||
}
|
||||
},
|
||||
"version": "f1ceb29c053445881cf47c8761225d463273f7e2",
|
||||
"sum": "PQ1u4FqaLkqmYF1tE/BNx6Db8roTei0uqo+SKCwRlbo="
|
||||
"version": "7f971cae3e4dc5dc26d1a1991868e4810f73d6fb",
|
||||
"sum": "/7/gQuDrIcbpbpFCMWhe63RtZ66iT5ECTlJdhVTtUTM="
|
||||
},
|
||||
{
|
||||
"source": {
|
||||
|
@ -58,7 +58,7 @@
|
|||
"subdir": "grafana-builder"
|
||||
}
|
||||
},
|
||||
"version": "d851699bb178b62deabb5532cdb9e48c1a83b1b9",
|
||||
"version": "461d09cbda1bf520f94628c8159b444d4467862f",
|
||||
"sum": "slxrtftVDiTlQK22ertdfrg4Epnq97gdrLI63ftUfaE="
|
||||
},
|
||||
{
|
||||
|
@ -79,8 +79,8 @@
|
|||
"subdir": ""
|
||||
}
|
||||
},
|
||||
"version": "90a6d132e3c9558c0690153c9b404b16b4754139",
|
||||
"sum": "RZn1B0sbrPEKenxKIrXGdDN3NGb9OesQ+IA5whAP4ik="
|
||||
"version": "37f8263d17bc9d429fece3d345365650587bc56c",
|
||||
"sum": "n8CG7muquuYMFV03s5D3GA1JVyDLSFifcNRs2JpNfvA="
|
||||
},
|
||||
{
|
||||
"source": {
|
||||
|
@ -89,7 +89,7 @@
|
|||
"subdir": "lib/promgrafonnet"
|
||||
}
|
||||
},
|
||||
"version": "90a6d132e3c9558c0690153c9b404b16b4754139",
|
||||
"version": "37f8263d17bc9d429fece3d345365650587bc56c",
|
||||
"sum": "VhgBM39yv0f4bKv8VfGg4FXkg573evGDRalip9ypKbc="
|
||||
},
|
||||
{
|
||||
|
@ -99,7 +99,7 @@
|
|||
"subdir": "jsonnet/kube-state-metrics"
|
||||
}
|
||||
},
|
||||
"version": "765afc98be4b2a53b3b12c48df2cf93379932a29",
|
||||
"version": "1d132e7e728face5ba35be3f3310139c98f3a001",
|
||||
"sum": "cJjGZaLBjcIGrLHZLjRPU9c3KL+ep9rZTb9dbALSKqA="
|
||||
},
|
||||
{
|
||||
|
@ -109,7 +109,7 @@
|
|||
"subdir": "jsonnet/kube-state-metrics-mixin"
|
||||
}
|
||||
},
|
||||
"version": "765afc98be4b2a53b3b12c48df2cf93379932a29",
|
||||
"version": "1d132e7e728face5ba35be3f3310139c98f3a001",
|
||||
"sum": "E1GGavnf9PCWBm4WVrxWnc0FIj72UcbcweqGioWrOdU="
|
||||
},
|
||||
{
|
||||
|
@ -129,7 +129,7 @@
|
|||
"subdir": "documentation/prometheus-mixin"
|
||||
}
|
||||
},
|
||||
"version": "0e2004f6fbe9eeddcd0c0084e401b5acb61760a4",
|
||||
"version": "da217cbde262c056e5582a56d0ef7d353f7a163b",
|
||||
"sum": "kRb3XBTe/AALDcaTFfyuiKqzhxtLvihBkVkvJ5cUd/I=",
|
||||
"name": "prometheus"
|
||||
},
|
||||
|
|
|
@ -6,7 +6,7 @@ metadata:
|
|||
namespace: monitoring
|
||||
spec:
|
||||
encryptedData:
|
||||
alertmanager.yaml: AgB6MMnL2RsryYbKhQIyJvqXopB4wtUdotRShqk32jFScXUaJKMxPFF8t1Uhwpt1UPcjdrzOElEdHVX9nYj2LK+KGa23L5IV6ZACfjFLbHsn2PHA/kWDNCS7hLaAahSO2ByfoAnoGQp8OejsYDCSsp4NtkM+ooNgw1mGbO/yVNZZRDzccVLZFwJchsR0+26KEqzL3eHtsG40e7lf71uxBgYhvggukEeDfuuPDkKG4YeFJSQ7clURFhckbe+/MmnP+MHw7K9xkdlANl4Tu+e2+njm32PuZ34PKUrLQJBFSHG3DpGjPJBxBZbV7GP+T+VK5GQHrUZOewjgp5e4fDrqZvOVoASPJqY1C961bLjhwsTC8uzdJVHE78LR29hWnjlDBEbQdNsGwDoAHG0yBiC5N0rWfm+XNLh1+e96IF4OKp0/BVqNJaxrs6jlmTDMQEp4Q8JwVTqNSKfFr2jMMW0uI3ggqPAXnWDsLWLd9pD6gpbqGHELmG7dmPi2FQWBlnLXf4VllFbYzRpLZ12hKILBzWuhY6OkCSXfb/bbLyfxyjO8rWvgKxcm9RpjdwtiU4+wT6KKc1/x9nSvqqgaXq81ecHZr8EbJz6nAE/+0Qm1WhQ5wB89RtbX0K4D3i0e7P7JEB3mrSwdSxUd1JLyVKesWKwDiIiwpA7ljD6cTgmLS/00be1eHreqSJ0SLSODBkIadIH4Kc0tyO3/dbdRTkQC3pTQp5q7gVfJzPEGcmZFG0OUHHDXgigS4VUDalpTnaXXDj0Gjuq0+rf1Gu3ZuVC1QKwZ3W26eUrUz4NLtRDtJNYTgsrtJs+T3T3iQHjoO53vTp1TFDX6zGTaJd7yzis5CZWVIn4K8t1rcR/MexzR/Dk46HBLVJXuL0uN17RvFuKsCIFy0rR0BH8qbmWUwiqEfjDG4csBPgH5xAHWGVJHfPStILSZbDoZ/twms391umr+eVeZrSyjgb/W9MSsikqTJaMRH6gHByqljm5/fdmnF3G+Pe6wT8UTM4E1gSOwfmVaow2sqLCT0wdL/ZVOaJBPIG5MIBS7nSQ9nMsDVCmQp7TUD/XNp0M9hYB96AbJOElONQq+0aPzfMgyZElsAMO6Odkr8FBSitMe8lSz2WJvjF7XWPvOQrj1eaXOwNKawArvBjwMqEX5lnMcjHKFgSAOzeWjcEdnTFpifg6kmQn9hO2HKwNggXO8evT9undrnm8qj6vPcc+oXEgs2RlYk5pHUbf4V+O1KxVSBWJCIC2sXyacHI3Emkb5qkTw+Wv4BXla2JJSbLWn9o1hgOI88xpyZpnFG4A1Y/XVQa2002TFccF78UjxcFSA2c1XL0uQxJFkERNxwinrCPjXqA1i7CnCYH53ZpAGj/TqwAzZSZ1FN3L1s+Ro0ASiN/92ppeHhXGPhhTLhj1i4rr2qQ1XhixDSMQLgctAN0ebe2lnjG07yZodRaZbHHl4GfYfcxLCqemwHg5xVzbS4XP+70/hoWes9UVygK9rkzTUUN9IbbtZpgpGplnT3MymbqbYbrlAU59U/vSpxS6K3RUiTMz5IK6p5u7baMYeVuthUy3LU9r07P+vicwAlEQ6jEWKXQD1Q/Vhc5H0wUgZrTBcgo2w9JwT4QUhO1qzIKiUmMEWn1bDh1GaurRZtMRgjP5sfWGMGtUqMCVmAZvUbYsr8k6+1nn93xmn78QNOabtth8Ayfp6vHYeF4h3xA==
|
||||
alertmanager.yaml: AgBXsELNPdwcMBR9vl4ZCj18D3aQHjsVXITCD2cshBl+o9fKHUkCYg2u9TOvt26Osi1rLo9ZV1QZthNBbp/65g+0l9lUXbWMeCHy80fCc0ISWf1+MN+L6Yeh71sNYY81HfaLoDWY48roanGN4IIF0hcEryVKfY9gOUzDkEag7ZY4lJ60/irUzUlTIEdak6IlwzGKpaokn0yitpbYRR1rkxIpdQ7jVJhCE5fSEw0xXU7NYuqOpKeYEZkHFCEMnLVnzIAVtMpJ0asLTnRFIj4hZa13USsX/Lm98Q41QTO0FpTNMurlCLgQPDTI5pdKJzyDFFOsMBwscO5T35ykXHcybsf6ykZ12gOlfhjfbU746/jCB3j5H0pGLmTRS1kChGaJOLpyXyTQeGpk79aJKOyn2ZaLxLpkfgFlK6amLH8QfOUJSTiCWvpMks38wnWlYKngT36kogUROY/72vBJKrz1bMkwOR+4ed4i+3KV/6K6d6vcMemmrXtgT8Z+2656vjLTDDIM1ztogACDI+urS49OigXiutzJlqbMGh2/IcSOeDaFO42qe1m4fDONAs4t0asuXmBv+eYbFffyRxVzkt5Or8jX1UUuy3ynzwHjjA+/PCVo5co32oL+kKQtM2FdYaNoHcikSNDog/XkUaTetE6WQAyS8o5+fT6SitirGOmQJyazYW71QT6O1aBW0vhowhcsvHxsV/5sfhZ7+M1SAdn/gI3VEYS46NNk4U3jg2u6JAXNbE4nObevS71HqcSRQjyPR+Od1DuCYiUm6HBk2lsIOZOstcLrhRpiKH7fNzEIlZUsWPwrosWMB+quks8tb1E2Xy4y8DkIyQ4hK9frNOfvORavjNUaBphw55A0/Bb9iXRIZ51KbtpqtEJWzO9Fhbu0iEoYLnkzx1h8JbSy+oHjPRIZJAwMdtLoWfc5liMrYaQu5/Y6qWWinnmZRKusQJLSgQIBcWQsJjwLZbbL/wvUU9Un6BBsMbH8sHdmqh1a8QPspFwFmOcxWWNrloHgACQfkDoh27LnMCFa7qloKI4JsQcp3uASiaOUEaU1Zidty3Y2zc8pvTY5iJhiagXIm7AnJLPzpmApqd6rniuan4IqR/rRW1yKXzvgRFW1B05tKSlg4XaZ87safhG8AAE2v0m3AStD7B68Ol7LGusGBiJcPJeGrDYWXae4TG+QcESdJ1GeulERjGtCgDvqCl/ylNYsR9Ud3wwk773JkIaq72OAi02pT01iruLYKAKIGZUyZOAwmWbkLvAMPB6HdKOq/oP/7uaylZu8YeuIFmj5gxv1fU2NQZecFQOwMww0D++6P8AhHRIeagSBAg3XFXhTNIzmOhqawdGNru2pfWSIBM32cGuJOdRQB+tYcEnaB/OFFSfAaiMbMTIgHhxHTHujPvyHIUXzG9CXSca+XjflP7e4KiBk3ztunWFlX/Dc42XHMIH+4vGTgYsMhZJl9Dyou/417Tr40vaSFQqfn6TaYQxH4zYbZt3dL3n9VtNlMRfPRDyjHEcuRib1DPPU4soI5jTVN6irfZ27IqFQNSqHsEBhhUV29M5T9UpuAhxR6l1O0WFEnumJbm4U72PEA2v5L/ooR4yKdO3/61MbCYjgI+nfFkxkj1Zd1yx789byhj5zeJCnTXw0SJvpSYCcQAAwd3a54qwO341NMwwKhvG57gBCy4j6fMtQY78fwbCFdCfGX7kKYfjdaw==
|
||||
template:
|
||||
metadata:
|
||||
creationTimestamp: null
|
||||
|
|
|
@ -25,7 +25,7 @@ spec:
|
|||
- --metrics-relist-interval=1m
|
||||
- --prometheus-url=http://prometheus-k8s.monitoring.svc:9090/
|
||||
- --secure-port=6443
|
||||
image: quay.io/coreos/k8s-prometheus-adapter-amd64:v0.5.0
|
||||
image: quay.io/coreos/k8s-prometheus-adapter-amd64:v0.7.0
|
||||
name: prometheus-adapter
|
||||
ports:
|
||||
- containerPort: 6443
|
||||
|
|
|
@ -4,7 +4,7 @@ metadata:
|
|||
labels:
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/name: prometheus-operator
|
||||
app.kubernetes.io/version: v0.38.1
|
||||
app.kubernetes.io/version: v0.39.0
|
||||
name: prometheus-operator
|
||||
namespace: monitoring
|
||||
spec:
|
||||
|
@ -19,4 +19,4 @@ spec:
|
|||
matchLabels:
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/name: prometheus-operator
|
||||
app.kubernetes.io/version: v0.38.1
|
||||
app.kubernetes.io/version: v0.39.0
|
||||
|
|
|
@ -524,31 +524,31 @@ spec:
|
|||
sum by (cluster, namespace, pod, container) (
|
||||
rate(container_cpu_usage_seconds_total{job="kubelet", metrics_path="/metrics/cadvisor", image!="", container!="POD"}[5m])
|
||||
) * on (cluster, namespace, pod) group_left(node) topk by (cluster, namespace, pod) (
|
||||
1, max by(cluster, namespace, pod, node) (kube_pod_info)
|
||||
1, max by(cluster, namespace, pod, node) (kube_pod_info{node!=""})
|
||||
)
|
||||
record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate
|
||||
- expr: |
|
||||
container_memory_working_set_bytes{job="kubelet", metrics_path="/metrics/cadvisor", image!=""}
|
||||
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
||||
max by(namespace, pod, node) (kube_pod_info)
|
||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
||||
)
|
||||
record: node_namespace_pod_container:container_memory_working_set_bytes
|
||||
- expr: |
|
||||
container_memory_rss{job="kubelet", metrics_path="/metrics/cadvisor", image!=""}
|
||||
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
||||
max by(namespace, pod, node) (kube_pod_info)
|
||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
||||
)
|
||||
record: node_namespace_pod_container:container_memory_rss
|
||||
- expr: |
|
||||
container_memory_cache{job="kubelet", metrics_path="/metrics/cadvisor", image!=""}
|
||||
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
||||
max by(namespace, pod, node) (kube_pod_info)
|
||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
||||
)
|
||||
record: node_namespace_pod_container:container_memory_cache
|
||||
- expr: |
|
||||
container_memory_swap{job="kubelet", metrics_path="/metrics/cadvisor", image!=""}
|
||||
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
||||
max by(namespace, pod, node) (kube_pod_info)
|
||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
||||
)
|
||||
record: node_namespace_pod_container:container_memory_swap
|
||||
- expr: |
|
||||
|
@ -663,12 +663,12 @@ spec:
|
|||
- name: node.rules
|
||||
rules:
|
||||
- expr: |
|
||||
sum(min(kube_pod_info) by (cluster, node))
|
||||
sum(min(kube_pod_info{node!=""}) by (cluster, node))
|
||||
record: ':kube_pod_info_node_count:'
|
||||
- expr: |
|
||||
topk by(namespace, pod) (1,
|
||||
max by (node, namespace, pod) (
|
||||
label_replace(kube_pod_info{job="kube-state-metrics"}, "pod", "$1", "pod", "(.*)")
|
||||
label_replace(kube_pod_info{job="kube-state-metrics",node!=""}, "pod", "$1", "pod", "(.*)")
|
||||
))
|
||||
record: 'node_namespace_pod:kube_pod_info:'
|
||||
- expr: |
|
||||
|
@ -977,7 +977,7 @@ spec:
|
|||
}}) is restarting {{ printf "%.2f" $value }} times / 5 minutes.
|
||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubepodcrashlooping
|
||||
expr: |
|
||||
rate(kube_pod_container_status_restarts_total{job="kube-state-metrics"}[15m]) * 60 * 5 > 0
|
||||
rate(kube_pod_container_status_restarts_total{job="kube-state-metrics"}[5m]) * 60 * 5 > 0
|
||||
for: 15m
|
||||
labels:
|
||||
severity: warning
|
||||
|
@ -987,7 +987,13 @@ spec:
|
|||
state for longer than 15 minutes.
|
||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubepodnotready
|
||||
expr: |
|
||||
sum by (namespace, pod) (max by(namespace, pod) (kube_pod_status_phase{job="kube-state-metrics", phase=~"Pending|Unknown"}) * on(namespace, pod) group_left(owner_kind) max by(namespace, pod, owner_kind) (kube_pod_owner{owner_kind!="Job"})) > 0
|
||||
sum by (namespace, pod) (
|
||||
max by(namespace, pod) (
|
||||
kube_pod_status_phase{job="kube-state-metrics", phase=~"Pending|Unknown"}
|
||||
) * on(namespace, pod) group_left(owner_kind) topk by(namespace, pod) (
|
||||
1, max by(namespace, pod, owner_kind) (kube_pod_owner{owner_kind!="Job"})
|
||||
)
|
||||
) > 0
|
||||
for: 15m
|
||||
labels:
|
||||
severity: warning
|
||||
|
@ -1472,8 +1478,7 @@ spec:
|
|||
message: '{{ $labels.node }} is unreachable and some workloads may be rescheduled.'
|
||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubenodeunreachable
|
||||
expr: |
|
||||
kube_node_spec_taint{job="kube-state-metrics",key="node.kubernetes.io/unreachable",effect="NoSchedule"} == 1
|
||||
for: 2m
|
||||
(kube_node_spec_taint{job="kube-state-metrics",key="node.kubernetes.io/unreachable",effect="NoSchedule"} unless ignoring(key,value) kube_node_spec_taint{job="kube-state-metrics",key="ToBeDeletedByClusterAutoscaler"}) == 1
|
||||
labels:
|
||||
severity: warning
|
||||
- alert: KubeletTooManyPods
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,4 @@
|
|||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
|
@ -13,7 +13,9 @@ spec:
|
|||
plural: podmonitors
|
||||
singular: podmonitor
|
||||
scope: Namespaced
|
||||
validation:
|
||||
versions:
|
||||
- name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: PodMonitor defines monitoring for a set of pods.
|
||||
properties:
|
||||
|
@ -53,8 +55,8 @@ spec:
|
|||
podMetricsEndpoints:
|
||||
description: A list of endpoints allowed as part of this PodMonitor.
|
||||
items:
|
||||
description: PodMetricsEndpoint defines a scrapeable endpoint of a
|
||||
Kubernetes Pod serving Prometheus metrics.
|
||||
description: PodMetricsEndpoint defines a scrapeable endpoint of
|
||||
a Kubernetes Pod serving Prometheus metrics.
|
||||
properties:
|
||||
honorLabels:
|
||||
description: HonorLabels chooses the metric's labels on collisions
|
||||
|
@ -68,20 +70,21 @@ spec:
|
|||
description: Interval at which metrics should be scraped
|
||||
type: string
|
||||
metricRelabelings:
|
||||
description: MetricRelabelConfigs to apply to samples before ingestion.
|
||||
description: MetricRelabelConfigs to apply to samples before
|
||||
ingestion.
|
||||
items:
|
||||
description: 'RelabelConfig allows dynamic rewriting of the
|
||||
label set, being applied to samples before ingestion. It defines
|
||||
`<metric_relabel_configs>`-section of Prometheus configuration.
|
||||
More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
|
||||
label set, being applied to samples before ingestion. It
|
||||
defines `<metric_relabel_configs>`-section of Prometheus
|
||||
configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
|
||||
properties:
|
||||
action:
|
||||
description: Action to perform based on regex matching.
|
||||
Default is 'replace'
|
||||
type: string
|
||||
modulus:
|
||||
description: Modulus to take of the hash of the source label
|
||||
values.
|
||||
description: Modulus to take of the hash of the source
|
||||
label values.
|
||||
format: int64
|
||||
type: integer
|
||||
regex:
|
||||
|
@ -100,8 +103,8 @@ spec:
|
|||
sourceLabels:
|
||||
description: The source labels select values from existing
|
||||
labels. Their content is concatenated using the configured
|
||||
separator and matched against the configured regular expression
|
||||
for the replace, keep, and drop actions.
|
||||
separator and matched against the configured regular
|
||||
expression for the replace, keep, and drop actions.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
|
@ -135,17 +138,17 @@ spec:
|
|||
More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'
|
||||
items:
|
||||
description: 'RelabelConfig allows dynamic rewriting of the
|
||||
label set, being applied to samples before ingestion. It defines
|
||||
`<metric_relabel_configs>`-section of Prometheus configuration.
|
||||
More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
|
||||
label set, being applied to samples before ingestion. It
|
||||
defines `<metric_relabel_configs>`-section of Prometheus
|
||||
configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
|
||||
properties:
|
||||
action:
|
||||
description: Action to perform based on regex matching.
|
||||
Default is 'replace'
|
||||
type: string
|
||||
modulus:
|
||||
description: Modulus to take of the hash of the source label
|
||||
values.
|
||||
description: Modulus to take of the hash of the source
|
||||
label values.
|
||||
format: int64
|
||||
type: integer
|
||||
regex:
|
||||
|
@ -164,8 +167,8 @@ spec:
|
|||
sourceLabels:
|
||||
description: The source labels select values from existing
|
||||
labels. Their content is concatenated using the configured
|
||||
separator and matched against the configured regular expression
|
||||
for the replace, keep, and drop actions.
|
||||
separator and matched against the configured regular
|
||||
expression for the replace, keep, and drop actions.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
|
@ -208,24 +211,25 @@ spec:
|
|||
description: matchExpressions is a list of label selector requirements.
|
||||
The requirements are ANDed.
|
||||
items:
|
||||
description: A label selector requirement is a selector that contains
|
||||
values, a key, and an operator that relates the key and values.
|
||||
description: A label selector requirement is a selector that
|
||||
contains values, a key, and an operator that relates the key
|
||||
and values.
|
||||
properties:
|
||||
key:
|
||||
description: key is the label key that the selector applies
|
||||
to.
|
||||
type: string
|
||||
operator:
|
||||
description: operator represents a key's relationship to a
|
||||
set of values. Valid operators are In, NotIn, Exists and
|
||||
DoesNotExist.
|
||||
description: operator represents a key's relationship to
|
||||
a set of values. Valid operators are In, NotIn, Exists
|
||||
and DoesNotExist.
|
||||
type: string
|
||||
values:
|
||||
description: values is an array of string values. If the operator
|
||||
is In or NotIn, the values array must be non-empty. If the
|
||||
operator is Exists or DoesNotExist, the values array must
|
||||
be empty. This array is replaced during a strategic merge
|
||||
patch.
|
||||
description: values is an array of string values. If the
|
||||
operator is In or NotIn, the values array must be non-empty.
|
||||
If the operator is Exists or DoesNotExist, the values
|
||||
array must be empty. This array is replaced during a strategic
|
||||
merge patch.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
|
@ -239,8 +243,8 @@ spec:
|
|||
type: string
|
||||
description: matchLabels is a map of {key,value} pairs. A single
|
||||
{key,value} in the matchLabels map is equivalent to an element
|
||||
of matchExpressions, whose key field is "key", the operator is
|
||||
"In", and the values array contains only "value". The requirements
|
||||
of matchExpressions, whose key field is "key", the operator
|
||||
is "In", and the values array contains only "value". The requirements
|
||||
are ANDed.
|
||||
type: object
|
||||
type: object
|
||||
|
@ -251,9 +255,6 @@ spec:
|
|||
required:
|
||||
- spec
|
||||
type: object
|
||||
version: v1
|
||||
versions:
|
||||
- name: v1
|
||||
served: true
|
||||
storage: true
|
||||
status:
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,4 @@
|
|||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
|
@ -13,7 +13,9 @@ spec:
|
|||
plural: prometheusrules
|
||||
singular: prometheusrule
|
||||
scope: Namespaced
|
||||
validation:
|
||||
versions:
|
||||
- name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: PrometheusRule defines alerting rules for a Prometheus instance
|
||||
properties:
|
||||
|
@ -36,8 +38,8 @@ spec:
|
|||
description: Content of Prometheus rule file
|
||||
items:
|
||||
description: 'RuleGroup is a list of sequentially evaluated recording
|
||||
and alerting rules. Note: PartialResponseStrategy is only used by
|
||||
ThanosRuler and will be ignored by Prometheus instances. Valid
|
||||
and alerting rules. Note: PartialResponseStrategy is only used
|
||||
by ThanosRuler and will be ignored by Prometheus instances. Valid
|
||||
values for this field are ''warn'' or ''abort''. More info: https://github.com/thanos-io/thanos/blob/master/docs/components/rule.md#partial-response'
|
||||
properties:
|
||||
interval:
|
||||
|
@ -82,9 +84,6 @@ spec:
|
|||
required:
|
||||
- spec
|
||||
type: object
|
||||
version: v1
|
||||
versions:
|
||||
- name: v1
|
||||
served: true
|
||||
storage: true
|
||||
status:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
|
@ -13,7 +13,9 @@ spec:
|
|||
plural: servicemonitors
|
||||
singular: servicemonitor
|
||||
scope: Namespaced
|
||||
validation:
|
||||
versions:
|
||||
- name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: ServiceMonitor defines monitoring for a set of services.
|
||||
properties:
|
||||
|
@ -44,8 +46,8 @@ spec:
|
|||
basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints'
|
||||
properties:
|
||||
password:
|
||||
description: The secret in the service monitor namespace that
|
||||
contains the password for authentication.
|
||||
description: The secret in the service monitor namespace
|
||||
that contains the password for authentication.
|
||||
properties:
|
||||
key:
|
||||
description: The key of the secret to select from. Must
|
||||
|
@ -63,8 +65,8 @@ spec:
|
|||
- key
|
||||
type: object
|
||||
username:
|
||||
description: The secret in the service monitor namespace that
|
||||
contains the username for authentication.
|
||||
description: The secret in the service monitor namespace
|
||||
that contains the username for authentication.
|
||||
properties:
|
||||
key:
|
||||
description: The key of the secret to select from. Must
|
||||
|
@ -91,16 +93,16 @@ spec:
|
|||
service monitor and accessible by the Prometheus Operator.
|
||||
properties:
|
||||
key:
|
||||
description: The key of the secret to select from. Must be
|
||||
a valid secret key.
|
||||
description: The key of the secret to select from. Must
|
||||
be a valid secret key.
|
||||
type: string
|
||||
name:
|
||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||
type: string
|
||||
optional:
|
||||
description: Specify whether the Secret or its key must be
|
||||
defined
|
||||
description: Specify whether the Secret or its key must
|
||||
be defined
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
|
@ -117,20 +119,21 @@ spec:
|
|||
description: Interval at which metrics should be scraped
|
||||
type: string
|
||||
metricRelabelings:
|
||||
description: MetricRelabelConfigs to apply to samples before ingestion.
|
||||
description: MetricRelabelConfigs to apply to samples before
|
||||
ingestion.
|
||||
items:
|
||||
description: 'RelabelConfig allows dynamic rewriting of the
|
||||
label set, being applied to samples before ingestion. It defines
|
||||
`<metric_relabel_configs>`-section of Prometheus configuration.
|
||||
More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
|
||||
label set, being applied to samples before ingestion. It
|
||||
defines `<metric_relabel_configs>`-section of Prometheus
|
||||
configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
|
||||
properties:
|
||||
action:
|
||||
description: Action to perform based on regex matching.
|
||||
Default is 'replace'
|
||||
type: string
|
||||
modulus:
|
||||
description: Modulus to take of the hash of the source label
|
||||
values.
|
||||
description: Modulus to take of the hash of the source
|
||||
label values.
|
||||
format: int64
|
||||
type: integer
|
||||
regex:
|
||||
|
@ -149,8 +152,8 @@ spec:
|
|||
sourceLabels:
|
||||
description: The source labels select values from existing
|
||||
labels. Their content is concatenated using the configured
|
||||
separator and matched against the configured regular expression
|
||||
for the replace, keep, and drop actions.
|
||||
separator and matched against the configured regular
|
||||
expression for the replace, keep, and drop actions.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
|
@ -184,17 +187,17 @@ spec:
|
|||
More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'
|
||||
items:
|
||||
description: 'RelabelConfig allows dynamic rewriting of the
|
||||
label set, being applied to samples before ingestion. It defines
|
||||
`<metric_relabel_configs>`-section of Prometheus configuration.
|
||||
More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
|
||||
label set, being applied to samples before ingestion. It
|
||||
defines `<metric_relabel_configs>`-section of Prometheus
|
||||
configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
|
||||
properties:
|
||||
action:
|
||||
description: Action to perform based on regex matching.
|
||||
Default is 'replace'
|
||||
type: string
|
||||
modulus:
|
||||
description: Modulus to take of the hash of the source label
|
||||
values.
|
||||
description: Modulus to take of the hash of the source
|
||||
label values.
|
||||
format: int64
|
||||
type: integer
|
||||
regex:
|
||||
|
@ -213,8 +216,8 @@ spec:
|
|||
sourceLabels:
|
||||
description: The source labels select values from existing
|
||||
labels. Their content is concatenated using the configured
|
||||
separator and matched against the configured regular expression
|
||||
for the replace, keep, and drop actions.
|
||||
separator and matched against the configured regular
|
||||
expression for the replace, keep, and drop actions.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
|
@ -242,7 +245,8 @@ spec:
|
|||
description: TLS configuration to use when scraping the endpoint
|
||||
properties:
|
||||
ca:
|
||||
description: Stuct containing the CA cert to use for the targets.
|
||||
description: Stuct containing the CA cert to use for the
|
||||
targets.
|
||||
properties:
|
||||
configMap:
|
||||
description: ConfigMap containing data to use for the
|
||||
|
@ -288,8 +292,8 @@ spec:
|
|||
to use for the targets.
|
||||
type: string
|
||||
cert:
|
||||
description: Struct containing the client cert file for the
|
||||
targets.
|
||||
description: Struct containing the client cert file for
|
||||
the targets.
|
||||
properties:
|
||||
configMap:
|
||||
description: ConfigMap containing data to use for the
|
||||
|
@ -401,24 +405,25 @@ spec:
|
|||
description: matchExpressions is a list of label selector requirements.
|
||||
The requirements are ANDed.
|
||||
items:
|
||||
description: A label selector requirement is a selector that contains
|
||||
values, a key, and an operator that relates the key and values.
|
||||
description: A label selector requirement is a selector that
|
||||
contains values, a key, and an operator that relates the key
|
||||
and values.
|
||||
properties:
|
||||
key:
|
||||
description: key is the label key that the selector applies
|
||||
to.
|
||||
type: string
|
||||
operator:
|
||||
description: operator represents a key's relationship to a
|
||||
set of values. Valid operators are In, NotIn, Exists and
|
||||
DoesNotExist.
|
||||
description: operator represents a key's relationship to
|
||||
a set of values. Valid operators are In, NotIn, Exists
|
||||
and DoesNotExist.
|
||||
type: string
|
||||
values:
|
||||
description: values is an array of string values. If the operator
|
||||
is In or NotIn, the values array must be non-empty. If the
|
||||
operator is Exists or DoesNotExist, the values array must
|
||||
be empty. This array is replaced during a strategic merge
|
||||
patch.
|
||||
description: values is an array of string values. If the
|
||||
operator is In or NotIn, the values array must be non-empty.
|
||||
If the operator is Exists or DoesNotExist, the values
|
||||
array must be empty. This array is replaced during a strategic
|
||||
merge patch.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
|
@ -432,8 +437,8 @@ spec:
|
|||
type: string
|
||||
description: matchLabels is a map of {key,value} pairs. A single
|
||||
{key,value} in the matchLabels map is equivalent to an element
|
||||
of matchExpressions, whose key field is "key", the operator is
|
||||
"In", and the values array contains only "value". The requirements
|
||||
of matchExpressions, whose key field is "key", the operator
|
||||
is "In", and the values array contains only "value". The requirements
|
||||
are ANDed.
|
||||
type: object
|
||||
type: object
|
||||
|
@ -450,9 +455,6 @@ spec:
|
|||
required:
|
||||
- spec
|
||||
type: object
|
||||
version: v1
|
||||
versions:
|
||||
- name: v1
|
||||
served: true
|
||||
storage: true
|
||||
status:
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -4,29 +4,9 @@ metadata:
|
|||
labels:
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/name: prometheus-operator
|
||||
app.kubernetes.io/version: v0.38.1
|
||||
app.kubernetes.io/version: v0.39.0
|
||||
name: prometheus-operator
|
||||
rules:
|
||||
- apiGroups:
|
||||
- apiextensions.k8s.io
|
||||
resources:
|
||||
- customresourcedefinitions
|
||||
verbs:
|
||||
- create
|
||||
- apiGroups:
|
||||
- apiextensions.k8s.io
|
||||
resourceNames:
|
||||
- alertmanagers.monitoring.coreos.com
|
||||
- podmonitors.monitoring.coreos.com
|
||||
- prometheuses.monitoring.coreos.com
|
||||
- prometheusrules.monitoring.coreos.com
|
||||
- servicemonitors.monitoring.coreos.com
|
||||
- thanosrulers.monitoring.coreos.com
|
||||
resources:
|
||||
- customresourcedefinitions
|
||||
verbs:
|
||||
- get
|
||||
- update
|
||||
- apiGroups:
|
||||
- monitoring.coreos.com
|
||||
resources:
|
||||
|
|
|
@ -4,7 +4,7 @@ metadata:
|
|||
labels:
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/name: prometheus-operator
|
||||
app.kubernetes.io/version: v0.38.1
|
||||
app.kubernetes.io/version: v0.39.0
|
||||
name: prometheus-operator
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
|
|
|
@ -4,7 +4,7 @@ metadata:
|
|||
labels:
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/name: prometheus-operator
|
||||
app.kubernetes.io/version: v0.38.1
|
||||
app.kubernetes.io/version: v0.39.0
|
||||
name: prometheus-operator
|
||||
namespace: monitoring
|
||||
spec:
|
||||
|
@ -18,15 +18,15 @@ spec:
|
|||
labels:
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/name: prometheus-operator
|
||||
app.kubernetes.io/version: v0.38.1
|
||||
app.kubernetes.io/version: v0.39.0
|
||||
spec:
|
||||
containers:
|
||||
- args:
|
||||
- --kubelet-service=kube-system/kubelet
|
||||
- --logtostderr=true
|
||||
- --config-reloader-image=jimmidyson/configmap-reload:v0.3.0
|
||||
- --prometheus-config-reloader=quay.io/coreos/prometheus-config-reloader:v0.38.1
|
||||
image: quay.io/coreos/prometheus-operator:v0.38.1
|
||||
- --prometheus-config-reloader=quay.io/coreos/prometheus-config-reloader:v0.39.0
|
||||
image: quay.io/coreos/prometheus-operator:v0.39.0
|
||||
name: prometheus-operator
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
|
|
|
@ -4,7 +4,7 @@ metadata:
|
|||
labels:
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/name: prometheus-operator
|
||||
app.kubernetes.io/version: v0.38.1
|
||||
app.kubernetes.io/version: v0.39.0
|
||||
name: prometheus-operator
|
||||
namespace: monitoring
|
||||
spec:
|
||||
|
|
|
@ -4,6 +4,6 @@ metadata:
|
|||
labels:
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/name: prometheus-operator
|
||||
app.kubernetes.io/version: v0.38.1
|
||||
app.kubernetes.io/version: v0.39.0
|
||||
name: prometheus-operator
|
||||
namespace: monitoring
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
"subdir": "jsonnet/prometheus-operator"
|
||||
}
|
||||
},
|
||||
"version": "release-0.38"
|
||||
"version": "release-0.39"
|
||||
},
|
||||
{
|
||||
"source": {
|
||||
|
|
|
@ -134,6 +134,24 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
|
|||
versionPriority: 100,
|
||||
},
|
||||
},
|
||||
customMetricsApiServiceV1Beta2: {
|
||||
apiVersion: 'apiregistration.k8s.io/v1',
|
||||
kind: 'APIService',
|
||||
metadata: {
|
||||
name: 'v1beta2.custom.metrics.k8s.io',
|
||||
},
|
||||
spec: {
|
||||
service: {
|
||||
name: $.prometheusAdapter.service.metadata.name,
|
||||
namespace: $._config.namespace,
|
||||
},
|
||||
group: 'custom.metrics.k8s.io',
|
||||
version: 'v1beta2',
|
||||
insecureSkipTLSVerify: true,
|
||||
groupPriorityMinimum: 100,
|
||||
versionPriority: 200,
|
||||
},
|
||||
},
|
||||
customMetricsClusterRoleServerResources:
|
||||
local clusterRole = k.rbac.v1.clusterRole;
|
||||
local policyRule = clusterRole.rulesType;
|
||||
|
|
|
@ -18,38 +18,7 @@ local configMapList = k3.core.v1.configMapList;
|
|||
kubePrometheus+:: {
|
||||
namespace: k.core.v1.namespace.new($._config.namespace),
|
||||
},
|
||||
prometheusOperator+::
|
||||
{
|
||||
'0alertmanagerCustomResourceDefinition'+: {
|
||||
spec: std.mergePatch(super.spec, {
|
||||
preserveUnknownFields: null,
|
||||
}),
|
||||
},
|
||||
'0prometheusCustomResourceDefinition'+: {
|
||||
spec: std.mergePatch(super.spec, {
|
||||
preserveUnknownFields: null,
|
||||
}),
|
||||
},
|
||||
'0servicemonitorCustomResourceDefinition'+: {
|
||||
spec: std.mergePatch(super.spec, {
|
||||
preserveUnknownFields: null,
|
||||
}),
|
||||
},
|
||||
'0podmonitorCustomResourceDefinition'+: {
|
||||
spec: std.mergePatch(super.spec, {
|
||||
preserveUnknownFields: null,
|
||||
}),
|
||||
},
|
||||
'0prometheusruleCustomResourceDefinition'+: {
|
||||
spec: std.mergePatch(super.spec, {
|
||||
preserveUnknownFields: null,
|
||||
}),
|
||||
},
|
||||
'0thanosrulerCustomResourceDefinition'+: {
|
||||
spec: std.mergePatch(super.spec, {
|
||||
preserveUnknownFields: null,
|
||||
}),
|
||||
},
|
||||
prometheusOperator+:: {
|
||||
service+: {
|
||||
spec+: {
|
||||
ports: [
|
||||
|
|
|
@ -5,7 +5,7 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
|
|||
namespace: 'default',
|
||||
|
||||
versions+:: {
|
||||
prometheusAdapter: 'v0.5.0',
|
||||
prometheusAdapter: 'v0.7.0',
|
||||
},
|
||||
|
||||
imageRepos+:: {
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -15,7 +15,7 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
|
|||
},
|
||||
|
||||
versions+:: {
|
||||
prometheusOperator: 'v0.38.1',
|
||||
prometheusOperator: 'v0.39.0',
|
||||
prometheusConfigReloader: self.prometheusOperator,
|
||||
configmapReloader: 'v0.3.0',
|
||||
},
|
||||
|
@ -64,28 +64,6 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
|
|||
local clusterRole = k.rbac.v1.clusterRole;
|
||||
local policyRule = clusterRole.rulesType;
|
||||
|
||||
local crdCreateRule = policyRule.new() +
|
||||
policyRule.withApiGroups(['apiextensions.k8s.io']) +
|
||||
policyRule.withResources([
|
||||
'customresourcedefinitions',
|
||||
]) +
|
||||
policyRule.withVerbs(['create']);
|
||||
|
||||
local crdMonitoringRule = policyRule.new() +
|
||||
policyRule.withApiGroups(['apiextensions.k8s.io']) +
|
||||
policyRule.withResources([
|
||||
'customresourcedefinitions',
|
||||
]) +
|
||||
policyRule.withResourceNames([
|
||||
'alertmanagers.monitoring.coreos.com',
|
||||
'podmonitors.monitoring.coreos.com',
|
||||
'prometheuses.monitoring.coreos.com',
|
||||
'prometheusrules.monitoring.coreos.com',
|
||||
'servicemonitors.monitoring.coreos.com',
|
||||
'thanosrulers.monitoring.coreos.com',
|
||||
]) +
|
||||
policyRule.withVerbs(['get', 'update']);
|
||||
|
||||
local monitoringRule = policyRule.new() +
|
||||
policyRule.withApiGroups(['monitoring.coreos.com']) +
|
||||
policyRule.withResources([
|
||||
|
@ -146,7 +124,7 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
|
|||
]) +
|
||||
policyRule.withVerbs(['get', 'list', 'watch']);
|
||||
|
||||
local rules = [crdCreateRule, crdMonitoringRule, monitoringRule, appsRule, coreRule, podRule, routingRule, nodeRule, namespaceRule];
|
||||
local rules = [monitoringRule, appsRule, coreRule, podRule, routingRule, nodeRule, namespaceRule];
|
||||
|
||||
clusterRole.new() +
|
||||
clusterRole.mixin.metadata.withLabels(po.commonLabels) +
|
||||
|
|
|
@ -1 +1 @@
|
|||
{"apiVersion":"apiextensions.k8s.io/v1beta1","kind":"CustomResourceDefinition","metadata":{"annotations":{"controller-gen.kubebuilder.io/version":"v0.2.4"},"creationTimestamp":null,"name":"prometheusrules.monitoring.coreos.com"},"spec":{"group":"monitoring.coreos.com","names":{"kind":"PrometheusRule","listKind":"PrometheusRuleList","plural":"prometheusrules","singular":"prometheusrule"},"preserveUnknownFields":false,"scope":"Namespaced","validation":{"openAPIV3Schema":{"description":"PrometheusRule defines alerting rules for a Prometheus instance","properties":{"apiVersion":{"description":"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"metadata":{"type":"object"},"spec":{"description":"Specification of desired alerting rule definitions for Prometheus.","properties":{"groups":{"description":"Content of Prometheus rule file","items":{"description":"RuleGroup is a list of sequentially evaluated recording and alerting rules. Note: PartialResponseStrategy is only used by ThanosRuler and will be ignored by Prometheus instances. Valid values for this field are 'warn' or 'abort'. More info: https://github.com/thanos-io/thanos/blob/master/docs/components/rule.md#partial-response","properties":{"interval":{"type":"string"},"name":{"type":"string"},"partial_response_strategy":{"type":"string"},"rules":{"items":{"description":"Rule describes an alerting or recording rule.","properties":{"alert":{"type":"string"},"annotations":{"additionalProperties":{"type":"string"},"type":"object"},"expr":{"anyOf":[{"type":"integer"},{"type":"string"}],"x-kubernetes-int-or-string":true},"for":{"type":"string"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"record":{"type":"string"}},"required":["expr"],"type":"object"},"type":"array"}},"required":["name","rules"],"type":"object"},"type":"array"}},"type":"object"}},"required":["spec"],"type":"object"}},"version":"v1","versions":[{"name":"v1","served":true,"storage":true}]},"status":{"acceptedNames":{"kind":"","plural":""},"conditions":[],"storedVersions":[]}}
|
||||
{"apiVersion":"apiextensions.k8s.io/v1","kind":"CustomResourceDefinition","metadata":{"annotations":{"controller-gen.kubebuilder.io/version":"v0.2.4"},"creationTimestamp":null,"name":"prometheusrules.monitoring.coreos.com"},"spec":{"group":"monitoring.coreos.com","names":{"kind":"PrometheusRule","listKind":"PrometheusRuleList","plural":"prometheusrules","singular":"prometheusrule"},"scope":"Namespaced","versions":[{"name":"v1","schema":{"openAPIV3Schema":{"description":"PrometheusRule defines alerting rules for a Prometheus instance","properties":{"apiVersion":{"description":"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"metadata":{"type":"object"},"spec":{"description":"Specification of desired alerting rule definitions for Prometheus.","properties":{"groups":{"description":"Content of Prometheus rule file","items":{"description":"RuleGroup is a list of sequentially evaluated recording and alerting rules. Note: PartialResponseStrategy is only used by ThanosRuler and will be ignored by Prometheus instances. Valid values for this field are 'warn' or 'abort'. More info: https://github.com/thanos-io/thanos/blob/master/docs/components/rule.md#partial-response","properties":{"interval":{"type":"string"},"name":{"type":"string"},"partial_response_strategy":{"type":"string"},"rules":{"items":{"description":"Rule describes an alerting or recording rule.","properties":{"alert":{"type":"string"},"annotations":{"additionalProperties":{"type":"string"},"type":"object"},"expr":{"anyOf":[{"type":"integer"},{"type":"string"}],"x-kubernetes-int-or-string":true},"for":{"type":"string"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"record":{"type":"string"}},"required":["expr"],"type":"object"},"type":"array"}},"required":["name","rules"],"type":"object"},"type":"array"}},"type":"object"}},"required":["spec"],"type":"object"}},"served":true,"storage":true}]},"status":{"acceptedNames":{"kind":"","plural":""},"conditions":[],"storedVersions":[]}}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -4,6 +4,8 @@
|
|||
* Currently the only condition type that exists is a Query condition
|
||||
* that allows to specify a query letter, time range and an aggregation function.
|
||||
*
|
||||
* @name alertCondition.new
|
||||
*
|
||||
* @param evaluatorParams Value of threshold
|
||||
* @param evaluatorType Type of threshold
|
||||
* @param operatorType Operator between conditions
|
||||
|
@ -12,6 +14,7 @@
|
|||
* @param queryTimeEnd End of time range
|
||||
* @param reducerParams Params of an aggregation function
|
||||
* @param reducerType Name of an aggregation function
|
||||
*
|
||||
* @return A json that represents a condition of alert
|
||||
*/
|
||||
new(
|
||||
|
|
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/alertlist.libsonnet
generated
vendored
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/alertlist.libsonnet
generated
vendored
|
@ -1,4 +1,7 @@
|
|||
{
|
||||
/**
|
||||
* @name alertlist.new
|
||||
*/
|
||||
new(
|
||||
title='',
|
||||
span=null,
|
||||
|
|
5
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/annotation.libsonnet
generated
vendored
5
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/annotation.libsonnet
generated
vendored
|
@ -9,6 +9,11 @@
|
|||
name: 'Annotations & Alerts',
|
||||
type: 'dashboard',
|
||||
},
|
||||
|
||||
/**
|
||||
* @name annotation.datasource
|
||||
*/
|
||||
|
||||
datasource(
|
||||
name,
|
||||
datasource,
|
||||
|
|
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudwatch.libsonnet
generated
vendored
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudwatch.libsonnet
generated
vendored
|
@ -2,6 +2,8 @@
|
|||
/**
|
||||
* Return a CloudWatch Target
|
||||
*
|
||||
* @name cloudwatch.target
|
||||
*
|
||||
* @param region
|
||||
* @param namespace
|
||||
* @param metric
|
||||
|
|
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashboard.libsonnet
generated
vendored
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashboard.libsonnet
generated
vendored
|
@ -1,6 +1,9 @@
|
|||
local timepickerlib = import 'timepicker.libsonnet';
|
||||
|
||||
{
|
||||
/**
|
||||
* @name dashboard.new
|
||||
*/
|
||||
new(
|
||||
title,
|
||||
editable=false,
|
||||
|
|
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashlist.libsonnet
generated
vendored
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashlist.libsonnet
generated
vendored
|
@ -3,6 +3,8 @@
|
|||
* Returns a new dashlist panel that can be added in a row.
|
||||
* It requires the dashlist panel plugin in grafana, which is built-in.
|
||||
*
|
||||
* @name dashlist.new
|
||||
*
|
||||
* @param title The title of the dashlist panel.
|
||||
* @param description Description of the panel
|
||||
* @param query Query to search by
|
||||
|
|
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/elasticsearch.libsonnet
generated
vendored
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/elasticsearch.libsonnet
generated
vendored
|
@ -1,4 +1,7 @@
|
|||
{
|
||||
/**
|
||||
* @name elasticsearch.target
|
||||
*/
|
||||
target(
|
||||
query,
|
||||
timeField,
|
||||
|
|
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/gauge.libsonnet
generated
vendored
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/gauge.libsonnet
generated
vendored
|
@ -1,4 +1,7 @@
|
|||
{
|
||||
/**
|
||||
* @name gauge.new
|
||||
*/
|
||||
new(
|
||||
title,
|
||||
datasource=null,
|
||||
|
|
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/graph_panel.libsonnet
generated
vendored
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/graph_panel.libsonnet
generated
vendored
|
@ -3,6 +3,8 @@
|
|||
* Returns a new graph panel that can be added in a row.
|
||||
* It requires the graph panel plugin in grafana, which is built-in.
|
||||
*
|
||||
* @name graphPanel.new
|
||||
*
|
||||
* @param title The title of the graph panel.
|
||||
* @param span Width of the panel
|
||||
* @param datasource Datasource
|
||||
|
|
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/graphite.libsonnet
generated
vendored
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/graphite.libsonnet
generated
vendored
|
@ -2,6 +2,8 @@
|
|||
/**
|
||||
* Return an Graphite Target
|
||||
*
|
||||
* @name graphite.target
|
||||
*
|
||||
* @param target Graphite Query. Nested queries are possible by adding the query reference (refId).
|
||||
* @param targetFull Expanding the @target. Used in nested queries.
|
||||
* @param hide Disable query on graph.
|
||||
|
|
4
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/heatmap_panel.libsonnet
generated
vendored
4
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/heatmap_panel.libsonnet
generated
vendored
|
@ -1,8 +1,10 @@
|
|||
{
|
||||
/*
|
||||
/**
|
||||
* Returns a heatmap panel.
|
||||
* Requires the heatmap panel plugin in Grafana, which is built-in.
|
||||
*
|
||||
* @name heatmapPanel.new
|
||||
*
|
||||
* @param title The title of the heatmap panel
|
||||
* @param datasource Datasource
|
||||
* @param min_span Min span
|
||||
|
|
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/influxdb.libsonnet
generated
vendored
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/influxdb.libsonnet
generated
vendored
|
@ -2,6 +2,8 @@
|
|||
/**
|
||||
* Return an InfluxDB Target
|
||||
*
|
||||
* @name influxdb.target
|
||||
*
|
||||
* @param query Raw InfluxQL statement
|
||||
* @param alias Alias By pattern
|
||||
* @param datasource Datasource
|
||||
|
|
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/link.libsonnet
generated
vendored
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/link.libsonnet
generated
vendored
|
@ -1,4 +1,7 @@
|
|||
{
|
||||
/**
|
||||
* @name link.dashboards
|
||||
*/
|
||||
dashboards(
|
||||
title,
|
||||
tags,
|
||||
|
|
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/log_panel.libsonnet
generated
vendored
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/log_panel.libsonnet
generated
vendored
|
@ -3,6 +3,8 @@
|
|||
* Returns a new log panel that can be added in a row.
|
||||
* It requires the log panel plugin in grafana, which is built-in.
|
||||
*
|
||||
* @name logPanel.new
|
||||
*
|
||||
* @param title The title of the log panel.
|
||||
* @param span Width of the panel
|
||||
* @param datasource Datasource
|
||||
|
|
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet
generated
vendored
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet
generated
vendored
|
@ -1,4 +1,7 @@
|
|||
{
|
||||
/**
|
||||
* @name loki.target
|
||||
*/
|
||||
target(
|
||||
expr,
|
||||
hide=null,
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
* Returns a new pie chart panel that can be added in a row.
|
||||
* It requires the pie chart panel plugin in grafana, which needs to be explicitly installed.
|
||||
*
|
||||
* @name pieChartPanel.new
|
||||
*
|
||||
* @param title The title of the pie chart panel.
|
||||
* @param description Description of the panel
|
||||
* @param span Width of the panel
|
||||
|
|
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/pluginlist.libsonnet
generated
vendored
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/pluginlist.libsonnet
generated
vendored
|
@ -3,6 +3,8 @@
|
|||
* Returns a new pluginlist panel that can be added in a row.
|
||||
* It requires the pluginlist panel plugin in grafana, which is built-in.
|
||||
*
|
||||
* @name pluginlist.new
|
||||
*
|
||||
* @param title The title of the pluginlist panel.
|
||||
* @param description Description of the panel
|
||||
* @param limit Set maximum items in a list
|
||||
|
|
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/prometheus.libsonnet
generated
vendored
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/prometheus.libsonnet
generated
vendored
|
@ -1,4 +1,7 @@
|
|||
{
|
||||
/**
|
||||
* @name prometheus.target
|
||||
*/
|
||||
target(
|
||||
expr,
|
||||
format='time_series',
|
||||
|
|
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/row.libsonnet
generated
vendored
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/row.libsonnet
generated
vendored
|
@ -1,4 +1,7 @@
|
|||
{
|
||||
/**
|
||||
* @name row.new
|
||||
*/
|
||||
new(
|
||||
title='Dashboard Row',
|
||||
height=null,
|
||||
|
|
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/singlestat.libsonnet
generated
vendored
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/singlestat.libsonnet
generated
vendored
|
@ -1,4 +1,7 @@
|
|||
{
|
||||
/**
|
||||
* @name singlestat.new
|
||||
*/
|
||||
new(
|
||||
title,
|
||||
format='none',
|
||||
|
|
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet
generated
vendored
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet
generated
vendored
|
@ -1,4 +1,7 @@
|
|||
{
|
||||
/**
|
||||
* @name sql.target
|
||||
*/
|
||||
target(
|
||||
rawSql,
|
||||
datasource=null,
|
||||
|
|
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/table_panel.libsonnet
generated
vendored
2
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/table_panel.libsonnet
generated
vendored
|
@ -3,6 +3,8 @@
|
|||
* Returns a new table panel that can be added in a row.
|
||||
* It requires the table panel plugin in grafana, which is built-in.
|
||||
*
|
||||
* @name table.new
|
||||
*
|
||||
* @param title The title of the graph panel.
|
||||
* @param span Width of the panel
|
||||
* @param height Height of the panel
|
||||
|
|
15
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/template.libsonnet
generated
vendored
15
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/template.libsonnet
generated
vendored
|
@ -1,4 +1,7 @@
|
|||
{
|
||||
/**
|
||||
* @name template.new
|
||||
*/
|
||||
new(
|
||||
name,
|
||||
datasource,
|
||||
|
@ -34,6 +37,9 @@
|
|||
type: 'query',
|
||||
useTags: false,
|
||||
},
|
||||
/**
|
||||
* @name template.interval
|
||||
*/
|
||||
interval(
|
||||
name,
|
||||
query,
|
||||
|
@ -66,6 +72,9 @@
|
|||
else
|
||||
current,
|
||||
},
|
||||
/**
|
||||
* @name template.datasource
|
||||
*/
|
||||
datasource(
|
||||
name,
|
||||
query,
|
||||
|
@ -97,6 +106,9 @@
|
|||
else
|
||||
refresh,
|
||||
filterAuto(str):: str != 'auto',
|
||||
/**
|
||||
* @name template.custom
|
||||
*/
|
||||
custom(
|
||||
name,
|
||||
query,
|
||||
|
@ -131,6 +143,9 @@
|
|||
query: query,
|
||||
type: 'custom',
|
||||
},
|
||||
/**
|
||||
* @name template.text
|
||||
*/
|
||||
text(
|
||||
name,
|
||||
label=''
|
||||
|
|
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/text.libsonnet
generated
vendored
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/text.libsonnet
generated
vendored
|
@ -1,4 +1,7 @@
|
|||
{
|
||||
/**
|
||||
* @name text.new
|
||||
*/
|
||||
new(
|
||||
title='',
|
||||
span=null,
|
||||
|
|
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/timepicker.libsonnet
generated
vendored
3
monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/timepicker.libsonnet
generated
vendored
|
@ -1,4 +1,7 @@
|
|||
{
|
||||
/**
|
||||
* @name timepicker.new
|
||||
*/
|
||||
new(
|
||||
refresh_intervals=[
|
||||
'5s',
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
rules: [
|
||||
{
|
||||
expr: |||
|
||||
rate(kube_pod_container_status_restarts_total{%(prefixedNamespaceSelector)s%(kubeStateMetricsSelector)s}[15m]) * 60 * 5 > 0
|
||||
rate(kube_pod_container_status_restarts_total{%(prefixedNamespaceSelector)s%(kubeStateMetricsSelector)s}[5m]) * 60 * 5 > 0
|
||||
||| % $._config,
|
||||
labels: {
|
||||
severity: 'warning',
|
||||
|
@ -24,8 +24,18 @@
|
|||
alert: 'KubePodCrashLooping',
|
||||
},
|
||||
{
|
||||
// We wrap kube_pod_owner with the topk() aggregator to ensure that
|
||||
// every (namespace, pod) tuple is unique even if the "owner_kind"
|
||||
// label exists for 2 values. This avoids "many-to-many matching
|
||||
// not allowed" errors when joining with kube_pod_status_phase.
|
||||
expr: |||
|
||||
sum by (namespace, pod) (max by(namespace, pod) (kube_pod_status_phase{%(prefixedNamespaceSelector)s%(kubeStateMetricsSelector)s, phase=~"Pending|Unknown"}) * on(namespace, pod) group_left(owner_kind) max by(namespace, pod, owner_kind) (kube_pod_owner{owner_kind!="Job"})) > 0
|
||||
sum by (namespace, pod) (
|
||||
max by(namespace, pod) (
|
||||
kube_pod_status_phase{%(prefixedNamespaceSelector)s%(kubeStateMetricsSelector)s, phase=~"Pending|Unknown"}
|
||||
) * on(namespace, pod) group_left(owner_kind) topk by(namespace, pod) (
|
||||
1, max by(namespace, pod, owner_kind) (kube_pod_owner{owner_kind!="Job"})
|
||||
)
|
||||
) > 0
|
||||
||| % $._config,
|
||||
labels: {
|
||||
severity: 'warning',
|
||||
|
|
|
@ -24,9 +24,8 @@
|
|||
},
|
||||
{
|
||||
expr: |||
|
||||
kube_node_spec_taint{%(kubeStateMetricsSelector)s,key="node.kubernetes.io/unreachable",effect="NoSchedule"} == 1
|
||||
(kube_node_spec_taint{%(kubeStateMetricsSelector)s,key="node.kubernetes.io/unreachable",effect="NoSchedule"} unless ignoring(key,value) kube_node_spec_taint{%(kubeStateMetricsSelector)s,key="ToBeDeletedByClusterAutoscaler"}) == 1
|
||||
||| % $._config,
|
||||
'for': '2m',
|
||||
labels: {
|
||||
severity: 'warning',
|
||||
},
|
||||
|
|
10
monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/rules/apps.libsonnet
generated
vendored
10
monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/rules/apps.libsonnet
generated
vendored
|
@ -24,7 +24,7 @@
|
|||
sum by (%(clusterLabel)s, namespace, pod, container) (
|
||||
rate(container_cpu_usage_seconds_total{%(cadvisorSelector)s, image!="", container!="POD"}[5m])
|
||||
) * on (%(clusterLabel)s, namespace, pod) group_left(node) topk by (%(clusterLabel)s, namespace, pod) (
|
||||
1, max by(%(clusterLabel)s, namespace, pod, node) (kube_pod_info)
|
||||
1, max by(%(clusterLabel)s, namespace, pod, node) (kube_pod_info{node!=""})
|
||||
)
|
||||
||| % $._config,
|
||||
},
|
||||
|
@ -33,7 +33,7 @@
|
|||
expr: |||
|
||||
container_memory_working_set_bytes{%(cadvisorSelector)s, image!=""}
|
||||
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
||||
max by(namespace, pod, node) (kube_pod_info)
|
||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
||||
)
|
||||
||| % $._config,
|
||||
},
|
||||
|
@ -42,7 +42,7 @@
|
|||
expr: |||
|
||||
container_memory_rss{%(cadvisorSelector)s, image!=""}
|
||||
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
||||
max by(namespace, pod, node) (kube_pod_info)
|
||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
||||
)
|
||||
||| % $._config,
|
||||
},
|
||||
|
@ -51,7 +51,7 @@
|
|||
expr: |||
|
||||
container_memory_cache{%(cadvisorSelector)s, image!=""}
|
||||
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
||||
max by(namespace, pod, node) (kube_pod_info)
|
||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
||||
)
|
||||
||| % $._config,
|
||||
},
|
||||
|
@ -60,7 +60,7 @@
|
|||
expr: |||
|
||||
container_memory_swap{%(cadvisorSelector)s, image!=""}
|
||||
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
||||
max by(namespace, pod, node) (kube_pod_info)
|
||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
||||
)
|
||||
||| % $._config,
|
||||
},
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
// SINCE 2018-02-08
|
||||
record: ':kube_pod_info_node_count:',
|
||||
expr: |||
|
||||
sum(min(kube_pod_info) by (%(clusterLabel)s, node))
|
||||
sum(min(kube_pod_info{node!=""}) by (%(clusterLabel)s, node))
|
||||
||| % $._config,
|
||||
},
|
||||
{
|
||||
|
@ -30,7 +30,7 @@
|
|||
expr: |||
|
||||
topk by(namespace, %(podLabel)s) (1,
|
||||
max by (node, namespace, %(podLabel)s) (
|
||||
label_replace(kube_pod_info{%(kubeStateMetricsSelector)s}, "%(podLabel)s", "$1", "pod", "(.*)")
|
||||
label_replace(kube_pod_info{%(kubeStateMetricsSelector)s,node!=""}, "%(podLabel)s", "$1", "pod", "(.*)")
|
||||
))
|
||||
||| % $._config,
|
||||
},
|
||||
|
|
Reference in a new issue