mirror of
https://github.com/carlosedp/cluster-monitoring.git
synced 2025-07-12 13:46:17 +02:00
Revert jsonnet libraries
This commit is contained in:
parent
7c39bd7493
commit
8882eb5e78
@ -18,8 +18,8 @@
|
|||||||
"subdir": "Documentation/etcd-mixin"
|
"subdir": "Documentation/etcd-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "e007d4f58d49540925e8bac5aa8fedae6bb9d912",
|
"version": "07a74d61cb6c07965c5b594748dc999d1644862b",
|
||||||
"sum": "pk7mLpdUrHuJKkj2vhD6LGMU7P+oYYooBXAeZyZa398="
|
"sum": "Ko3qhNfC2vN/houLh6C0Ryacjv70gl0DVPGU/PQ4OD0="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@ -28,8 +28,8 @@
|
|||||||
"subdir": "jsonnet/kube-prometheus"
|
"subdir": "jsonnet/kube-prometheus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "28332b410a0359a7eb9362d0af4f978bace70242",
|
"version": "285624d8fbef01923f7b9772fe2da21c5698a666",
|
||||||
"sum": "cEMmJvhn8dLnLqUVR0ql/XnwY8Jy3HH0YWIQQRaDD0o="
|
"sum": "npFy3VLHkSDiwUK2DPC9Up4ETD0bMiTpGTXqetH0r4A="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@ -38,8 +38,8 @@
|
|||||||
"subdir": "jsonnet/prometheus-operator"
|
"subdir": "jsonnet/prometheus-operator"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "d0a871b710de7b764c05ced98dbd1eb32a681790",
|
"version": "59bdf55453ba08b4ed7c271cb3c6627058945ed5",
|
||||||
"sum": "cIOKRTNBUOl3a+QsaA/NjClmZAhyVJHlDFReKlXJBAs="
|
"sum": "qwMbUQkdPhAn9Sl4OVLgzmNOuOTnRLUmvv14I0unsa8="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@ -48,8 +48,8 @@
|
|||||||
"subdir": "grafonnet"
|
"subdir": "grafonnet"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "5736b62831d779e28a8344646aee1f72b1fa1d90",
|
"version": "7a932c9cfc6ccdb1efca9535f165e055949be42a",
|
||||||
"sum": "ch97Uqauz7z+9mkOwzRz6JErxgWcQlfuJEEg+XHEadg="
|
"sum": "HbCbHRvgA9a6K5FlOAYOUnErDHnNPWOCYPvDFU++bQE="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@ -58,7 +58,7 @@
|
|||||||
"subdir": "grafana-builder"
|
"subdir": "grafana-builder"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "811ccb022bc2bdcd0b8281ed0a0c858c63e20542",
|
"version": "03da9ea0fc25e621d195fbb218a6bf8593152721",
|
||||||
"sum": "slxrtftVDiTlQK22ertdfrg4Epnq97gdrLI63ftUfaE="
|
"sum": "slxrtftVDiTlQK22ertdfrg4Epnq97gdrLI63ftUfaE="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -79,8 +79,8 @@
|
|||||||
"subdir": ""
|
"subdir": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "2beabb38d3241eb5da5080cbeb648a0cd1e3cbc2",
|
"version": "ea905d25c01ff4364937a2faed248e5f2f3fdb35",
|
||||||
"sum": "s6t8ntlUHAjnifWx5V1jnBukTLPya7fX7YZVxJ0GcTk="
|
"sum": "ww9kAgxtpzRC6y7SiVWH7fWJcptBg3Hde50eXmHzN7U="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@ -89,7 +89,7 @@
|
|||||||
"subdir": "lib/promgrafonnet"
|
"subdir": "lib/promgrafonnet"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "2beabb38d3241eb5da5080cbeb648a0cd1e3cbc2",
|
"version": "ea905d25c01ff4364937a2faed248e5f2f3fdb35",
|
||||||
"sum": "VhgBM39yv0f4bKv8VfGg4FXkg573evGDRalip9ypKbc="
|
"sum": "VhgBM39yv0f4bKv8VfGg4FXkg573evGDRalip9ypKbc="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -99,7 +99,7 @@
|
|||||||
"subdir": "jsonnet/kube-state-metrics"
|
"subdir": "jsonnet/kube-state-metrics"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "6c2701a703c42da95d9a1ef765c5713832df1858",
|
"version": "c485728b2e585bd1079e12e462cd7c6fef25f155",
|
||||||
"sum": "cJjGZaLBjcIGrLHZLjRPU9c3KL+ep9rZTb9dbALSKqA="
|
"sum": "cJjGZaLBjcIGrLHZLjRPU9c3KL+ep9rZTb9dbALSKqA="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -109,8 +109,18 @@
|
|||||||
"subdir": "jsonnet/kube-state-metrics-mixin"
|
"subdir": "jsonnet/kube-state-metrics-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "6c2701a703c42da95d9a1ef765c5713832df1858",
|
"version": "c485728b2e585bd1079e12e462cd7c6fef25f155",
|
||||||
"sum": "o5avaguRsfFwYFNen00ZEsub1x4i8Z/ZZ2QoEjFMff8="
|
"sum": "E1GGavnf9PCWBm4WVrxWnc0FIj72UcbcweqGioWrOdU="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"git": {
|
||||||
|
"remote": "https://github.com/metalmatze/slo-libsonnet.git",
|
||||||
|
"subdir": "slo-libsonnet"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": "5ddd7ffc39e7a54c9aca997c2c389a8046fab0ff",
|
||||||
|
"sum": "S7/+tnAkzVh8Li7sg7Hu4aeIQAWHCtxhRQ+k1OKjoQk="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@ -119,8 +129,8 @@
|
|||||||
"subdir": "docs/node-mixin"
|
"subdir": "docs/node-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "b8847b5b3237c18aa25426fccb3d69a9bdff6ee1",
|
"version": "0107bc794204f50d887898da60032da890637471",
|
||||||
"sum": "3jFV2qsc/GZe2GADswTYqxxP2zGOiANTj73W/VNFGqc="
|
"sum": "VKdF0zPMSCiuIuXWblSz2VOeBaXzQ7fp40vz9sxj+Bo="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@ -129,8 +139,8 @@
|
|||||||
"subdir": "documentation/prometheus-mixin"
|
"subdir": "documentation/prometheus-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "1f69c38ba4c104520732d416de2894052806cea7",
|
"version": "012161d90d6a8a6bb930b90601fb89ff6cc3ae60",
|
||||||
"sum": "kRb3XBTe/AALDcaTFfyuiKqzhxtLvihBkVkvJ5cUd/I=",
|
"sum": "5EUgr6Spr1zNR8Y2/NevjvEkGV9WMvKo6nEScNER1Lc=",
|
||||||
"name": "prometheus"
|
"name": "prometheus"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
|||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
@ -13,248 +13,248 @@ spec:
|
|||||||
plural: podmonitors
|
plural: podmonitors
|
||||||
singular: podmonitor
|
singular: podmonitor
|
||||||
scope: Namespaced
|
scope: Namespaced
|
||||||
versions:
|
validation:
|
||||||
- name: v1
|
openAPIV3Schema:
|
||||||
schema:
|
description: PodMonitor defines monitoring for a set of pods.
|
||||||
openAPIV3Schema:
|
properties:
|
||||||
description: PodMonitor defines monitoring for a set of pods.
|
apiVersion:
|
||||||
properties:
|
description: 'APIVersion defines the versioned schema of this representation
|
||||||
apiVersion:
|
of an object. Servers should convert recognized schemas to the latest
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
of an object. Servers should convert recognized schemas to the latest
|
type: string
|
||||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
kind:
|
||||||
type: string
|
description: 'Kind is a string value representing the REST resource this
|
||||||
kind:
|
object represents. Servers may infer this from the endpoint the client
|
||||||
description: 'Kind is a string value representing the REST resource this
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
object represents. Servers may infer this from the endpoint the client
|
type: string
|
||||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
metadata:
|
||||||
type: string
|
type: object
|
||||||
metadata:
|
spec:
|
||||||
type: object
|
description: Specification of desired Pod selection for target discovery
|
||||||
spec:
|
by Prometheus.
|
||||||
description: Specification of desired Pod selection for target discovery
|
properties:
|
||||||
by Prometheus.
|
jobLabel:
|
||||||
properties:
|
description: The label to use to retrieve the job name from.
|
||||||
jobLabel:
|
type: string
|
||||||
description: The label to use to retrieve the job name from.
|
namespaceSelector:
|
||||||
type: string
|
description: Selector to select which namespaces the Endpoints objects
|
||||||
namespaceSelector:
|
are discovered from.
|
||||||
description: Selector to select which namespaces the Endpoints objects
|
properties:
|
||||||
are discovered from.
|
any:
|
||||||
|
description: Boolean describing whether all namespaces are selected
|
||||||
|
in contrast to a list restricting them.
|
||||||
|
type: boolean
|
||||||
|
matchNames:
|
||||||
|
description: List of namespace names.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
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.
|
||||||
properties:
|
properties:
|
||||||
any:
|
honorLabels:
|
||||||
description: Boolean describing whether all namespaces are selected
|
description: HonorLabels chooses the metric's labels on collisions
|
||||||
in contrast to a list restricting them.
|
with target labels.
|
||||||
type: boolean
|
type: boolean
|
||||||
matchNames:
|
honorTimestamps:
|
||||||
description: List of namespace names.
|
description: HonorTimestamps controls whether Prometheus respects
|
||||||
|
the timestamps present in scraped data.
|
||||||
|
type: boolean
|
||||||
|
interval:
|
||||||
|
description: Interval at which metrics should be scraped
|
||||||
|
type: string
|
||||||
|
metricRelabelings:
|
||||||
|
description: MetricRelabelConfigs to apply to samples before ingestion.
|
||||||
items:
|
items:
|
||||||
type: string
|
description: 'RelabelConfig allows dynamic rewriting of the
|
||||||
type: array
|
label set, being applied to samples before ingestion. It defines
|
||||||
type: object
|
`<metric_relabel_configs>`-section of Prometheus configuration.
|
||||||
podMetricsEndpoints:
|
More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
|
||||||
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.
|
|
||||||
properties:
|
|
||||||
honorLabels:
|
|
||||||
description: HonorLabels chooses the metric's labels on collisions
|
|
||||||
with target labels.
|
|
||||||
type: boolean
|
|
||||||
honorTimestamps:
|
|
||||||
description: HonorTimestamps controls whether Prometheus respects
|
|
||||||
the timestamps present in scraped data.
|
|
||||||
type: boolean
|
|
||||||
interval:
|
|
||||||
description: Interval at which metrics should be scraped
|
|
||||||
type: string
|
|
||||||
metricRelabelings:
|
|
||||||
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'
|
|
||||||
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.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
regex:
|
|
||||||
description: Regular expression against which the extracted
|
|
||||||
value is matched. Default is '(.*)'
|
|
||||||
type: string
|
|
||||||
replacement:
|
|
||||||
description: Replacement value against which a regex replace
|
|
||||||
is performed if the regular expression matches. Regex
|
|
||||||
capture groups are available. Default is '$1'
|
|
||||||
type: string
|
|
||||||
separator:
|
|
||||||
description: Separator placed between concatenated source
|
|
||||||
label values. default is ';'.
|
|
||||||
type: string
|
|
||||||
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.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
targetLabel:
|
|
||||||
description: Label to which the resulting value is written
|
|
||||||
in a replace action. It is mandatory for replace actions.
|
|
||||||
Regex capture groups are available.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
params:
|
|
||||||
additionalProperties:
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
description: Optional HTTP URL parameters
|
|
||||||
type: object
|
|
||||||
path:
|
|
||||||
description: HTTP path to scrape for metrics.
|
|
||||||
type: string
|
|
||||||
port:
|
|
||||||
description: Name of the pod port this endpoint refers to. Mutually
|
|
||||||
exclusive with targetPort.
|
|
||||||
type: string
|
|
||||||
proxyUrl:
|
|
||||||
description: ProxyURL eg http://proxyserver:2195 Directs scrapes
|
|
||||||
to proxy through this endpoint.
|
|
||||||
type: string
|
|
||||||
relabelings:
|
|
||||||
description: 'RelabelConfigs to apply to samples before ingestion.
|
|
||||||
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'
|
|
||||||
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.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
regex:
|
|
||||||
description: Regular expression against which the extracted
|
|
||||||
value is matched. Default is '(.*)'
|
|
||||||
type: string
|
|
||||||
replacement:
|
|
||||||
description: Replacement value against which a regex replace
|
|
||||||
is performed if the regular expression matches. Regex
|
|
||||||
capture groups are available. Default is '$1'
|
|
||||||
type: string
|
|
||||||
separator:
|
|
||||||
description: Separator placed between concatenated source
|
|
||||||
label values. default is ';'.
|
|
||||||
type: string
|
|
||||||
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.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
targetLabel:
|
|
||||||
description: Label to which the resulting value is written
|
|
||||||
in a replace action. It is mandatory for replace actions.
|
|
||||||
Regex capture groups are available.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
scheme:
|
|
||||||
description: HTTP scheme to use for scraping.
|
|
||||||
type: string
|
|
||||||
scrapeTimeout:
|
|
||||||
description: Timeout after which the scrape is ended
|
|
||||||
type: string
|
|
||||||
targetPort:
|
|
||||||
anyOf:
|
|
||||||
- type: integer
|
|
||||||
- type: string
|
|
||||||
description: 'Deprecated: Use ''port'' instead.'
|
|
||||||
x-kubernetes-int-or-string: true
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
podTargetLabels:
|
|
||||||
description: PodTargetLabels transfers labels on the Kubernetes Pod
|
|
||||||
onto the target.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
sampleLimit:
|
|
||||||
description: SampleLimit defines per-scrape limit on number of scraped
|
|
||||||
samples that will be accepted.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
selector:
|
|
||||||
description: Selector to select Pod objects.
|
|
||||||
properties:
|
|
||||||
matchExpressions:
|
|
||||||
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.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
action:
|
||||||
description: key is the label key that the selector applies
|
description: Action to perform based on regex matching.
|
||||||
to.
|
Default is 'replace'
|
||||||
type: string
|
type: string
|
||||||
operator:
|
modulus:
|
||||||
description: operator represents a key's relationship to
|
description: Modulus to take of the hash of the source label
|
||||||
a set of values. Valid operators are In, NotIn, Exists
|
values.
|
||||||
and DoesNotExist.
|
format: int64
|
||||||
|
type: integer
|
||||||
|
regex:
|
||||||
|
description: Regular expression against which the extracted
|
||||||
|
value is matched. Default is '(.*)'
|
||||||
type: string
|
type: string
|
||||||
values:
|
replacement:
|
||||||
description: values is an array of string values. If the
|
description: Replacement value against which a regex replace
|
||||||
operator is In or NotIn, the values array must be non-empty.
|
is performed if the regular expression matches. Regex
|
||||||
If the operator is Exists or DoesNotExist, the values
|
capture groups are available. Default is '$1'
|
||||||
array must be empty. This array is replaced during a strategic
|
type: string
|
||||||
merge patch.
|
separator:
|
||||||
|
description: Separator placed between concatenated source
|
||||||
|
label values. default is ';'.
|
||||||
|
type: string
|
||||||
|
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.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
required:
|
targetLabel:
|
||||||
- key
|
description: Label to which the resulting value is written
|
||||||
- operator
|
in a replace action. It is mandatory for replace actions.
|
||||||
|
Regex capture groups are available.
|
||||||
|
type: string
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
matchLabels:
|
params:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
items:
|
||||||
description: matchLabels is a map of {key,value} pairs. A single
|
type: string
|
||||||
{key,value} in the matchLabels map is equivalent to an element
|
type: array
|
||||||
of matchExpressions, whose key field is "key", the operator
|
description: Optional HTTP URL parameters
|
||||||
is "In", and the values array contains only "value". The requirements
|
|
||||||
are ANDed.
|
|
||||||
type: object
|
type: object
|
||||||
|
path:
|
||||||
|
description: HTTP path to scrape for metrics.
|
||||||
|
type: string
|
||||||
|
port:
|
||||||
|
description: Name of the port this endpoint refers to. Mutually
|
||||||
|
exclusive with targetPort.
|
||||||
|
type: string
|
||||||
|
proxyUrl:
|
||||||
|
description: ProxyURL eg http://proxyserver:2195 Directs scrapes
|
||||||
|
to proxy through this endpoint.
|
||||||
|
type: string
|
||||||
|
relabelings:
|
||||||
|
description: 'RelabelConfigs to apply to samples before ingestion.
|
||||||
|
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'
|
||||||
|
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.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
regex:
|
||||||
|
description: Regular expression against which the extracted
|
||||||
|
value is matched. Default is '(.*)'
|
||||||
|
type: string
|
||||||
|
replacement:
|
||||||
|
description: Replacement value against which a regex replace
|
||||||
|
is performed if the regular expression matches. Regex
|
||||||
|
capture groups are available. Default is '$1'
|
||||||
|
type: string
|
||||||
|
separator:
|
||||||
|
description: Separator placed between concatenated source
|
||||||
|
label values. default is ';'.
|
||||||
|
type: string
|
||||||
|
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.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
targetLabel:
|
||||||
|
description: Label to which the resulting value is written
|
||||||
|
in a replace action. It is mandatory for replace actions.
|
||||||
|
Regex capture groups are available.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
scheme:
|
||||||
|
description: HTTP scheme to use for scraping.
|
||||||
|
type: string
|
||||||
|
scrapeTimeout:
|
||||||
|
description: Timeout after which the scrape is ended
|
||||||
|
type: string
|
||||||
|
targetPort:
|
||||||
|
anyOf:
|
||||||
|
- type: integer
|
||||||
|
- type: string
|
||||||
|
description: Name or number of the target port of the endpoint.
|
||||||
|
Mutually exclusive with port.
|
||||||
|
x-kubernetes-int-or-string: true
|
||||||
type: object
|
type: object
|
||||||
required:
|
type: array
|
||||||
- podMetricsEndpoints
|
podTargetLabels:
|
||||||
- selector
|
description: PodTargetLabels transfers labels on the Kubernetes Pod
|
||||||
type: object
|
onto the target.
|
||||||
required:
|
items:
|
||||||
- spec
|
type: string
|
||||||
type: object
|
type: array
|
||||||
|
sampleLimit:
|
||||||
|
description: SampleLimit defines per-scrape limit on number of scraped
|
||||||
|
samples that will be accepted.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
selector:
|
||||||
|
description: Selector to select Pod objects.
|
||||||
|
properties:
|
||||||
|
matchExpressions:
|
||||||
|
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.
|
||||||
|
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.
|
||||||
|
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.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
- operator
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
matchLabels:
|
||||||
|
additionalProperties:
|
||||||
|
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
|
||||||
|
are ANDed.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- podMetricsEndpoints
|
||||||
|
- selector
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
version: v1
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
served: true
|
served: true
|
||||||
storage: true
|
storage: true
|
||||||
status:
|
status:
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"apiVersion": "apiextensions.k8s.io/v1",
|
"apiVersion": "apiextensions.k8s.io/v1beta1",
|
||||||
"kind": "CustomResourceDefinition",
|
"kind": "CustomResourceDefinition",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
@ -17,104 +17,105 @@
|
|||||||
"singular": "prometheusrule"
|
"singular": "prometheusrule"
|
||||||
},
|
},
|
||||||
"scope": "Namespaced",
|
"scope": "Namespaced",
|
||||||
"versions": [
|
"validation": {
|
||||||
{
|
"openAPIV3Schema": {
|
||||||
"name": "v1",
|
"description": "PrometheusRule defines alerting rules for a Prometheus instance",
|
||||||
"schema": {
|
"properties": {
|
||||||
"openAPIV3Schema": {
|
"apiVersion": {
|
||||||
"description": "PrometheusRule defines alerting rules for a Prometheus instance",
|
"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": {
|
"properties": {
|
||||||
"apiVersion": {
|
"groups": {
|
||||||
"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",
|
"description": "Content of Prometheus rule file",
|
||||||
"type": "string"
|
"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",
|
||||||
"kind": {
|
"properties": {
|
||||||
"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",
|
"interval": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"metadata": {
|
"name": {
|
||||||
"type": "object"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"spec": {
|
"partial_response_strategy": {
|
||||||
"description": "Specification of desired alerting rule definitions for Prometheus.",
|
"type": "string"
|
||||||
"properties": {
|
},
|
||||||
"groups": {
|
"rules": {
|
||||||
"description": "Content of Prometheus rule file",
|
"items": {
|
||||||
"items": {
|
"description": "Rule describes an alerting or recording rule.",
|
||||||
"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": {
|
||||||
"properties": {
|
"alert": {
|
||||||
"interval": {
|
"type": "string"
|
||||||
"type": "string"
|
},
|
||||||
},
|
"annotations": {
|
||||||
"name": {
|
"additionalProperties": {
|
||||||
"type": "string"
|
"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": "object"
|
||||||
},
|
},
|
||||||
"type": "array"
|
"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"
|
||||||
},
|
},
|
||||||
"required": [
|
"type": "array"
|
||||||
"name",
|
}
|
||||||
"rules"
|
},
|
||||||
],
|
"required": [
|
||||||
"type": "object"
|
"name",
|
||||||
},
|
"rules"
|
||||||
"type": "array"
|
],
|
||||||
}
|
"type": "object"
|
||||||
},
|
},
|
||||||
"type": "object"
|
"type": "array"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [
|
|
||||||
"spec"
|
|
||||||
],
|
|
||||||
"type": "object"
|
"type": "object"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"required": [
|
||||||
|
"spec"
|
||||||
|
],
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": "v1",
|
||||||
|
"versions": [
|
||||||
|
{
|
||||||
|
"name": "v1",
|
||||||
"served": true,
|
"served": true,
|
||||||
"storage": true
|
"storage": true
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
@ -13,77 +13,78 @@ spec:
|
|||||||
plural: prometheusrules
|
plural: prometheusrules
|
||||||
singular: prometheusrule
|
singular: prometheusrule
|
||||||
scope: Namespaced
|
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:
|
versions:
|
||||||
- name: v1
|
- 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
|
served: true
|
||||||
storage: true
|
storage: true
|
||||||
status:
|
status:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"apiVersion": "apiextensions.k8s.io/v1",
|
"apiVersion": "apiextensions.k8s.io/v1beta1",
|
||||||
"kind": "CustomResourceDefinition",
|
"kind": "CustomResourceDefinition",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
@ -17,86 +17,34 @@
|
|||||||
"singular": "servicemonitor"
|
"singular": "servicemonitor"
|
||||||
},
|
},
|
||||||
"scope": "Namespaced",
|
"scope": "Namespaced",
|
||||||
"versions": [
|
"validation": {
|
||||||
{
|
"openAPIV3Schema": {
|
||||||
"name": "v1",
|
"description": "ServiceMonitor defines monitoring for a set of services.",
|
||||||
"schema": {
|
"properties": {
|
||||||
"openAPIV3Schema": {
|
"apiVersion": {
|
||||||
"description": "ServiceMonitor defines monitoring for a set of services.",
|
"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 Service selection for target discovery by Prometheus.",
|
||||||
"properties": {
|
"properties": {
|
||||||
"apiVersion": {
|
"endpoints": {
|
||||||
"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",
|
"description": "A list of endpoints allowed as part of this ServiceMonitor.",
|
||||||
"type": "string"
|
"items": {
|
||||||
},
|
"description": "Endpoint defines a scrapeable endpoint serving Prometheus metrics.",
|
||||||
"kind": {
|
"properties": {
|
||||||
"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",
|
"basicAuth": {
|
||||||
"type": "string"
|
"description": "BasicAuth allow an endpoint to authenticate over basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints",
|
||||||
},
|
|
||||||
"metadata": {
|
|
||||||
"type": "object"
|
|
||||||
},
|
|
||||||
"spec": {
|
|
||||||
"description": "Specification of desired Service selection for target discovery by Prometheus.",
|
|
||||||
"properties": {
|
|
||||||
"endpoints": {
|
|
||||||
"description": "A list of endpoints allowed as part of this ServiceMonitor.",
|
|
||||||
"items": {
|
|
||||||
"description": "Endpoint defines a scrapeable endpoint serving Prometheus metrics.",
|
|
||||||
"properties": {
|
"properties": {
|
||||||
"basicAuth": {
|
"password": {
|
||||||
"description": "BasicAuth allow an endpoint to authenticate over basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints",
|
"description": "The secret in the service monitor namespace that contains the password for authentication.",
|
||||||
"properties": {
|
|
||||||
"password": {
|
|
||||||
"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 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",
|
|
||||||
"type": "boolean"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": [
|
|
||||||
"key"
|
|
||||||
],
|
|
||||||
"type": "object"
|
|
||||||
},
|
|
||||||
"username": {
|
|
||||||
"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 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",
|
|
||||||
"type": "boolean"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": [
|
|
||||||
"key"
|
|
||||||
],
|
|
||||||
"type": "object"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": "object"
|
|
||||||
},
|
|
||||||
"bearerTokenFile": {
|
|
||||||
"description": "File to read bearer token for scraping targets.",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"bearerTokenSecret": {
|
|
||||||
"description": "Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the service monitor and accessible by the Prometheus Operator.",
|
|
||||||
"properties": {
|
"properties": {
|
||||||
"key": {
|
"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.",
|
||||||
@ -116,261 +64,222 @@
|
|||||||
],
|
],
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
},
|
||||||
"honorLabels": {
|
"username": {
|
||||||
"description": "HonorLabels chooses the metric's labels on collisions with target labels.",
|
"description": "The secret in the service monitor namespace that contains the username for authentication.",
|
||||||
"type": "boolean"
|
"properties": {
|
||||||
},
|
"key": {
|
||||||
"honorTimestamps": {
|
"description": "The key of the secret to select from. Must be a valid secret key.",
|
||||||
"description": "HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.",
|
"type": "string"
|
||||||
"type": "boolean"
|
},
|
||||||
},
|
"name": {
|
||||||
"interval": {
|
"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?",
|
||||||
"description": "Interval at which metrics should be scraped",
|
"type": "string"
|
||||||
|
},
|
||||||
|
"optional": {
|
||||||
|
"description": "Specify whether the Secret or its key must be defined",
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"key"
|
||||||
|
],
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"bearerTokenFile": {
|
||||||
|
"description": "File to read bearer token for scraping targets.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"bearerTokenSecret": {
|
||||||
|
"description": "Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the 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.",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"metricRelabelings": {
|
"name": {
|
||||||
"description": "MetricRelabelConfigs to apply to samples before ingestion.",
|
"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?",
|
||||||
"items": {
|
"type": "string"
|
||||||
"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",
|
|
||||||
"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.",
|
|
||||||
"format": "int64",
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"regex": {
|
|
||||||
"description": "Regular expression against which the extracted value is matched. Default is '(.*)'",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"replacement": {
|
|
||||||
"description": "Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1'",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"separator": {
|
|
||||||
"description": "Separator placed between concatenated source label values. default is ';'.",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"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.",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"type": "array"
|
|
||||||
},
|
|
||||||
"targetLabel": {
|
|
||||||
"description": "Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available.",
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": "object"
|
|
||||||
},
|
|
||||||
"type": "array"
|
|
||||||
},
|
},
|
||||||
"params": {
|
"optional": {
|
||||||
"additionalProperties": {
|
"description": "Specify whether the Secret or its key must be defined",
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"key"
|
||||||
|
],
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"honorLabels": {
|
||||||
|
"description": "HonorLabels chooses the metric's labels on collisions with target labels.",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"honorTimestamps": {
|
||||||
|
"description": "HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"interval": {
|
||||||
|
"description": "Interval at which metrics should be scraped",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"metricRelabelings": {
|
||||||
|
"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",
|
||||||
|
"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.",
|
||||||
|
"format": "int64",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"regex": {
|
||||||
|
"description": "Regular expression against which the extracted value is matched. Default is '(.*)'",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"replacement": {
|
||||||
|
"description": "Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1'",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"separator": {
|
||||||
|
"description": "Separator placed between concatenated source label values. default is ';'.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"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.",
|
||||||
"items": {
|
"items": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"type": "array"
|
"type": "array"
|
||||||
},
|
},
|
||||||
"description": "Optional HTTP URL parameters",
|
"targetLabel": {
|
||||||
"type": "object"
|
"description": "Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available.",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"path": {
|
"type": "object"
|
||||||
"description": "HTTP path to scrape for metrics.",
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"additionalProperties": {
|
||||||
|
"items": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"port": {
|
"type": "array"
|
||||||
"description": "Name of the service port this endpoint refers to. Mutually exclusive with targetPort.",
|
},
|
||||||
"type": "string"
|
"description": "Optional HTTP URL parameters",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"path": {
|
||||||
|
"description": "HTTP path to scrape for metrics.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"port": {
|
||||||
|
"description": "Name of the service port this endpoint refers to. Mutually exclusive with targetPort.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"proxyUrl": {
|
||||||
|
"description": "ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"relabelings": {
|
||||||
|
"description": "RelabelConfigs to apply to samples before scraping. 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",
|
||||||
|
"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.",
|
||||||
|
"format": "int64",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"regex": {
|
||||||
|
"description": "Regular expression against which the extracted value is matched. Default is '(.*)'",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"replacement": {
|
||||||
|
"description": "Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1'",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"separator": {
|
||||||
|
"description": "Separator placed between concatenated source label values. default is ';'.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"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.",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"targetLabel": {
|
||||||
|
"description": "Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available.",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"proxyUrl": {
|
"type": "object"
|
||||||
"description": "ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.",
|
},
|
||||||
"type": "string"
|
"type": "array"
|
||||||
|
},
|
||||||
|
"scheme": {
|
||||||
|
"description": "HTTP scheme to use for scraping.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"scrapeTimeout": {
|
||||||
|
"description": "Timeout after which the scrape is ended",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"targetPort": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"relabelings": {
|
{
|
||||||
"description": "RelabelConfigs to apply to samples before scraping. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config",
|
"type": "string"
|
||||||
"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",
|
],
|
||||||
"properties": {
|
"description": "Name or number of the target port of the endpoint. Mutually exclusive with port.",
|
||||||
"action": {
|
"x-kubernetes-int-or-string": true
|
||||||
"description": "Action to perform based on regex matching. Default is 'replace'",
|
},
|
||||||
"type": "string"
|
"tlsConfig": {
|
||||||
},
|
"description": "TLS configuration to use when scraping the endpoint",
|
||||||
"modulus": {
|
"properties": {
|
||||||
"description": "Modulus to take of the hash of the source label values.",
|
"ca": {
|
||||||
"format": "int64",
|
"description": "Stuct containing the CA cert to use for the targets.",
|
||||||
"type": "integer"
|
"properties": {
|
||||||
},
|
"configMap": {
|
||||||
"regex": {
|
"description": "ConfigMap containing data to use for the targets.",
|
||||||
"description": "Regular expression against which the extracted value is matched. Default is '(.*)'",
|
"properties": {
|
||||||
"type": "string"
|
"key": {
|
||||||
},
|
"description": "The key to select.",
|
||||||
"replacement": {
|
|
||||||
"description": "Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1'",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"separator": {
|
|
||||||
"description": "Separator placed between concatenated source label values. default is ';'.",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"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.",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"type": "array"
|
"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?",
|
||||||
"targetLabel": {
|
"type": "string"
|
||||||
"description": "Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available.",
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": "object"
|
|
||||||
},
|
|
||||||
"type": "array"
|
|
||||||
},
|
|
||||||
"scheme": {
|
|
||||||
"description": "HTTP scheme to use for scraping.",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"scrapeTimeout": {
|
|
||||||
"description": "Timeout after which the scrape is ended",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"targetPort": {
|
|
||||||
"anyOf": [
|
|
||||||
{
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Name or number of the pod port this endpoint refers to. Mutually exclusive with port.",
|
|
||||||
"x-kubernetes-int-or-string": true
|
|
||||||
},
|
|
||||||
"tlsConfig": {
|
|
||||||
"description": "TLS configuration to use when scraping the endpoint",
|
|
||||||
"properties": {
|
|
||||||
"ca": {
|
|
||||||
"description": "Stuct containing the CA cert to use for the targets.",
|
|
||||||
"properties": {
|
|
||||||
"configMap": {
|
|
||||||
"description": "ConfigMap containing data to use for the targets.",
|
|
||||||
"properties": {
|
|
||||||
"key": {
|
|
||||||
"description": "The key to select.",
|
|
||||||
"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 ConfigMap or its key must be defined",
|
|
||||||
"type": "boolean"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": [
|
|
||||||
"key"
|
|
||||||
],
|
|
||||||
"type": "object"
|
|
||||||
},
|
},
|
||||||
"secret": {
|
"optional": {
|
||||||
"description": "Secret containing data to use for the targets.",
|
"description": "Specify whether the ConfigMap or its key must be defined",
|
||||||
"properties": {
|
"type": "boolean"
|
||||||
"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",
|
|
||||||
"type": "boolean"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": [
|
|
||||||
"key"
|
|
||||||
],
|
|
||||||
"type": "object"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"required": [
|
||||||
|
"key"
|
||||||
|
],
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
},
|
||||||
"caFile": {
|
"secret": {
|
||||||
"description": "Path to the CA cert in the Prometheus container to use for the targets.",
|
"description": "Secret containing data to use for the targets.",
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"cert": {
|
|
||||||
"description": "Struct containing the client cert file for the targets.",
|
|
||||||
"properties": {
|
|
||||||
"configMap": {
|
|
||||||
"description": "ConfigMap containing data to use for the targets.",
|
|
||||||
"properties": {
|
|
||||||
"key": {
|
|
||||||
"description": "The key to select.",
|
|
||||||
"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 ConfigMap or its key must be defined",
|
|
||||||
"type": "boolean"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": [
|
|
||||||
"key"
|
|
||||||
],
|
|
||||||
"type": "object"
|
|
||||||
},
|
|
||||||
"secret": {
|
|
||||||
"description": "Secret containing data to use for the targets.",
|
|
||||||
"properties": {
|
|
||||||
"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",
|
|
||||||
"type": "boolean"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": [
|
|
||||||
"key"
|
|
||||||
],
|
|
||||||
"type": "object"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": "object"
|
|
||||||
},
|
|
||||||
"certFile": {
|
|
||||||
"description": "Path to the client cert file in the Prometheus container for the targets.",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"insecureSkipVerify": {
|
|
||||||
"description": "Disable target certificate validation.",
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"keyFile": {
|
|
||||||
"description": "Path to the client key file in the Prometheus container for the targets.",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"keySecret": {
|
|
||||||
"description": "Secret containing the client key file for the targets.",
|
|
||||||
"properties": {
|
"properties": {
|
||||||
"key": {
|
"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.",
|
||||||
@ -389,115 +298,207 @@
|
|||||||
"key"
|
"key"
|
||||||
],
|
],
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
|
||||||
"serverName": {
|
|
||||||
"description": "Used to verify the hostname for the targets.",
|
|
||||||
"type": "string"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "object"
|
"type": "object"
|
||||||
}
|
},
|
||||||
},
|
"caFile": {
|
||||||
"type": "object"
|
"description": "Path to the CA cert in the Prometheus container to use for the targets.",
|
||||||
},
|
|
||||||
"type": "array"
|
|
||||||
},
|
|
||||||
"jobLabel": {
|
|
||||||
"description": "The label to use to retrieve the job name from.",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"namespaceSelector": {
|
|
||||||
"description": "Selector to select which namespaces the Endpoints objects are discovered from.",
|
|
||||||
"properties": {
|
|
||||||
"any": {
|
|
||||||
"description": "Boolean describing whether all namespaces are selected in contrast to a list restricting them.",
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"matchNames": {
|
|
||||||
"description": "List of namespace names.",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"type": "array"
|
"cert": {
|
||||||
}
|
"description": "Struct containing the client cert file for the targets.",
|
||||||
},
|
"properties": {
|
||||||
"type": "object"
|
"configMap": {
|
||||||
},
|
"description": "ConfigMap containing data to use for the targets.",
|
||||||
"podTargetLabels": {
|
"properties": {
|
||||||
"description": "PodTargetLabels transfers labels on the Kubernetes Pod onto the target.",
|
"key": {
|
||||||
"items": {
|
"description": "The key to select.",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"type": "array"
|
"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?",
|
||||||
"sampleLimit": {
|
"type": "string"
|
||||||
"description": "SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.",
|
},
|
||||||
"format": "int64",
|
"optional": {
|
||||||
"type": "integer"
|
"description": "Specify whether the ConfigMap or its key must be defined",
|
||||||
},
|
"type": "boolean"
|
||||||
"selector": {
|
}
|
||||||
"description": "Selector to select Endpoints objects.",
|
},
|
||||||
"properties": {
|
"required": [
|
||||||
"matchExpressions": {
|
"key"
|
||||||
"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
|
],
|
||||||
"items": {
|
"type": "object"
|
||||||
"description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
|
},
|
||||||
|
"secret": {
|
||||||
|
"description": "Secret containing data to use for the targets.",
|
||||||
|
"properties": {
|
||||||
|
"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",
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"key"
|
||||||
|
],
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"certFile": {
|
||||||
|
"description": "Path to the client cert file in the Prometheus container for the targets.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"insecureSkipVerify": {
|
||||||
|
"description": "Disable target certificate validation.",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"keyFile": {
|
||||||
|
"description": "Path to the client key file in the Prometheus container for the targets.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"keySecret": {
|
||||||
|
"description": "Secret containing the client key file for the targets.",
|
||||||
"properties": {
|
"properties": {
|
||||||
"key": {
|
"key": {
|
||||||
"description": "key is the label key that the selector applies to.",
|
"description": "The key of the secret to select from. Must be a valid secret key.",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"operator": {
|
"name": {
|
||||||
"description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.",
|
"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"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"values": {
|
"optional": {
|
||||||
"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": "Specify whether the Secret or its key must be defined",
|
||||||
"items": {
|
"type": "boolean"
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"type": "array"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
"key",
|
"key"
|
||||||
"operator"
|
|
||||||
],
|
],
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
},
|
||||||
"type": "array"
|
"serverName": {
|
||||||
},
|
"description": "Used to verify the hostname for the targets.",
|
||||||
"matchLabels": {
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
"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 are ANDed.",
|
},
|
||||||
"type": "object"
|
"type": "object"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"type": "object"
|
|
||||||
},
|
},
|
||||||
"targetLabels": {
|
"type": "object"
|
||||||
"description": "TargetLabels transfers labels on the Kubernetes Service onto the target.",
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"jobLabel": {
|
||||||
|
"description": "The label to use to retrieve the job name from.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"namespaceSelector": {
|
||||||
|
"description": "Selector to select which namespaces the Endpoints objects are discovered from.",
|
||||||
|
"properties": {
|
||||||
|
"any": {
|
||||||
|
"description": "Boolean describing whether all namespaces are selected in contrast to a list restricting them.",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"matchNames": {
|
||||||
|
"description": "List of namespace names.",
|
||||||
"items": {
|
"items": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"type": "array"
|
"type": "array"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [
|
|
||||||
"endpoints",
|
|
||||||
"selector"
|
|
||||||
],
|
|
||||||
"type": "object"
|
"type": "object"
|
||||||
|
},
|
||||||
|
"podTargetLabels": {
|
||||||
|
"description": "PodTargetLabels transfers labels on the Kubernetes Pod onto the target.",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"sampleLimit": {
|
||||||
|
"description": "SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.",
|
||||||
|
"format": "int64",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"selector": {
|
||||||
|
"description": "Selector to select Endpoints objects.",
|
||||||
|
"properties": {
|
||||||
|
"matchExpressions": {
|
||||||
|
"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.",
|
||||||
|
"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.",
|
||||||
|
"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.",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"key",
|
||||||
|
"operator"
|
||||||
|
],
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"matchLabels": {
|
||||||
|
"additionalProperties": {
|
||||||
|
"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 are ANDed.",
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"targetLabels": {
|
||||||
|
"description": "TargetLabels transfers labels on the Kubernetes Service onto the target.",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
"spec"
|
"endpoints",
|
||||||
|
"selector"
|
||||||
],
|
],
|
||||||
"type": "object"
|
"type": "object"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"required": [
|
||||||
|
"spec"
|
||||||
|
],
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": "v1",
|
||||||
|
"versions": [
|
||||||
|
{
|
||||||
|
"name": "v1",
|
||||||
"served": true,
|
"served": true,
|
||||||
"storage": true
|
"storage": true
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
@ -13,448 +13,446 @@ spec:
|
|||||||
plural: servicemonitors
|
plural: servicemonitors
|
||||||
singular: servicemonitor
|
singular: servicemonitor
|
||||||
scope: Namespaced
|
scope: Namespaced
|
||||||
versions:
|
validation:
|
||||||
- name: v1
|
openAPIV3Schema:
|
||||||
schema:
|
description: ServiceMonitor defines monitoring for a set of services.
|
||||||
openAPIV3Schema:
|
properties:
|
||||||
description: ServiceMonitor defines monitoring for a set of services.
|
apiVersion:
|
||||||
properties:
|
description: 'APIVersion defines the versioned schema of this representation
|
||||||
apiVersion:
|
of an object. Servers should convert recognized schemas to the latest
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
of an object. Servers should convert recognized schemas to the latest
|
type: string
|
||||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
kind:
|
||||||
type: string
|
description: 'Kind is a string value representing the REST resource this
|
||||||
kind:
|
object represents. Servers may infer this from the endpoint the client
|
||||||
description: 'Kind is a string value representing the REST resource this
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
object represents. Servers may infer this from the endpoint the client
|
type: string
|
||||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
metadata:
|
||||||
type: string
|
type: object
|
||||||
metadata:
|
spec:
|
||||||
type: object
|
description: Specification of desired Service selection for target discovery
|
||||||
spec:
|
by Prometheus.
|
||||||
description: Specification of desired Service selection for target discovery
|
properties:
|
||||||
by Prometheus.
|
endpoints:
|
||||||
properties:
|
description: A list of endpoints allowed as part of this ServiceMonitor.
|
||||||
endpoints:
|
items:
|
||||||
description: A list of endpoints allowed as part of this ServiceMonitor.
|
description: Endpoint defines a scrapeable endpoint serving Prometheus
|
||||||
items:
|
metrics.
|
||||||
description: Endpoint defines a scrapeable endpoint serving Prometheus
|
|
||||||
metrics.
|
|
||||||
properties:
|
|
||||||
basicAuth:
|
|
||||||
description: 'BasicAuth allow an endpoint to authenticate over
|
|
||||||
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.
|
|
||||||
properties:
|
|
||||||
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
|
|
||||||
type: boolean
|
|
||||||
required:
|
|
||||||
- key
|
|
||||||
type: object
|
|
||||||
username:
|
|
||||||
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
|
|
||||||
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
|
|
||||||
type: boolean
|
|
||||||
required:
|
|
||||||
- key
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
bearerTokenFile:
|
|
||||||
description: File to read bearer token for scraping targets.
|
|
||||||
type: string
|
|
||||||
bearerTokenSecret:
|
|
||||||
description: Secret to mount to read bearer token for scraping
|
|
||||||
targets. The secret needs to be in the same namespace as the
|
|
||||||
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.
|
|
||||||
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
|
|
||||||
type: boolean
|
|
||||||
required:
|
|
||||||
- key
|
|
||||||
type: object
|
|
||||||
honorLabels:
|
|
||||||
description: HonorLabels chooses the metric's labels on collisions
|
|
||||||
with target labels.
|
|
||||||
type: boolean
|
|
||||||
honorTimestamps:
|
|
||||||
description: HonorTimestamps controls whether Prometheus respects
|
|
||||||
the timestamps present in scraped data.
|
|
||||||
type: boolean
|
|
||||||
interval:
|
|
||||||
description: Interval at which metrics should be scraped
|
|
||||||
type: string
|
|
||||||
metricRelabelings:
|
|
||||||
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'
|
|
||||||
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.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
regex:
|
|
||||||
description: Regular expression against which the extracted
|
|
||||||
value is matched. Default is '(.*)'
|
|
||||||
type: string
|
|
||||||
replacement:
|
|
||||||
description: Replacement value against which a regex replace
|
|
||||||
is performed if the regular expression matches. Regex
|
|
||||||
capture groups are available. Default is '$1'
|
|
||||||
type: string
|
|
||||||
separator:
|
|
||||||
description: Separator placed between concatenated source
|
|
||||||
label values. default is ';'.
|
|
||||||
type: string
|
|
||||||
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.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
targetLabel:
|
|
||||||
description: Label to which the resulting value is written
|
|
||||||
in a replace action. It is mandatory for replace actions.
|
|
||||||
Regex capture groups are available.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
params:
|
|
||||||
additionalProperties:
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
description: Optional HTTP URL parameters
|
|
||||||
type: object
|
|
||||||
path:
|
|
||||||
description: HTTP path to scrape for metrics.
|
|
||||||
type: string
|
|
||||||
port:
|
|
||||||
description: Name of the service port this endpoint refers to.
|
|
||||||
Mutually exclusive with targetPort.
|
|
||||||
type: string
|
|
||||||
proxyUrl:
|
|
||||||
description: ProxyURL eg http://proxyserver:2195 Directs scrapes
|
|
||||||
to proxy through this endpoint.
|
|
||||||
type: string
|
|
||||||
relabelings:
|
|
||||||
description: 'RelabelConfigs to apply to samples before scraping.
|
|
||||||
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'
|
|
||||||
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.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
regex:
|
|
||||||
description: Regular expression against which the extracted
|
|
||||||
value is matched. Default is '(.*)'
|
|
||||||
type: string
|
|
||||||
replacement:
|
|
||||||
description: Replacement value against which a regex replace
|
|
||||||
is performed if the regular expression matches. Regex
|
|
||||||
capture groups are available. Default is '$1'
|
|
||||||
type: string
|
|
||||||
separator:
|
|
||||||
description: Separator placed between concatenated source
|
|
||||||
label values. default is ';'.
|
|
||||||
type: string
|
|
||||||
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.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
targetLabel:
|
|
||||||
description: Label to which the resulting value is written
|
|
||||||
in a replace action. It is mandatory for replace actions.
|
|
||||||
Regex capture groups are available.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
scheme:
|
|
||||||
description: HTTP scheme to use for scraping.
|
|
||||||
type: string
|
|
||||||
scrapeTimeout:
|
|
||||||
description: Timeout after which the scrape is ended
|
|
||||||
type: string
|
|
||||||
targetPort:
|
|
||||||
anyOf:
|
|
||||||
- type: integer
|
|
||||||
- type: string
|
|
||||||
description: Name or number of the pod port this endpoint refers
|
|
||||||
to. Mutually exclusive with port.
|
|
||||||
x-kubernetes-int-or-string: true
|
|
||||||
tlsConfig:
|
|
||||||
description: TLS configuration to use when scraping the endpoint
|
|
||||||
properties:
|
|
||||||
ca:
|
|
||||||
description: Stuct containing the CA cert to use for the
|
|
||||||
targets.
|
|
||||||
properties:
|
|
||||||
configMap:
|
|
||||||
description: ConfigMap containing data to use for the
|
|
||||||
targets.
|
|
||||||
properties:
|
|
||||||
key:
|
|
||||||
description: The key to select.
|
|
||||||
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 ConfigMap or its
|
|
||||||
key must be defined
|
|
||||||
type: boolean
|
|
||||||
required:
|
|
||||||
- key
|
|
||||||
type: object
|
|
||||||
secret:
|
|
||||||
description: Secret containing data to use for the targets.
|
|
||||||
properties:
|
|
||||||
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
|
|
||||||
type: boolean
|
|
||||||
required:
|
|
||||||
- key
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
caFile:
|
|
||||||
description: Path to the CA cert in the Prometheus container
|
|
||||||
to use for the targets.
|
|
||||||
type: string
|
|
||||||
cert:
|
|
||||||
description: Struct containing the client cert file for
|
|
||||||
the targets.
|
|
||||||
properties:
|
|
||||||
configMap:
|
|
||||||
description: ConfigMap containing data to use for the
|
|
||||||
targets.
|
|
||||||
properties:
|
|
||||||
key:
|
|
||||||
description: The key to select.
|
|
||||||
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 ConfigMap or its
|
|
||||||
key must be defined
|
|
||||||
type: boolean
|
|
||||||
required:
|
|
||||||
- key
|
|
||||||
type: object
|
|
||||||
secret:
|
|
||||||
description: Secret containing data to use for the targets.
|
|
||||||
properties:
|
|
||||||
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
|
|
||||||
type: boolean
|
|
||||||
required:
|
|
||||||
- key
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
certFile:
|
|
||||||
description: Path to the client cert file in the Prometheus
|
|
||||||
container for the targets.
|
|
||||||
type: string
|
|
||||||
insecureSkipVerify:
|
|
||||||
description: Disable target certificate validation.
|
|
||||||
type: boolean
|
|
||||||
keyFile:
|
|
||||||
description: Path to the client key file in the Prometheus
|
|
||||||
container for the targets.
|
|
||||||
type: string
|
|
||||||
keySecret:
|
|
||||||
description: Secret containing the client key file for the
|
|
||||||
targets.
|
|
||||||
properties:
|
|
||||||
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
|
|
||||||
type: boolean
|
|
||||||
required:
|
|
||||||
- key
|
|
||||||
type: object
|
|
||||||
serverName:
|
|
||||||
description: Used to verify the hostname for the targets.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
jobLabel:
|
|
||||||
description: The label to use to retrieve the job name from.
|
|
||||||
type: string
|
|
||||||
namespaceSelector:
|
|
||||||
description: Selector to select which namespaces the Endpoints objects
|
|
||||||
are discovered from.
|
|
||||||
properties:
|
properties:
|
||||||
any:
|
basicAuth:
|
||||||
description: Boolean describing whether all namespaces are selected
|
description: 'BasicAuth allow an endpoint to authenticate over
|
||||||
in contrast to a list restricting them.
|
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.
|
||||||
|
properties:
|
||||||
|
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
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
username:
|
||||||
|
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
|
||||||
|
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
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
bearerTokenFile:
|
||||||
|
description: File to read bearer token for scraping targets.
|
||||||
|
type: string
|
||||||
|
bearerTokenSecret:
|
||||||
|
description: Secret to mount to read bearer token for scraping
|
||||||
|
targets. The secret needs to be in the same namespace as the
|
||||||
|
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.
|
||||||
|
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
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
honorLabels:
|
||||||
|
description: HonorLabels chooses the metric's labels on collisions
|
||||||
|
with target labels.
|
||||||
type: boolean
|
type: boolean
|
||||||
matchNames:
|
honorTimestamps:
|
||||||
description: List of namespace names.
|
description: HonorTimestamps controls whether Prometheus respects
|
||||||
|
the timestamps present in scraped data.
|
||||||
|
type: boolean
|
||||||
|
interval:
|
||||||
|
description: Interval at which metrics should be scraped
|
||||||
|
type: string
|
||||||
|
metricRelabelings:
|
||||||
|
description: MetricRelabelConfigs to apply to samples before ingestion.
|
||||||
items:
|
items:
|
||||||
type: string
|
description: 'RelabelConfig allows dynamic rewriting of the
|
||||||
type: array
|
label set, being applied to samples before ingestion. It defines
|
||||||
type: object
|
`<metric_relabel_configs>`-section of Prometheus configuration.
|
||||||
podTargetLabels:
|
More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
|
||||||
description: PodTargetLabels transfers labels on the Kubernetes Pod
|
|
||||||
onto the target.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
sampleLimit:
|
|
||||||
description: SampleLimit defines per-scrape limit on number of scraped
|
|
||||||
samples that will be accepted.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
selector:
|
|
||||||
description: Selector to select Endpoints objects.
|
|
||||||
properties:
|
|
||||||
matchExpressions:
|
|
||||||
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.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
action:
|
||||||
description: key is the label key that the selector applies
|
description: Action to perform based on regex matching.
|
||||||
to.
|
Default is 'replace'
|
||||||
type: string
|
type: string
|
||||||
operator:
|
modulus:
|
||||||
description: operator represents a key's relationship to
|
description: Modulus to take of the hash of the source label
|
||||||
a set of values. Valid operators are In, NotIn, Exists
|
values.
|
||||||
and DoesNotExist.
|
format: int64
|
||||||
|
type: integer
|
||||||
|
regex:
|
||||||
|
description: Regular expression against which the extracted
|
||||||
|
value is matched. Default is '(.*)'
|
||||||
type: string
|
type: string
|
||||||
values:
|
replacement:
|
||||||
description: values is an array of string values. If the
|
description: Replacement value against which a regex replace
|
||||||
operator is In or NotIn, the values array must be non-empty.
|
is performed if the regular expression matches. Regex
|
||||||
If the operator is Exists or DoesNotExist, the values
|
capture groups are available. Default is '$1'
|
||||||
array must be empty. This array is replaced during a strategic
|
type: string
|
||||||
merge patch.
|
separator:
|
||||||
|
description: Separator placed between concatenated source
|
||||||
|
label values. default is ';'.
|
||||||
|
type: string
|
||||||
|
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.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
required:
|
targetLabel:
|
||||||
- key
|
description: Label to which the resulting value is written
|
||||||
- operator
|
in a replace action. It is mandatory for replace actions.
|
||||||
|
Regex capture groups are available.
|
||||||
|
type: string
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
matchLabels:
|
params:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
items:
|
||||||
description: matchLabels is a map of {key,value} pairs. A single
|
type: string
|
||||||
{key,value} in the matchLabels map is equivalent to an element
|
type: array
|
||||||
of matchExpressions, whose key field is "key", the operator
|
description: Optional HTTP URL parameters
|
||||||
is "In", and the values array contains only "value". The requirements
|
type: object
|
||||||
are ANDed.
|
path:
|
||||||
|
description: HTTP path to scrape for metrics.
|
||||||
|
type: string
|
||||||
|
port:
|
||||||
|
description: Name of the service port this endpoint refers to.
|
||||||
|
Mutually exclusive with targetPort.
|
||||||
|
type: string
|
||||||
|
proxyUrl:
|
||||||
|
description: ProxyURL eg http://proxyserver:2195 Directs scrapes
|
||||||
|
to proxy through this endpoint.
|
||||||
|
type: string
|
||||||
|
relabelings:
|
||||||
|
description: 'RelabelConfigs to apply to samples before scraping.
|
||||||
|
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'
|
||||||
|
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.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
regex:
|
||||||
|
description: Regular expression against which the extracted
|
||||||
|
value is matched. Default is '(.*)'
|
||||||
|
type: string
|
||||||
|
replacement:
|
||||||
|
description: Replacement value against which a regex replace
|
||||||
|
is performed if the regular expression matches. Regex
|
||||||
|
capture groups are available. Default is '$1'
|
||||||
|
type: string
|
||||||
|
separator:
|
||||||
|
description: Separator placed between concatenated source
|
||||||
|
label values. default is ';'.
|
||||||
|
type: string
|
||||||
|
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.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
targetLabel:
|
||||||
|
description: Label to which the resulting value is written
|
||||||
|
in a replace action. It is mandatory for replace actions.
|
||||||
|
Regex capture groups are available.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
scheme:
|
||||||
|
description: HTTP scheme to use for scraping.
|
||||||
|
type: string
|
||||||
|
scrapeTimeout:
|
||||||
|
description: Timeout after which the scrape is ended
|
||||||
|
type: string
|
||||||
|
targetPort:
|
||||||
|
anyOf:
|
||||||
|
- type: integer
|
||||||
|
- type: string
|
||||||
|
description: Name or number of the target port of the endpoint.
|
||||||
|
Mutually exclusive with port.
|
||||||
|
x-kubernetes-int-or-string: true
|
||||||
|
tlsConfig:
|
||||||
|
description: TLS configuration to use when scraping the endpoint
|
||||||
|
properties:
|
||||||
|
ca:
|
||||||
|
description: Stuct containing the CA cert to use for the targets.
|
||||||
|
properties:
|
||||||
|
configMap:
|
||||||
|
description: ConfigMap containing data to use for the
|
||||||
|
targets.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: The key to select.
|
||||||
|
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 ConfigMap or its
|
||||||
|
key must be defined
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
secret:
|
||||||
|
description: Secret containing data to use for the targets.
|
||||||
|
properties:
|
||||||
|
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
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
caFile:
|
||||||
|
description: Path to the CA cert in the Prometheus container
|
||||||
|
to use for the targets.
|
||||||
|
type: string
|
||||||
|
cert:
|
||||||
|
description: Struct containing the client cert file for the
|
||||||
|
targets.
|
||||||
|
properties:
|
||||||
|
configMap:
|
||||||
|
description: ConfigMap containing data to use for the
|
||||||
|
targets.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: The key to select.
|
||||||
|
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 ConfigMap or its
|
||||||
|
key must be defined
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
secret:
|
||||||
|
description: Secret containing data to use for the targets.
|
||||||
|
properties:
|
||||||
|
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
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
certFile:
|
||||||
|
description: Path to the client cert file in the Prometheus
|
||||||
|
container for the targets.
|
||||||
|
type: string
|
||||||
|
insecureSkipVerify:
|
||||||
|
description: Disable target certificate validation.
|
||||||
|
type: boolean
|
||||||
|
keyFile:
|
||||||
|
description: Path to the client key file in the Prometheus
|
||||||
|
container for the targets.
|
||||||
|
type: string
|
||||||
|
keySecret:
|
||||||
|
description: Secret containing the client key file for the
|
||||||
|
targets.
|
||||||
|
properties:
|
||||||
|
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
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
serverName:
|
||||||
|
description: Used to verify the hostname for the targets.
|
||||||
|
type: string
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
targetLabels:
|
type: array
|
||||||
description: TargetLabels transfers labels on the Kubernetes Service
|
jobLabel:
|
||||||
onto the target.
|
description: The label to use to retrieve the job name from.
|
||||||
items:
|
type: string
|
||||||
type: string
|
namespaceSelector:
|
||||||
type: array
|
description: Selector to select which namespaces the Endpoints objects
|
||||||
required:
|
are discovered from.
|
||||||
- endpoints
|
properties:
|
||||||
- selector
|
any:
|
||||||
type: object
|
description: Boolean describing whether all namespaces are selected
|
||||||
required:
|
in contrast to a list restricting them.
|
||||||
- spec
|
type: boolean
|
||||||
type: object
|
matchNames:
|
||||||
|
description: List of namespace names.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
podTargetLabels:
|
||||||
|
description: PodTargetLabels transfers labels on the Kubernetes Pod
|
||||||
|
onto the target.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
sampleLimit:
|
||||||
|
description: SampleLimit defines per-scrape limit on number of scraped
|
||||||
|
samples that will be accepted.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
selector:
|
||||||
|
description: Selector to select Endpoints objects.
|
||||||
|
properties:
|
||||||
|
matchExpressions:
|
||||||
|
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.
|
||||||
|
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.
|
||||||
|
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.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
- operator
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
matchLabels:
|
||||||
|
additionalProperties:
|
||||||
|
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
|
||||||
|
are ANDed.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
targetLabels:
|
||||||
|
description: TargetLabels transfers labels on the Kubernetes Service
|
||||||
|
onto the target.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- endpoints
|
||||||
|
- selector
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
version: v1
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
served: true
|
served: true
|
||||||
storage: true
|
storage: true
|
||||||
status:
|
status:
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -7,6 +7,26 @@ metadata:
|
|||||||
app.kubernetes.io/version: v0.37.0
|
app.kubernetes.io/version: v0.37.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
rules:
|
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:
|
- apiGroups:
|
||||||
- monitoring.coreos.com
|
- monitoring.coreos.com
|
||||||
resources:
|
resources:
|
||||||
@ -67,15 +87,3 @@ rules:
|
|||||||
- get
|
- get
|
||||||
- list
|
- list
|
||||||
- watch
|
- watch
|
||||||
- apiGroups:
|
|
||||||
- authentication.k8s.io
|
|
||||||
resources:
|
|
||||||
- tokenreviews
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
- apiGroups:
|
|
||||||
- authorization.k8s.io
|
|
||||||
resources:
|
|
||||||
- subjectaccessreviews
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
|
@ -40,18 +40,6 @@ spec:
|
|||||||
memory: 100Mi
|
memory: 100Mi
|
||||||
securityContext:
|
securityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
- args:
|
|
||||||
- --logtostderr
|
|
||||||
- --secure-listen-address=:8443
|
|
||||||
- --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
|
|
||||||
- --upstream=http://127.0.0.1:8080/
|
|
||||||
image: carlosedp/kube-rbac-proxy:v0.5.0
|
|
||||||
name: kube-rbac-proxy
|
|
||||||
ports:
|
|
||||||
- containerPort: 8443
|
|
||||||
name: https
|
|
||||||
securityContext:
|
|
||||||
runAsUser: 65534
|
|
||||||
nodeSelector:
|
nodeSelector:
|
||||||
beta.kubernetes.io/os: linux
|
beta.kubernetes.io/os: linux
|
||||||
securityContext:
|
securityContext:
|
||||||
|
@ -10,9 +10,9 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
clusterIP: None
|
clusterIP: None
|
||||||
ports:
|
ports:
|
||||||
- name: https
|
- name: http
|
||||||
port: 8443
|
port: 8080
|
||||||
targetPort: https
|
targetPort: http
|
||||||
selector:
|
selector:
|
||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -2,19 +2,17 @@ apiVersion: apps/v1
|
|||||||
kind: DaemonSet
|
kind: DaemonSet
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: node-exporter
|
app: node-exporter
|
||||||
app.kubernetes.io/version: v0.18.1
|
|
||||||
name: node-exporter
|
name: node-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app.kubernetes.io/name: node-exporter
|
app: node-exporter
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: node-exporter
|
app: node-exporter
|
||||||
app.kubernetes.io/version: v0.18.1
|
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- args:
|
- args:
|
||||||
@ -24,7 +22,8 @@ spec:
|
|||||||
- --path.rootfs=/host/root
|
- --path.rootfs=/host/root
|
||||||
- --no-collector.wifi
|
- --no-collector.wifi
|
||||||
- --no-collector.hwmon
|
- --no-collector.hwmon
|
||||||
- --collector.filesystem.ignored-mount-points=^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)
|
- --collector.filesystem.ignored-mount-points=^/(dev|proc|sys|var/lib/docker/.+)($|/)
|
||||||
|
- --collector.filesystem.ignored-fs-types=^(autofs|binfmt_misc|cgroup|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|mqueue|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|sysfs|tracefs)$
|
||||||
image: prom/node-exporter:v0.18.1
|
image: prom/node-exporter:v0.18.1
|
||||||
name: node-exporter
|
name: node-exporter
|
||||||
resources:
|
resources:
|
||||||
|
@ -2,8 +2,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: node-exporter
|
k8s-app: node-exporter
|
||||||
app.kubernetes.io/version: v0.18.1
|
|
||||||
name: node-exporter
|
name: node-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
@ -13,4 +12,4 @@ spec:
|
|||||||
port: 9100
|
port: 9100
|
||||||
targetPort: https
|
targetPort: https
|
||||||
selector:
|
selector:
|
||||||
app.kubernetes.io/name: node-exporter
|
app: node-exporter
|
||||||
|
@ -2,8 +2,7 @@ apiVersion: monitoring.coreos.com/v1
|
|||||||
kind: ServiceMonitor
|
kind: ServiceMonitor
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: node-exporter
|
k8s-app: node-exporter
|
||||||
app.kubernetes.io/version: v0.18.1
|
|
||||||
name: node-exporter
|
name: node-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
@ -21,7 +20,7 @@ spec:
|
|||||||
scheme: https
|
scheme: https
|
||||||
tlsConfig:
|
tlsConfig:
|
||||||
insecureSkipVerify: true
|
insecureSkipVerify: true
|
||||||
jobLabel: app.kubernetes.io/name
|
jobLabel: k8s-app
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app.kubernetes.io/name: node-exporter
|
k8s-app: node-exporter
|
||||||
|
@ -1,32 +1,32 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
data:
|
data:
|
||||||
config.yaml: |-
|
config.yaml: |
|
||||||
"resourceRules":
|
resourceRules:
|
||||||
"cpu":
|
cpu:
|
||||||
"containerLabel": "container"
|
containerQuery: sum(irate(container_cpu_usage_seconds_total{<<.LabelMatchers>>,container!="POD",container!="",pod!=""}[5m])) by (<<.GroupBy>>)
|
||||||
"containerQuery": "sum(irate(container_cpu_usage_seconds_total{<<.LabelMatchers>>,container!=\"POD\",container!=\"\",pod!=\"\"}[5m])) by (<<.GroupBy>>)"
|
nodeQuery: sum(1 - irate(node_cpu_seconds_total{mode="idle"}[5m]) * on(namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}) by (<<.GroupBy>>)
|
||||||
"nodeQuery": "sum(1 - irate(node_cpu_seconds_total{mode=\"idle\"}[5m]) * on(namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}) by (<<.GroupBy>>)"
|
resources:
|
||||||
"resources":
|
overrides:
|
||||||
"overrides":
|
node:
|
||||||
"namespace":
|
resource: node
|
||||||
"resource": "namespace"
|
namespace:
|
||||||
"node":
|
resource: namespace
|
||||||
"resource": "node"
|
pod:
|
||||||
"pod":
|
resource: pod
|
||||||
"resource": "pod"
|
containerLabel: container
|
||||||
"memory":
|
memory:
|
||||||
"containerLabel": "container"
|
containerQuery: sum(container_memory_working_set_bytes{<<.LabelMatchers>>,container!="POD",container!="",pod!=""}) by (<<.GroupBy>>)
|
||||||
"containerQuery": "sum(container_memory_working_set_bytes{<<.LabelMatchers>>,container!=\"POD\",container!=\"\",pod!=\"\"}) by (<<.GroupBy>>)"
|
nodeQuery: sum(node_memory_MemTotal_bytes{job="node-exporter",<<.LabelMatchers>>} - node_memory_MemAvailable_bytes{job="node-exporter",<<.LabelMatchers>>}) by (<<.GroupBy>>)
|
||||||
"nodeQuery": "sum(node_memory_MemTotal_bytes{job=\"node-exporter\",<<.LabelMatchers>>} - node_memory_MemAvailable_bytes{job=\"node-exporter\",<<.LabelMatchers>>}) by (<<.GroupBy>>)"
|
resources:
|
||||||
"resources":
|
overrides:
|
||||||
"overrides":
|
instance:
|
||||||
"instance":
|
resource: node
|
||||||
"resource": "node"
|
namespace:
|
||||||
"namespace":
|
resource: namespace
|
||||||
"resource": "namespace"
|
pod:
|
||||||
"pod":
|
resource: pod
|
||||||
"resource": "pod"
|
containerLabel: container
|
||||||
"window": "5m"
|
window: 5m
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
name: adapter-config
|
name: adapter-config
|
||||||
|
@ -9,12 +9,8 @@ metadata:
|
|||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
endpoints:
|
endpoints:
|
||||||
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
|
- honorLabels: true
|
||||||
honorLabels: true
|
port: http
|
||||||
port: https
|
|
||||||
scheme: https
|
|
||||||
tlsConfig:
|
|
||||||
insecureSkipVerify: true
|
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
|
@ -65,289 +65,122 @@ spec:
|
|||||||
rate(node_network_transmit_drop_total{job="node-exporter", device!="lo"}[1m])
|
rate(node_network_transmit_drop_total{job="node-exporter", device!="lo"}[1m])
|
||||||
)
|
)
|
||||||
record: instance:node_network_transmit_drop_excluding_lo:rate1m
|
record: instance:node_network_transmit_drop_excluding_lo:rate1m
|
||||||
- name: kube-apiserver.rules
|
- name: kube-apiserver-error
|
||||||
rules:
|
rules:
|
||||||
- expr: |
|
- expr: |
|
||||||
(
|
sum by (status_class) (
|
||||||
(
|
label_replace(
|
||||||
# too slow
|
rate(apiserver_request_total{job="apiserver"}[5m]
|
||||||
sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[1d]))
|
), "status_class", "${1}xx", "code", "([0-9])..")
|
||||||
-
|
|
||||||
(
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[1d])) +
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[1d])) +
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[1d]))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
+
|
|
||||||
# errors
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[1d]))
|
|
||||||
)
|
)
|
||||||
/
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[1d]))
|
|
||||||
labels:
|
labels:
|
||||||
verb: read
|
job: apiserver
|
||||||
record: apiserver_request:burnrate1d
|
record: status_class:apiserver_request_total:rate5m
|
||||||
- expr: |
|
- expr: |
|
||||||
(
|
sum by (status_class) (
|
||||||
(
|
label_replace(
|
||||||
# too slow
|
rate(apiserver_request_total{job="apiserver"}[30m]
|
||||||
sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[1h]))
|
), "status_class", "${1}xx", "code", "([0-9])..")
|
||||||
-
|
|
||||||
(
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[1h])) +
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[1h])) +
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[1h]))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
+
|
|
||||||
# errors
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[1h]))
|
|
||||||
)
|
)
|
||||||
/
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[1h]))
|
|
||||||
labels:
|
labels:
|
||||||
verb: read
|
job: apiserver
|
||||||
record: apiserver_request:burnrate1h
|
record: status_class:apiserver_request_total:rate30m
|
||||||
- expr: |
|
- expr: |
|
||||||
(
|
sum by (status_class) (
|
||||||
(
|
label_replace(
|
||||||
# too slow
|
rate(apiserver_request_total{job="apiserver"}[1h]
|
||||||
sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[2h]))
|
), "status_class", "${1}xx", "code", "([0-9])..")
|
||||||
-
|
|
||||||
(
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[2h])) +
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[2h])) +
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[2h]))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
+
|
|
||||||
# errors
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[2h]))
|
|
||||||
)
|
)
|
||||||
/
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[2h]))
|
|
||||||
labels:
|
labels:
|
||||||
verb: read
|
job: apiserver
|
||||||
record: apiserver_request:burnrate2h
|
record: status_class:apiserver_request_total:rate1h
|
||||||
- expr: |
|
- expr: |
|
||||||
(
|
sum by (status_class) (
|
||||||
(
|
label_replace(
|
||||||
# too slow
|
rate(apiserver_request_total{job="apiserver"}[2h]
|
||||||
sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[30m]))
|
), "status_class", "${1}xx", "code", "([0-9])..")
|
||||||
-
|
|
||||||
(
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[30m])) +
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[30m])) +
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[30m]))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
+
|
|
||||||
# errors
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[30m]))
|
|
||||||
)
|
)
|
||||||
/
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[30m]))
|
|
||||||
labels:
|
labels:
|
||||||
verb: read
|
job: apiserver
|
||||||
record: apiserver_request:burnrate30m
|
record: status_class:apiserver_request_total:rate2h
|
||||||
- expr: |
|
- expr: |
|
||||||
(
|
sum by (status_class) (
|
||||||
(
|
label_replace(
|
||||||
# too slow
|
rate(apiserver_request_total{job="apiserver"}[6h]
|
||||||
sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[3d]))
|
), "status_class", "${1}xx", "code", "([0-9])..")
|
||||||
-
|
|
||||||
(
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[3d])) +
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[3d])) +
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[3d]))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
+
|
|
||||||
# errors
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[3d]))
|
|
||||||
)
|
)
|
||||||
/
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[3d]))
|
|
||||||
labels:
|
labels:
|
||||||
verb: read
|
job: apiserver
|
||||||
record: apiserver_request:burnrate3d
|
record: status_class:apiserver_request_total:rate6h
|
||||||
- expr: |
|
- expr: |
|
||||||
(
|
sum by (status_class) (
|
||||||
(
|
label_replace(
|
||||||
# too slow
|
rate(apiserver_request_total{job="apiserver"}[1d]
|
||||||
sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[5m]))
|
), "status_class", "${1}xx", "code", "([0-9])..")
|
||||||
-
|
|
||||||
(
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[5m])) +
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[5m])) +
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[5m]))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
+
|
|
||||||
# errors
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[5m]))
|
|
||||||
)
|
)
|
||||||
/
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[5m]))
|
|
||||||
labels:
|
labels:
|
||||||
verb: read
|
job: apiserver
|
||||||
record: apiserver_request:burnrate5m
|
record: status_class:apiserver_request_total:rate1d
|
||||||
- expr: |
|
- expr: |
|
||||||
(
|
sum by (status_class) (
|
||||||
(
|
label_replace(
|
||||||
# too slow
|
rate(apiserver_request_total{job="apiserver"}[3d]
|
||||||
sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[6h]))
|
), "status_class", "${1}xx", "code", "([0-9])..")
|
||||||
-
|
|
||||||
(
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[6h])) +
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[6h])) +
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[6h]))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
+
|
|
||||||
# errors
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[6h]))
|
|
||||||
)
|
)
|
||||||
|
labels:
|
||||||
|
job: apiserver
|
||||||
|
record: status_class:apiserver_request_total:rate3d
|
||||||
|
- expr: |
|
||||||
|
sum(status_class:apiserver_request_total:rate5m{job="apiserver",status_class="5xx"})
|
||||||
/
|
/
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[6h]))
|
sum(status_class:apiserver_request_total:rate5m{job="apiserver"})
|
||||||
labels:
|
labels:
|
||||||
verb: read
|
job: apiserver
|
||||||
record: apiserver_request:burnrate6h
|
record: status_class_5xx:apiserver_request_total:ratio_rate5m
|
||||||
- expr: |
|
- expr: |
|
||||||
(
|
sum(status_class:apiserver_request_total:rate30m{job="apiserver",status_class="5xx"})
|
||||||
(
|
|
||||||
# too slow
|
|
||||||
sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1d]))
|
|
||||||
-
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[1d]))
|
|
||||||
)
|
|
||||||
+
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1d]))
|
|
||||||
)
|
|
||||||
/
|
/
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1d]))
|
sum(status_class:apiserver_request_total:rate30m{job="apiserver"})
|
||||||
labels:
|
labels:
|
||||||
verb: write
|
job: apiserver
|
||||||
record: apiserver_request:burnrate1d
|
record: status_class_5xx:apiserver_request_total:ratio_rate30m
|
||||||
- expr: |
|
- expr: |
|
||||||
(
|
sum(status_class:apiserver_request_total:rate1h{job="apiserver",status_class="5xx"})
|
||||||
(
|
|
||||||
# too slow
|
|
||||||
sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1h]))
|
|
||||||
-
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[1h]))
|
|
||||||
)
|
|
||||||
+
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1h]))
|
|
||||||
)
|
|
||||||
/
|
/
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1h]))
|
sum(status_class:apiserver_request_total:rate1h{job="apiserver"})
|
||||||
labels:
|
labels:
|
||||||
verb: write
|
job: apiserver
|
||||||
record: apiserver_request:burnrate1h
|
record: status_class_5xx:apiserver_request_total:ratio_rate1h
|
||||||
- expr: |
|
- expr: |
|
||||||
(
|
sum(status_class:apiserver_request_total:rate2h{job="apiserver",status_class="5xx"})
|
||||||
(
|
|
||||||
# too slow
|
|
||||||
sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[2h]))
|
|
||||||
-
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[2h]))
|
|
||||||
)
|
|
||||||
+
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[2h]))
|
|
||||||
)
|
|
||||||
/
|
/
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[2h]))
|
sum(status_class:apiserver_request_total:rate2h{job="apiserver"})
|
||||||
labels:
|
labels:
|
||||||
verb: write
|
job: apiserver
|
||||||
record: apiserver_request:burnrate2h
|
record: status_class_5xx:apiserver_request_total:ratio_rate2h
|
||||||
- expr: |
|
- expr: |
|
||||||
(
|
sum(status_class:apiserver_request_total:rate6h{job="apiserver",status_class="5xx"})
|
||||||
(
|
|
||||||
# too slow
|
|
||||||
sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[30m]))
|
|
||||||
-
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[30m]))
|
|
||||||
)
|
|
||||||
+
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[30m]))
|
|
||||||
)
|
|
||||||
/
|
/
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[30m]))
|
sum(status_class:apiserver_request_total:rate6h{job="apiserver"})
|
||||||
labels:
|
labels:
|
||||||
verb: write
|
job: apiserver
|
||||||
record: apiserver_request:burnrate30m
|
record: status_class_5xx:apiserver_request_total:ratio_rate6h
|
||||||
- expr: |
|
- expr: |
|
||||||
(
|
sum(status_class:apiserver_request_total:rate1d{job="apiserver",status_class="5xx"})
|
||||||
(
|
|
||||||
# too slow
|
|
||||||
sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[3d]))
|
|
||||||
-
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[3d]))
|
|
||||||
)
|
|
||||||
+
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[3d]))
|
|
||||||
)
|
|
||||||
/
|
/
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[3d]))
|
sum(status_class:apiserver_request_total:rate1d{job="apiserver"})
|
||||||
labels:
|
labels:
|
||||||
verb: write
|
job: apiserver
|
||||||
record: apiserver_request:burnrate3d
|
record: status_class_5xx:apiserver_request_total:ratio_rate1d
|
||||||
- expr: |
|
- expr: |
|
||||||
(
|
sum(status_class:apiserver_request_total:rate3d{job="apiserver",status_class="5xx"})
|
||||||
(
|
|
||||||
# too slow
|
|
||||||
sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m]))
|
|
||||||
-
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[5m]))
|
|
||||||
)
|
|
||||||
+
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[5m]))
|
|
||||||
)
|
|
||||||
/
|
/
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m]))
|
sum(status_class:apiserver_request_total:rate3d{job="apiserver"})
|
||||||
labels:
|
labels:
|
||||||
verb: write
|
job: apiserver
|
||||||
record: apiserver_request:burnrate5m
|
record: status_class_5xx:apiserver_request_total:ratio_rate3d
|
||||||
- expr: |
|
- name: kube-apiserver.rules
|
||||||
(
|
rules:
|
||||||
(
|
|
||||||
# too slow
|
|
||||||
sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[6h]))
|
|
||||||
-
|
|
||||||
sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[6h]))
|
|
||||||
)
|
|
||||||
+
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[6h]))
|
|
||||||
)
|
|
||||||
/
|
|
||||||
sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[6h]))
|
|
||||||
labels:
|
|
||||||
verb: write
|
|
||||||
record: apiserver_request:burnrate6h
|
|
||||||
- expr: |
|
|
||||||
sum by (code,resource) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[5m]))
|
|
||||||
labels:
|
|
||||||
verb: read
|
|
||||||
record: code_resource:apiserver_request_total:rate5m
|
|
||||||
- expr: |
|
|
||||||
sum by (code,resource) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m]))
|
|
||||||
labels:
|
|
||||||
verb: write
|
|
||||||
record: code_resource:apiserver_request_total:rate5m
|
|
||||||
- expr: |
|
|
||||||
histogram_quantile(0.99, sum by (le, resource) (rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET"}[5m]))) > 0
|
|
||||||
labels:
|
|
||||||
quantile: "0.99"
|
|
||||||
verb: read
|
|
||||||
record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile
|
|
||||||
- expr: |
|
|
||||||
histogram_quantile(0.99, sum by (le, resource) (rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m]))) > 0
|
|
||||||
labels:
|
|
||||||
quantile: "0.99"
|
|
||||||
verb: write
|
|
||||||
record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile
|
|
||||||
- expr: |
|
- expr: |
|
||||||
sum(rate(apiserver_request_duration_seconds_sum{subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod)
|
sum(rate(apiserver_request_duration_seconds_sum{subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod)
|
||||||
/
|
/
|
||||||
@ -368,153 +201,6 @@ spec:
|
|||||||
labels:
|
labels:
|
||||||
quantile: "0.5"
|
quantile: "0.5"
|
||||||
record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile
|
record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile
|
||||||
- interval: 3m
|
|
||||||
name: kube-apiserver-availability.rules
|
|
||||||
rules:
|
|
||||||
- expr: |
|
|
||||||
1 - (
|
|
||||||
(
|
|
||||||
# write too slow
|
|
||||||
sum(increase(apiserver_request_duration_seconds_count{verb=~"POST|PUT|PATCH|DELETE"}[30d]))
|
|
||||||
-
|
|
||||||
sum(increase(apiserver_request_duration_seconds_bucket{verb=~"POST|PUT|PATCH|DELETE",le="1"}[30d]))
|
|
||||||
) +
|
|
||||||
(
|
|
||||||
# read too slow
|
|
||||||
sum(increase(apiserver_request_duration_seconds_count{verb=~"LIST|GET"}[30d]))
|
|
||||||
-
|
|
||||||
(
|
|
||||||
sum(increase(apiserver_request_duration_seconds_bucket{verb=~"LIST|GET",scope=~"resource|",le="0.1"}[30d])) +
|
|
||||||
sum(increase(apiserver_request_duration_seconds_bucket{verb=~"LIST|GET",scope="namespace",le="0.5"}[30d])) +
|
|
||||||
sum(increase(apiserver_request_duration_seconds_bucket{verb=~"LIST|GET",scope="cluster",le="5"}[30d]))
|
|
||||||
)
|
|
||||||
) +
|
|
||||||
# errors
|
|
||||||
sum(code:apiserver_request_total:increase30d{code=~"5.."} or vector(0))
|
|
||||||
)
|
|
||||||
/
|
|
||||||
sum(code:apiserver_request_total:increase30d)
|
|
||||||
labels:
|
|
||||||
verb: all
|
|
||||||
record: apiserver_request:availability30d
|
|
||||||
- expr: |
|
|
||||||
1 - (
|
|
||||||
sum(increase(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[30d]))
|
|
||||||
-
|
|
||||||
(
|
|
||||||
# too slow
|
|
||||||
sum(increase(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[30d])) +
|
|
||||||
sum(increase(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[30d])) +
|
|
||||||
sum(increase(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[30d]))
|
|
||||||
)
|
|
||||||
+
|
|
||||||
# errors
|
|
||||||
sum(code:apiserver_request_total:increase30d{verb="read",code=~"5.."} or vector(0))
|
|
||||||
)
|
|
||||||
/
|
|
||||||
sum(code:apiserver_request_total:increase30d{verb="read"})
|
|
||||||
labels:
|
|
||||||
verb: read
|
|
||||||
record: apiserver_request:availability30d
|
|
||||||
- expr: |
|
|
||||||
1 - (
|
|
||||||
(
|
|
||||||
# too slow
|
|
||||||
sum(increase(apiserver_request_duration_seconds_count{verb=~"POST|PUT|PATCH|DELETE"}[30d]))
|
|
||||||
-
|
|
||||||
sum(increase(apiserver_request_duration_seconds_bucket{verb=~"POST|PUT|PATCH|DELETE",le="1"}[30d]))
|
|
||||||
)
|
|
||||||
+
|
|
||||||
# errors
|
|
||||||
sum(code:apiserver_request_total:increase30d{verb="write",code=~"5.."} or vector(0))
|
|
||||||
)
|
|
||||||
/
|
|
||||||
sum(code:apiserver_request_total:increase30d{verb="write"})
|
|
||||||
labels:
|
|
||||||
verb: write
|
|
||||||
record: apiserver_request:availability30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="LIST",code=~"2.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="GET",code=~"2.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="POST",code=~"2.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PUT",code=~"2.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PATCH",code=~"2.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="DELETE",code=~"2.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="LIST",code=~"3.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="GET",code=~"3.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="POST",code=~"3.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PUT",code=~"3.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PATCH",code=~"3.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="DELETE",code=~"3.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="LIST",code=~"4.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="GET",code=~"4.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="POST",code=~"4.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PUT",code=~"4.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PATCH",code=~"4.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="DELETE",code=~"4.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="LIST",code=~"5.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="GET",code=~"5.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="POST",code=~"5.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PUT",code=~"5.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PATCH",code=~"5.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="DELETE",code=~"5.."}[30d]))
|
|
||||||
record: code_verb:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code) (code_verb:apiserver_request_total:increase30d{verb=~"LIST|GET"})
|
|
||||||
labels:
|
|
||||||
verb: read
|
|
||||||
record: code:apiserver_request_total:increase30d
|
|
||||||
- expr: |
|
|
||||||
sum by (code) (code_verb:apiserver_request_total:increase30d{verb=~"POST|PUT|PATCH|DELETE"})
|
|
||||||
labels:
|
|
||||||
verb: write
|
|
||||||
record: code:apiserver_request_total:increase30d
|
|
||||||
- name: k8s.rules
|
- name: k8s.rules
|
||||||
rules:
|
rules:
|
||||||
- expr: |
|
- expr: |
|
||||||
@ -524,31 +210,31 @@ spec:
|
|||||||
sum by (cluster, namespace, pod, container) (
|
sum by (cluster, namespace, pod, container) (
|
||||||
rate(container_cpu_usage_seconds_total{job="kubelet", metrics_path="/metrics/cadvisor", image!="", container!="POD"}[5m])
|
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) (
|
) * on (cluster, namespace, pod) group_left(node) topk by (cluster, namespace, pod) (
|
||||||
1, max by(cluster, namespace, pod, node) (kube_pod_info{node!=""})
|
1, max by(cluster, namespace, pod, node) (kube_pod_info)
|
||||||
)
|
)
|
||||||
record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate
|
record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate
|
||||||
- expr: |
|
- expr: |
|
||||||
container_memory_working_set_bytes{job="kubelet", metrics_path="/metrics/cadvisor", image!=""}
|
container_memory_working_set_bytes{job="kubelet", metrics_path="/metrics/cadvisor", image!=""}
|
||||||
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
||||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
max by(namespace, pod, node) (kube_pod_info)
|
||||||
)
|
)
|
||||||
record: node_namespace_pod_container:container_memory_working_set_bytes
|
record: node_namespace_pod_container:container_memory_working_set_bytes
|
||||||
- expr: |
|
- expr: |
|
||||||
container_memory_rss{job="kubelet", metrics_path="/metrics/cadvisor", image!=""}
|
container_memory_rss{job="kubelet", metrics_path="/metrics/cadvisor", image!=""}
|
||||||
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
||||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
max by(namespace, pod, node) (kube_pod_info)
|
||||||
)
|
)
|
||||||
record: node_namespace_pod_container:container_memory_rss
|
record: node_namespace_pod_container:container_memory_rss
|
||||||
- expr: |
|
- expr: |
|
||||||
container_memory_cache{job="kubelet", metrics_path="/metrics/cadvisor", image!=""}
|
container_memory_cache{job="kubelet", metrics_path="/metrics/cadvisor", image!=""}
|
||||||
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
||||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
max by(namespace, pod, node) (kube_pod_info)
|
||||||
)
|
)
|
||||||
record: node_namespace_pod_container:container_memory_cache
|
record: node_namespace_pod_container:container_memory_cache
|
||||||
- expr: |
|
- expr: |
|
||||||
container_memory_swap{job="kubelet", metrics_path="/metrics/cadvisor", image!=""}
|
container_memory_swap{job="kubelet", metrics_path="/metrics/cadvisor", image!=""}
|
||||||
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
* on (namespace, pod) group_left(node) topk by(namespace, pod) (1,
|
||||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
max by(namespace, pod, node) (kube_pod_info)
|
||||||
)
|
)
|
||||||
record: node_namespace_pod_container:container_memory_swap
|
record: node_namespace_pod_container:container_memory_swap
|
||||||
- expr: |
|
- expr: |
|
||||||
@ -663,12 +349,12 @@ spec:
|
|||||||
- name: node.rules
|
- name: node.rules
|
||||||
rules:
|
rules:
|
||||||
- expr: |
|
- expr: |
|
||||||
sum(min(kube_pod_info{node!=""}) by (cluster, node))
|
sum(min(kube_pod_info) by (cluster, node))
|
||||||
record: ':kube_pod_info_node_count:'
|
record: ':kube_pod_info_node_count:'
|
||||||
- expr: |
|
- expr: |
|
||||||
topk by(namespace, pod) (1,
|
topk by(namespace, pod) (1,
|
||||||
max by (node, namespace, pod) (
|
max by (node, namespace, pod) (
|
||||||
label_replace(kube_pod_info{job="kube-state-metrics",node!=""}, "pod", "$1", "pod", "(.*)")
|
label_replace(kube_pod_info{job="kube-state-metrics"}, "pod", "$1", "pod", "(.*)")
|
||||||
))
|
))
|
||||||
record: 'node_namespace_pod:kube_pod_info:'
|
record: 'node_namespace_pod:kube_pod_info:'
|
||||||
- expr: |
|
- expr: |
|
||||||
@ -919,56 +605,6 @@ spec:
|
|||||||
for: 1h
|
for: 1h
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: NodeHighNumberConntrackEntriesUsed
|
|
||||||
annotations:
|
|
||||||
description: '{{ $value | humanizePercentage }} of conntrack entries are used.'
|
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-nodehighnumberconntrackentriesused
|
|
||||||
summary: Number of conntrack are getting close to the limit.
|
|
||||||
expr: |
|
|
||||||
(node_nf_conntrack_entries / node_nf_conntrack_entries_limit) > 0.75
|
|
||||||
labels:
|
|
||||||
severity: warning
|
|
||||||
- alert: NodeTextFileCollectorScrapeError
|
|
||||||
annotations:
|
|
||||||
description: Node Exporter text file collector failed to scrape.
|
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-nodetextfilecollectorscrapeerror
|
|
||||||
summary: Node Exporter text file collector failed to scrape.
|
|
||||||
expr: |
|
|
||||||
node_textfile_scrape_error{job="node-exporter"} == 1
|
|
||||||
labels:
|
|
||||||
severity: warning
|
|
||||||
- alert: NodeClockSkewDetected
|
|
||||||
annotations:
|
|
||||||
message: Clock on {{ $labels.instance }} is out of sync by more than 300s.
|
|
||||||
Ensure NTP is configured correctly on this host.
|
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-nodeclockskewdetected
|
|
||||||
summary: Clock skew detected.
|
|
||||||
expr: |
|
|
||||||
(
|
|
||||||
node_timex_offset_seconds > 0.05
|
|
||||||
and
|
|
||||||
deriv(node_timex_offset_seconds[5m]) >= 0
|
|
||||||
)
|
|
||||||
or
|
|
||||||
(
|
|
||||||
node_timex_offset_seconds < -0.05
|
|
||||||
and
|
|
||||||
deriv(node_timex_offset_seconds[5m]) <= 0
|
|
||||||
)
|
|
||||||
for: 10m
|
|
||||||
labels:
|
|
||||||
severity: warning
|
|
||||||
- alert: NodeClockNotSynchronising
|
|
||||||
annotations:
|
|
||||||
message: Clock on {{ $labels.instance }} is not synchronising. Ensure NTP
|
|
||||||
is configured on this host.
|
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-nodeclocknotsynchronising
|
|
||||||
summary: Clock not synchronising.
|
|
||||||
expr: |
|
|
||||||
min_over_time(node_timex_sync_status[5m]) == 0
|
|
||||||
for: 10m
|
|
||||||
labels:
|
|
||||||
severity: warning
|
|
||||||
- name: kubernetes-apps
|
- name: kubernetes-apps
|
||||||
rules:
|
rules:
|
||||||
- alert: KubePodCrashLooping
|
- alert: KubePodCrashLooping
|
||||||
@ -977,26 +613,20 @@ spec:
|
|||||||
}}) is restarting {{ printf "%.2f" $value }} times / 5 minutes.
|
}}) is restarting {{ printf "%.2f" $value }} times / 5 minutes.
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubepodcrashlooping
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubepodcrashlooping
|
||||||
expr: |
|
expr: |
|
||||||
rate(kube_pod_container_status_restarts_total{job="kube-state-metrics"}[5m]) * 60 * 5 > 0
|
rate(kube_pod_container_status_restarts_total{job="kube-state-metrics"}[15m]) * 60 * 5 > 0
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: critical
|
||||||
- alert: KubePodNotReady
|
- alert: KubePodNotReady
|
||||||
annotations:
|
annotations:
|
||||||
message: Pod {{ $labels.namespace }}/{{ $labels.pod }} has been in a non-ready
|
message: Pod {{ $labels.namespace }}/{{ $labels.pod }} has been in a non-ready
|
||||||
state for longer than 15 minutes.
|
state for longer than 15 minutes.
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubepodnotready
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubepodnotready
|
||||||
expr: |
|
expr: |
|
||||||
sum by (namespace, pod) (
|
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
|
||||||
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
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: critical
|
||||||
- alert: KubeDeploymentGenerationMismatch
|
- alert: KubeDeploymentGenerationMismatch
|
||||||
annotations:
|
annotations:
|
||||||
message: Deployment generation for {{ $labels.namespace }}/{{ $labels.deployment
|
message: Deployment generation for {{ $labels.namespace }}/{{ $labels.deployment
|
||||||
@ -1009,7 +639,7 @@ spec:
|
|||||||
kube_deployment_metadata_generation{job="kube-state-metrics"}
|
kube_deployment_metadata_generation{job="kube-state-metrics"}
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: critical
|
||||||
- alert: KubeDeploymentReplicasMismatch
|
- alert: KubeDeploymentReplicasMismatch
|
||||||
annotations:
|
annotations:
|
||||||
message: Deployment {{ $labels.namespace }}/{{ $labels.deployment }} has not
|
message: Deployment {{ $labels.namespace }}/{{ $labels.deployment }} has not
|
||||||
@ -1027,7 +657,7 @@ spec:
|
|||||||
)
|
)
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: critical
|
||||||
- alert: KubeStatefulSetReplicasMismatch
|
- alert: KubeStatefulSetReplicasMismatch
|
||||||
annotations:
|
annotations:
|
||||||
message: StatefulSet {{ $labels.namespace }}/{{ $labels.statefulset }} has
|
message: StatefulSet {{ $labels.namespace }}/{{ $labels.statefulset }} has
|
||||||
@ -1045,7 +675,7 @@ spec:
|
|||||||
)
|
)
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: critical
|
||||||
- alert: KubeStatefulSetGenerationMismatch
|
- alert: KubeStatefulSetGenerationMismatch
|
||||||
annotations:
|
annotations:
|
||||||
message: StatefulSet generation for {{ $labels.namespace }}/{{ $labels.statefulset
|
message: StatefulSet generation for {{ $labels.namespace }}/{{ $labels.statefulset
|
||||||
@ -1058,7 +688,7 @@ spec:
|
|||||||
kube_statefulset_metadata_generation{job="kube-state-metrics"}
|
kube_statefulset_metadata_generation{job="kube-state-metrics"}
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: critical
|
||||||
- alert: KubeStatefulSetUpdateNotRolledOut
|
- alert: KubeStatefulSetUpdateNotRolledOut
|
||||||
annotations:
|
annotations:
|
||||||
message: StatefulSet {{ $labels.namespace }}/{{ $labels.statefulset }} update
|
message: StatefulSet {{ $labels.namespace }}/{{ $labels.statefulset }} update
|
||||||
@ -1078,7 +708,7 @@ spec:
|
|||||||
)
|
)
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: critical
|
||||||
- alert: KubeDaemonSetRolloutStuck
|
- alert: KubeDaemonSetRolloutStuck
|
||||||
annotations:
|
annotations:
|
||||||
message: Only {{ $value | humanizePercentage }} of the desired Pods of DaemonSet
|
message: Only {{ $value | humanizePercentage }} of the desired Pods of DaemonSet
|
||||||
@ -1090,7 +720,7 @@ spec:
|
|||||||
kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics"} < 1.00
|
kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics"} < 1.00
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: critical
|
||||||
- alert: KubeContainerWaiting
|
- alert: KubeContainerWaiting
|
||||||
annotations:
|
annotations:
|
||||||
message: Pod {{ $labels.namespace }}/{{ $labels.pod }} container {{ $labels.container}}
|
message: Pod {{ $labels.namespace }}/{{ $labels.pod }} container {{ $labels.container}}
|
||||||
@ -1120,7 +750,7 @@ spec:
|
|||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubedaemonsetmisscheduled
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubedaemonsetmisscheduled
|
||||||
expr: |
|
expr: |
|
||||||
kube_daemonset_status_number_misscheduled{job="kube-state-metrics"} > 0
|
kube_daemonset_status_number_misscheduled{job="kube-state-metrics"} > 0
|
||||||
for: 15m
|
for: 10m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeCronJobRunning
|
- alert: KubeCronJobRunning
|
||||||
@ -1194,11 +824,11 @@ spec:
|
|||||||
for: 5m
|
for: 5m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeMemoryOvercommit
|
- alert: KubeMemOvercommit
|
||||||
annotations:
|
annotations:
|
||||||
message: Cluster has overcommitted memory resource requests for Pods and cannot
|
message: Cluster has overcommitted memory resource requests for Pods and cannot
|
||||||
tolerate node failure.
|
tolerate node failure.
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubememoryovercommit
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubememovercommit
|
||||||
expr: |
|
expr: |
|
||||||
sum(namespace:kube_pod_container_resource_requests_memory_bytes:sum{})
|
sum(namespace:kube_pod_container_resource_requests_memory_bytes:sum{})
|
||||||
/
|
/
|
||||||
@ -1210,10 +840,10 @@ spec:
|
|||||||
for: 5m
|
for: 5m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeCPUQuotaOvercommit
|
- alert: KubeCPUOvercommit
|
||||||
annotations:
|
annotations:
|
||||||
message: Cluster has overcommitted CPU resource requests for Namespaces.
|
message: Cluster has overcommitted CPU resource requests for Namespaces.
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubecpuquotaovercommit
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubecpuovercommit
|
||||||
expr: |
|
expr: |
|
||||||
sum(kube_resourcequota{job="kube-state-metrics", type="hard", resource="cpu"})
|
sum(kube_resourcequota{job="kube-state-metrics", type="hard", resource="cpu"})
|
||||||
/
|
/
|
||||||
@ -1222,10 +852,10 @@ spec:
|
|||||||
for: 5m
|
for: 5m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeMemoryQuotaOvercommit
|
- alert: KubeMemOvercommit
|
||||||
annotations:
|
annotations:
|
||||||
message: Cluster has overcommitted memory resource requests for Namespaces.
|
message: Cluster has overcommitted memory resource requests for Namespaces.
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubememoryquotaovercommit
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubememovercommit
|
||||||
expr: |
|
expr: |
|
||||||
sum(kube_resourcequota{job="kube-state-metrics", type="hard", resource="memory"})
|
sum(kube_resourcequota{job="kube-state-metrics", type="hard", resource="memory"})
|
||||||
/
|
/
|
||||||
@ -1263,12 +893,12 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- name: kubernetes-storage
|
- name: kubernetes-storage
|
||||||
rules:
|
rules:
|
||||||
- alert: KubePersistentVolumeFillingUp
|
- alert: KubePersistentVolumeUsageCritical
|
||||||
annotations:
|
annotations:
|
||||||
message: The PersistentVolume claimed by {{ $labels.persistentvolumeclaim
|
message: The PersistentVolume claimed by {{ $labels.persistentvolumeclaim
|
||||||
}} in Namespace {{ $labels.namespace }} is only {{ $value | humanizePercentage
|
}} in Namespace {{ $labels.namespace }} is only {{ $value | humanizePercentage
|
||||||
}} free.
|
}} free.
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubepersistentvolumefillingup
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubepersistentvolumeusagecritical
|
||||||
expr: |
|
expr: |
|
||||||
kubelet_volume_stats_available_bytes{job="kubelet", metrics_path="/metrics"}
|
kubelet_volume_stats_available_bytes{job="kubelet", metrics_path="/metrics"}
|
||||||
/
|
/
|
||||||
@ -1277,12 +907,12 @@ spec:
|
|||||||
for: 1m
|
for: 1m
|
||||||
labels:
|
labels:
|
||||||
severity: critical
|
severity: critical
|
||||||
- alert: KubePersistentVolumeFillingUp
|
- alert: KubePersistentVolumeFullInFourDays
|
||||||
annotations:
|
annotations:
|
||||||
message: Based on recent sampling, the PersistentVolume claimed by {{ $labels.persistentvolumeclaim
|
message: Based on recent sampling, the PersistentVolume claimed by {{ $labels.persistentvolumeclaim
|
||||||
}} in Namespace {{ $labels.namespace }} is expected to fill up within four
|
}} in Namespace {{ $labels.namespace }} is expected to fill up within four
|
||||||
days. Currently {{ $value | humanizePercentage }} is available.
|
days. Currently {{ $value | humanizePercentage }} is available.
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubepersistentvolumefillingup
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubepersistentvolumefullinfourdays
|
||||||
expr: |
|
expr: |
|
||||||
(
|
(
|
||||||
kubelet_volume_stats_available_bytes{job="kubelet", metrics_path="/metrics"}
|
kubelet_volume_stats_available_bytes{job="kubelet", metrics_path="/metrics"}
|
||||||
@ -1293,7 +923,7 @@ spec:
|
|||||||
predict_linear(kubelet_volume_stats_available_bytes{job="kubelet", metrics_path="/metrics"}[6h], 4 * 24 * 3600) < 0
|
predict_linear(kubelet_volume_stats_available_bytes{job="kubelet", metrics_path="/metrics"}[6h], 4 * 24 * 3600) < 0
|
||||||
for: 1h
|
for: 1h
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: critical
|
||||||
- alert: KubePersistentVolumeErrors
|
- alert: KubePersistentVolumeErrors
|
||||||
annotations:
|
annotations:
|
||||||
message: The persistent volume {{ $labels.persistentvolume }} has status {{
|
message: The persistent volume {{ $labels.persistentvolume }} has status {{
|
||||||
@ -1329,60 +959,48 @@ spec:
|
|||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- name: kube-apiserver-slos
|
- name: kube-apiserver-error-alerts
|
||||||
rules:
|
rules:
|
||||||
- alert: KubeAPIErrorBudgetBurn
|
- alert: ErrorBudgetBurn
|
||||||
annotations:
|
annotations:
|
||||||
message: The API server is burning too much error budget
|
message: 'High requests error budget burn for job=apiserver (current value:
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubeapierrorbudgetburn
|
{{ $value }})'
|
||||||
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-errorbudgetburn
|
||||||
expr: |
|
expr: |
|
||||||
sum(apiserver_request:burnrate1h) > (14.40 * 0.01000)
|
(
|
||||||
and
|
status_class_5xx:apiserver_request_total:ratio_rate1h{job="apiserver"} > (14.4*0.010000)
|
||||||
sum(apiserver_request:burnrate5m) > (14.40 * 0.01000)
|
and
|
||||||
for: 2m
|
status_class_5xx:apiserver_request_total:ratio_rate5m{job="apiserver"} > (14.4*0.010000)
|
||||||
|
)
|
||||||
|
or
|
||||||
|
(
|
||||||
|
status_class_5xx:apiserver_request_total:ratio_rate6h{job="apiserver"} > (6*0.010000)
|
||||||
|
and
|
||||||
|
status_class_5xx:apiserver_request_total:ratio_rate30m{job="apiserver"} > (6*0.010000)
|
||||||
|
)
|
||||||
labels:
|
labels:
|
||||||
long: 1h
|
job: apiserver
|
||||||
severity: critical
|
severity: critical
|
||||||
short: 5m
|
- alert: ErrorBudgetBurn
|
||||||
- alert: KubeAPIErrorBudgetBurn
|
|
||||||
annotations:
|
annotations:
|
||||||
message: The API server is burning too much error budget
|
message: 'High requests error budget burn for job=apiserver (current value:
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubeapierrorbudgetburn
|
{{ $value }})'
|
||||||
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-errorbudgetburn
|
||||||
expr: |
|
expr: |
|
||||||
sum(apiserver_request:burnrate6h) > (6.00 * 0.01000)
|
(
|
||||||
and
|
status_class_5xx:apiserver_request_total:ratio_rate1d{job="apiserver"} > (3*0.010000)
|
||||||
sum(apiserver_request:burnrate30m) > (6.00 * 0.01000)
|
and
|
||||||
for: 15m
|
status_class_5xx:apiserver_request_total:ratio_rate2h{job="apiserver"} > (3*0.010000)
|
||||||
|
)
|
||||||
|
or
|
||||||
|
(
|
||||||
|
status_class_5xx:apiserver_request_total:ratio_rate3d{job="apiserver"} > (0.010000)
|
||||||
|
and
|
||||||
|
status_class_5xx:apiserver_request_total:ratio_rate6h{job="apiserver"} > (0.010000)
|
||||||
|
)
|
||||||
labels:
|
labels:
|
||||||
long: 6h
|
job: apiserver
|
||||||
severity: critical
|
|
||||||
short: 30m
|
|
||||||
- alert: KubeAPIErrorBudgetBurn
|
|
||||||
annotations:
|
|
||||||
message: The API server is burning too much error budget
|
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubeapierrorbudgetburn
|
|
||||||
expr: |
|
|
||||||
sum(apiserver_request:burnrate1d) > (3.00 * 0.01000)
|
|
||||||
and
|
|
||||||
sum(apiserver_request:burnrate2h) > (3.00 * 0.01000)
|
|
||||||
for: 1h
|
|
||||||
labels:
|
|
||||||
long: 1d
|
|
||||||
severity: warning
|
severity: warning
|
||||||
short: 2h
|
|
||||||
- alert: KubeAPIErrorBudgetBurn
|
|
||||||
annotations:
|
|
||||||
message: The API server is burning too much error budget
|
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubeapierrorbudgetburn
|
|
||||||
expr: |
|
|
||||||
sum(apiserver_request:burnrate3d) > (1.00 * 0.01000)
|
|
||||||
and
|
|
||||||
sum(apiserver_request:burnrate6h) > (1.00 * 0.01000)
|
|
||||||
for: 3h
|
|
||||||
labels:
|
|
||||||
long: 3d
|
|
||||||
severity: warning
|
|
||||||
short: 6h
|
|
||||||
- name: kubernetes-system-apiserver
|
- name: kubernetes-system-apiserver
|
||||||
rules:
|
rules:
|
||||||
- alert: KubeAPILatencyHigh
|
- alert: KubeAPILatencyHigh
|
||||||
@ -1409,6 +1027,29 @@ spec:
|
|||||||
for: 5m
|
for: 5m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
|
- alert: KubeAPILatencyHigh
|
||||||
|
annotations:
|
||||||
|
message: The API server has a 99th percentile latency of {{ $value }} seconds
|
||||||
|
for {{ $labels.verb }} {{ $labels.resource }}.
|
||||||
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubeapilatencyhigh
|
||||||
|
expr: |
|
||||||
|
cluster_quantile:apiserver_request_duration_seconds:histogram_quantile{job="apiserver",quantile="0.99"} > 4
|
||||||
|
for: 10m
|
||||||
|
labels:
|
||||||
|
severity: critical
|
||||||
|
- alert: KubeAPIErrorsHigh
|
||||||
|
annotations:
|
||||||
|
message: API server is returning errors for {{ $value | humanizePercentage
|
||||||
|
}} of requests for {{ $labels.verb }} {{ $labels.resource }} {{ $labels.subresource
|
||||||
|
}}.
|
||||||
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubeapierrorshigh
|
||||||
|
expr: |
|
||||||
|
sum(rate(apiserver_request_total{job="apiserver",code=~"5.."}[5m])) by (resource,subresource,verb)
|
||||||
|
/
|
||||||
|
sum(rate(apiserver_request_total{job="apiserver"}[5m])) by (resource,subresource,verb) > 0.10
|
||||||
|
for: 10m
|
||||||
|
labels:
|
||||||
|
severity: critical
|
||||||
- alert: KubeAPIErrorsHigh
|
- alert: KubeAPIErrorsHigh
|
||||||
annotations:
|
annotations:
|
||||||
message: API server is returning errors for {{ $value | humanizePercentage
|
message: API server is returning errors for {{ $value | humanizePercentage
|
||||||
@ -1486,7 +1127,8 @@ spec:
|
|||||||
message: '{{ $labels.node }} is unreachable and some workloads may be rescheduled.'
|
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
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubenodeunreachable
|
||||||
expr: |
|
expr: |
|
||||||
(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
|
kube_node_spec_taint{job="kube-state-metrics",key="node.kubernetes.io/unreachable",effect="NoSchedule"} == 1
|
||||||
|
for: 2m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeletTooManyPods
|
- alert: KubeletTooManyPods
|
||||||
@ -1525,7 +1167,7 @@ spec:
|
|||||||
on node {{ $labels.node }}.
|
on node {{ $labels.node }}.
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubeletpodstartuplatencyhigh
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubeletpodstartuplatencyhigh
|
||||||
expr: |
|
expr: |
|
||||||
histogram_quantile(0.99, sum(rate(kubelet_pod_worker_duration_seconds_bucket{job="kubelet", metrics_path="/metrics"}[5m])) by (instance, le)) * on(instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"} > 60
|
histogram_quantile(0.99, sum(rate(kubelet_pod_worker_duration_seconds_bucket{job="kubelet", metrics_path="/metrics"}[5m])) by (instance, le)) * on(instance) group_left(node) kubelet_node_name > 60
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
@ -1690,8 +1332,8 @@ spec:
|
|||||||
- alert: PrometheusRemoteStorageFailures
|
- alert: PrometheusRemoteStorageFailures
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} failed to send
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} failed to send
|
||||||
{{ printf "%.1f" $value }}% of the samples to {{ $labels.remote_name}}:{{
|
{{ printf "%.1f" $value }}% of the samples to {{ if $labels.queue }}{{ $labels.queue
|
||||||
$labels.url }}
|
}}{{ else }}{{ $labels.url }}{{ end }}.
|
||||||
summary: Prometheus fails to send samples to remote storage.
|
summary: Prometheus fails to send samples to remote storage.
|
||||||
expr: |
|
expr: |
|
||||||
(
|
(
|
||||||
@ -1711,8 +1353,8 @@ spec:
|
|||||||
- alert: PrometheusRemoteWriteBehind
|
- alert: PrometheusRemoteWriteBehind
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} remote write
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} remote write
|
||||||
is {{ printf "%.1f" $value }}s behind for {{ $labels.remote_name}}:{{ $labels.url
|
is {{ printf "%.1f" $value }}s behind for {{ if $labels.queue }}{{ $labels.queue
|
||||||
}}.
|
}}{{ else }}{{ $labels.url }}{{ end }}.
|
||||||
summary: Prometheus remote write is behind.
|
summary: Prometheus remote write is behind.
|
||||||
expr: |
|
expr: |
|
||||||
# Without max_over_time, failed scrapes could create false negatives, see
|
# Without max_over_time, failed scrapes could create false negatives, see
|
||||||
@ -1729,9 +1371,8 @@ spec:
|
|||||||
- alert: PrometheusRemoteWriteDesiredShards
|
- alert: PrometheusRemoteWriteDesiredShards
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} remote write
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} remote write
|
||||||
desired shards calculation wants to run {{ $value }} shards for queue {{
|
desired shards calculation wants to run {{ $value }} shards, which is more
|
||||||
$labels.remote_name}}:{{ $labels.url }}, which is more than the max of {{
|
than the max of {{ printf `prometheus_remote_storage_shards_max{instance="%s",job="prometheus-k8s",namespace="monitoring"}`
|
||||||
printf `prometheus_remote_storage_shards_max{instance="%s",job="prometheus-k8s",namespace="monitoring"}`
|
|
||||||
$labels.instance | query | first | value }}.
|
$labels.instance | query | first | value }}.
|
||||||
summary: Prometheus remote write desired shards calculation wants to run more
|
summary: Prometheus remote write desired shards calculation wants to run more
|
||||||
than configured max shards.
|
than configured max shards.
|
||||||
@ -1818,6 +1459,17 @@ spec:
|
|||||||
expr: vector(1)
|
expr: vector(1)
|
||||||
labels:
|
labels:
|
||||||
severity: none
|
severity: none
|
||||||
|
- name: node-time
|
||||||
|
rules:
|
||||||
|
- alert: ClockSkewDetected
|
||||||
|
annotations:
|
||||||
|
message: Clock skew detected on node-exporter {{ $labels.namespace }}/{{ $labels.pod
|
||||||
|
}}. Ensure NTP is configured correctly on this host.
|
||||||
|
expr: |
|
||||||
|
abs(node_timex_offset_seconds{job="node-exporter"}) > 0.05
|
||||||
|
for: 2m
|
||||||
|
labels:
|
||||||
|
severity: warning
|
||||||
- name: node-network
|
- name: node-network
|
||||||
rules:
|
rules:
|
||||||
- alert: NodeNetworkInterfaceFlapping
|
- alert: NodeNetworkInterfaceFlapping
|
||||||
|
Loading…
Reference in New Issue
Block a user