Compare commits
76 Commits
release-0.
...
versions-f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9e2acd6fcd | ||
|
|
0b7a4d100b | ||
|
|
d388980779 | ||
|
|
562e714616 | ||
|
|
85b5cd38f5 | ||
|
|
988d06c81d | ||
|
|
c07a8f54b4 | ||
|
|
4068700e27 | ||
|
|
f076ce4067 | ||
|
|
3af1d8320c | ||
|
|
d588c9773e | ||
|
|
60be33d3c6 | ||
|
|
cea6822e84 | ||
|
|
630e75e6c0 | ||
|
|
858a2a53f4 | ||
|
|
27a3f25bd9 | ||
|
|
148b412e27 | ||
|
|
ba50502da9 | ||
|
|
dc0ad5e216 | ||
|
|
158cb5422e | ||
|
|
26629a4162 | ||
|
|
a0a23346f6 | ||
|
|
024eb5c923 | ||
|
|
0051df48b8 | ||
|
|
3fff8b5609 | ||
|
|
09135ee9b3 | ||
|
|
5ac666d809 | ||
|
|
76d9ce0604 | ||
|
|
b176baa776 | ||
|
|
9286a5e7de | ||
|
|
c9e1145027 | ||
|
|
2a955da550 | ||
|
|
6cdfe6ef23 | ||
|
|
f3968df630 | ||
|
|
4a678b13e8 | ||
|
|
68b6285fa2 | ||
|
|
83e60d4588 | ||
|
|
18f31ba014 | ||
|
|
e619da1b86 | ||
|
|
64ed9f1f44 | ||
|
|
a209d48272 | ||
|
|
117ce2f8b5 | ||
|
|
b076db6e88 | ||
|
|
25e04a8939 | ||
|
|
64b4d72d3b | ||
|
|
c984288cc3 | ||
|
|
624f5914a5 | ||
|
|
ec56f4559f | ||
|
|
aac1dcf547 | ||
|
|
19cf1150a5 | ||
|
|
33b12c979d | ||
|
|
f6f3682244 | ||
|
|
274d5856c7 | ||
|
|
c3dad8c70b | ||
|
|
f15d65e0b2 | ||
|
|
ed6a2f0fc7 | ||
|
|
09cbd7aa59 | ||
|
|
2263981ba7 | ||
|
|
c9b0ad7aa8 | ||
|
|
60f50c7bda | ||
|
|
ecc058185b | ||
|
|
7363e20b65 | ||
|
|
bb30afb866 | ||
|
|
6737a54cb4 | ||
|
|
c5360561fa | ||
|
|
74cb76d338 | ||
|
|
8ab4e68700 | ||
|
|
f737ac4d01 | ||
|
|
2115d059ff | ||
|
|
a0c0a1dc20 | ||
|
|
17dc66cec1 | ||
|
|
c936a999ac | ||
|
|
c330a6e428 | ||
|
|
67162ddd1b | ||
|
|
ae8dd9341d | ||
|
|
b332c58421 |
22
.github/workflows/ci.yaml
vendored
22
.github/workflows/ci.yaml
vendored
@@ -3,8 +3,8 @@ on:
|
|||||||
- push
|
- push
|
||||||
- pull_request
|
- pull_request
|
||||||
env:
|
env:
|
||||||
golang-version: '1.18'
|
golang-version: '1.19'
|
||||||
kind-version: 'v0.16.0'
|
kind-version: 'v0.19.0'
|
||||||
jobs:
|
jobs:
|
||||||
generate:
|
generate:
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
@@ -18,7 +18,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-go@v3
|
- uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: ${{ env.golang-version }}
|
go-version: ${{ env.golang-version }}
|
||||||
- run: make --always-make generate validate && git diff --exit-code
|
- run: make --always-make generate validate && git diff --exit-code
|
||||||
@@ -29,7 +29,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-go@v3
|
- uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: ${{ env.golang-version }}
|
go-version: ${{ env.golang-version }}
|
||||||
- run: make check-docs
|
- run: make check-docs
|
||||||
@@ -40,7 +40,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-go@v3
|
- uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: ${{ env.golang-version }}
|
go-version: ${{ env.golang-version }}
|
||||||
- run: make --always-make lint
|
- run: make --always-make lint
|
||||||
@@ -51,7 +51,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-go@v3
|
- uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: ${{ env.golang-version }}
|
go-version: ${{ env.golang-version }}
|
||||||
- run: make --always-make fmt && git diff --exit-code
|
- run: make --always-make fmt && git diff --exit-code
|
||||||
@@ -62,7 +62,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-go@v3
|
- uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: ${{ env.golang-version }}
|
go-version: ${{ env.golang-version }}
|
||||||
- run: make --always-make test
|
- run: make --always-make test
|
||||||
@@ -73,7 +73,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-go@v3
|
- uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: ${{ env.golang-version }}
|
go-version: ${{ env.golang-version }}
|
||||||
- run: make --always-make kubescape
|
- run: make --always-make kubescape
|
||||||
@@ -83,13 +83,13 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
kind-image:
|
kind-image:
|
||||||
- 'kindest/node:v1.25.2'
|
- 'kindest/node:v1.27.1'
|
||||||
- 'kindest/node:v1.24.6'
|
- 'kindest/node:v1.26.4'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-go@v3
|
- uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: ${{ env.golang-version }}
|
go-version: ${{ env.golang-version }}
|
||||||
- name: Start KinD
|
- name: Start KinD
|
||||||
|
|||||||
2
.github/workflows/stale.yaml
vendored
2
.github/workflows/stale.yaml
vendored
@@ -7,7 +7,7 @@ jobs:
|
|||||||
stale:
|
stale:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v7
|
- uses: actions/stale@v8
|
||||||
with:
|
with:
|
||||||
stale-issue-message: 'This issue has been automatically marked as stale because it has not had any activity in the last 60 days. Thank you for your contributions.'
|
stale-issue-message: 'This issue has been automatically marked as stale because it has not had any activity in the last 60 days. Thank you for your contributions.'
|
||||||
close-issue-message: 'This issue was closed because it has not had any activity in the last 120 days. Please reopen if you feel this is still valid.'
|
close-issue-message: 'This issue was closed because it has not had any activity in the last 120 days. Please reopen if you feel this is still valid.'
|
||||||
|
|||||||
18
.github/workflows/versions.yaml
vendored
18
.github/workflows/versions.yaml
vendored
@@ -5,23 +5,19 @@ on:
|
|||||||
schedule:
|
schedule:
|
||||||
- cron: '37 7 * * 1'
|
- cron: '37 7 * * 1'
|
||||||
env:
|
env:
|
||||||
golang-version: '1.18'
|
golang-version: '1.19'
|
||||||
jobs:
|
jobs:
|
||||||
versions:
|
versions:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
branch:
|
branch:
|
||||||
- 'release-0.8'
|
|
||||||
- 'release-0.9'
|
|
||||||
- 'release-0.10'
|
|
||||||
- 'release-0.11'
|
|
||||||
- 'main'
|
- 'main'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
ref: ${{ matrix.branch }}
|
ref: ${{ matrix.branch }}
|
||||||
- uses: actions/setup-go@v3
|
- uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: ${{ env.golang-version }}
|
go-version: ${{ env.golang-version }}
|
||||||
- name: Upgrade versions
|
- name: Upgrade versions
|
||||||
@@ -33,8 +29,12 @@ jobs:
|
|||||||
mv /tmp/versions.json jsonnet/kube-prometheus/versions.json
|
mv /tmp/versions.json jsonnet/kube-prometheus/versions.json
|
||||||
# Get the links to the changelogs of the updated versions and make them
|
# Get the links to the changelogs of the updated versions and make them
|
||||||
# available to the reviewers
|
# available to the reviewers
|
||||||
echo ::set-output name=new_changelogs::$(scripts/get-new-changelogs.sh)
|
new_changelogs=$(scripts/get-new-changelogs.sh)
|
||||||
if: matrix.branch == 'main'
|
echo "test"
|
||||||
|
echo "$new_changelogs"
|
||||||
|
echo "new_changelogs=$new_changelogs" >> $GITHUB_OUTPUT
|
||||||
|
echo "EOF" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Update jsonnet dependencies
|
- name: Update jsonnet dependencies
|
||||||
run: |
|
run: |
|
||||||
make update
|
make update
|
||||||
@@ -46,7 +46,7 @@ jobs:
|
|||||||
git checkout -- jsonnetfile.lock.json;
|
git checkout -- jsonnetfile.lock.json;
|
||||||
fi
|
fi
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@v4
|
uses: peter-evans/create-pull-request@v5
|
||||||
with:
|
with:
|
||||||
commit-message: "[bot] [${{ matrix.branch }}] Automated version update"
|
commit-message: "[bot] [${{ matrix.branch }}] Automated version update"
|
||||||
title: "[bot] [${{ matrix.branch }}] Automated version update"
|
title: "[bot] [${{ matrix.branch }}] Automated version update"
|
||||||
|
|||||||
@@ -7,7 +7,3 @@ validators:
|
|||||||
# Ignore release links.
|
# Ignore release links.
|
||||||
- regex: 'https:\/\/github\.com\/prometheus-operator\/kube-prometheus\/releases'
|
- regex: 'https:\/\/github\.com\/prometheus-operator\/kube-prometheus\/releases'
|
||||||
type: "ignore"
|
type: "ignore"
|
||||||
# the www.weave.works domain returns 404 for many pages.
|
|
||||||
# Ignoring for now but we need remove the related content if it persists.
|
|
||||||
- regex: 'https:\/\/www.weave.works.*'
|
|
||||||
type: "ignore"
|
|
||||||
|
|||||||
14
README.md
14
README.md
@@ -40,13 +40,13 @@ no effect, but is still deployed.
|
|||||||
|
|
||||||
The following Kubernetes versions are supported and work as we test against these versions in their respective branches. But note that other versions might work!
|
The following Kubernetes versions are supported and work as we test against these versions in their respective branches. But note that other versions might work!
|
||||||
|
|
||||||
| kube-prometheus stack | Kubernetes 1.21 | Kubernetes 1.22 | Kubernetes 1.23 | Kubernetes 1.24 | Kubernetes 1.25 |
|
| kube-prometheus stack | Kubernetes 1.21 | Kubernetes 1.22 | Kubernetes 1.23 | Kubernetes 1.24 | Kubernetes 1.25 | Kubernetes 1.26 | Kubernetes 1.27 |
|
||||||
|--------------------------------------------------------------------------------------------|-----------------|-----------------|-----------------|-----------------|-----------------|
|
|--------------------------------------------------------------------------------------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|
|
||||||
| [`release-0.9`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.9) | ✔ | ✔ | ✗ | ✗ | ✗ |
|
| [`release-0.9`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.9) | ✔ | ✔ | ✗ | ✗ | ✗ | x | x |
|
||||||
| [`release-0.10`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.10) | ✗ | ✔ | ✔ | ✗ | ✗ |
|
| [`release-0.10`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.10) | ✗ | ✔ | ✔ | ✗ | ✗ | x | x |
|
||||||
| [`release-0.11`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.11) | ✗ | ✗ | ✔ | ✔ | ✗ |
|
| [`release-0.11`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.11) | ✗ | ✗ | ✔ | ✔ | ✗ | x | x |
|
||||||
| [`release-0.12`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.12) | ✗ | ✗ | ✗ | ✔ | ✔ |
|
| [`release-0.12`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.12) | ✗ | ✗ | ✗ | ✔ | ✔ | x | x |
|
||||||
| [`main`](https://github.com/prometheus-operator/kube-prometheus/tree/main) | ✗ | ✗ | ✗ | ✗ | ✔ |
|
| [`main`](https://github.com/prometheus-operator/kube-prometheus/tree/main) | ✗ | ✗ | ✗ | ✗ | x | ✔ | ✔ |
|
||||||
|
|
||||||
## Quickstart
|
## Quickstart
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ $ jb install github.com/prometheus-operator/kube-prometheus/jsonnet/kube-prometh
|
|||||||
|
|
||||||
$ wget https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/example.jsonnet -O example.jsonnet
|
$ wget https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/example.jsonnet -O example.jsonnet
|
||||||
$ wget https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/build.sh -O build.sh
|
$ wget https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/build.sh -O build.sh
|
||||||
|
$ chmod +x build.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
> `jb` can be installed with `go install -a github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@latest`
|
> `jb` can be installed with `go install -a github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@latest`
|
||||||
|
|||||||
@@ -1,8 +1,27 @@
|
|||||||
# Windows
|
# Windows
|
||||||
|
|
||||||
The [Windows addon](../examples/windows.jsonnet) adds the dashboards and rules from [kubernetes-monitoring/kubernetes-mixin](https://github.com/kubernetes-monitoring/kubernetes-mixin#dashboards-for-windows-nodes).
|
The [Windows hostprocess addon](../examples/windows-hostprocess.jsonnet) adds the dashboards and rules from [kubernetes-monitoring/kubernetes-mixin](https://github.com/kubernetes-monitoring/kubernetes-mixin#dashboards-for-windows-nodes).
|
||||||
|
|
||||||
Currently, Docker based Windows does not support running with [windows_exporter](https://github.com/prometheus-community/windows_exporter) in a pod so this add on uses [additional scrape configuration](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/additional-scrape-config.md) to set up a static config to scrape the node ports where windows_exporter is configured.
|
It also deploys [windows_exporter](https://github.com/prometheus-community/windows_exporter) as a [hostprocess pod](https://github.com/prometheus-community/windows_exporter/blob/master/kubernetes/kubernetes.md) as Kubernetes now supports HostProcess containers on Windows nodes (as of [v1.22](https://kubernetes.io/blog/2021/08/16/windows-hostprocess-containers/)). The cluster should be using containerd runtime.
|
||||||
|
|
||||||
|
```
|
||||||
|
local kp = (import 'kube-prometheus/main.libsonnet') +
|
||||||
|
(import 'kube-prometheus/addons/windows-hostprocess.libsonnet') +
|
||||||
|
{
|
||||||
|
values+:: {
|
||||||
|
windowsExporter+:: {
|
||||||
|
image: "ghcr.io/prometheus-community/windows-exporter",
|
||||||
|
version: "0.21.0",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
{ ['windows-exporter-' + name]: kp.windowsExporter[name] for name in std.objectFields(kp.windowsExporter) }
|
||||||
|
```
|
||||||
|
|
||||||
|
See the [full example](../examples/windows-hostprocess.jsonnet) for setup.
|
||||||
|
|
||||||
|
If the cluster is running docker runtime then use the other [Windows addon](../examples/windows.jsonnet). The Windows addon does not deploy windows_exporter. Docker based Windows does not support running with [windows_exporter](https://github.com/prometheus-community/windows_exporter) in a pod so this add on uses [additional scrape configuration](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/additional-scrape-config.md) to set up a static config to scrape the node ports where windows_exporter is configured.
|
||||||
|
|
||||||
The addon requires you to specify the node ips and ports where it can find the windows_exporter. See the [full example](../examples/windows.jsonnet) for setup.
|
The addon requires you to specify the node ips and ports where it can find the windows_exporter. See the [full example](../examples/windows.jsonnet) for setup.
|
||||||
|
|
||||||
@@ -19,5 +38,3 @@ local kp = (import 'kube-prometheus/main.libsonnet') +
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
[Containerd](https://github.com/prometheus-community/windows_exporter/blob/master/kubernetes/kubernetes.md) version can run as pod.
|
|
||||||
|
|||||||
33
examples/windows-hostprocess.jsonnet
Normal file
33
examples/windows-hostprocess.jsonnet
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
local kp =
|
||||||
|
(import 'kube-prometheus/main.libsonnet') +
|
||||||
|
(import 'kube-prometheus/addons/windows-hostprocess.libsonnet') +
|
||||||
|
{
|
||||||
|
values+:: {
|
||||||
|
common+: {
|
||||||
|
namespace: 'monitoring',
|
||||||
|
},
|
||||||
|
windowsExporter+:: {
|
||||||
|
image: 'ghcr.io/prometheus-community/windows-exporter',
|
||||||
|
version: '0.21.0',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +
|
||||||
|
{
|
||||||
|
['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]
|
||||||
|
for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))
|
||||||
|
} +
|
||||||
|
// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready
|
||||||
|
{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +
|
||||||
|
{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +
|
||||||
|
{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +
|
||||||
|
{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +
|
||||||
|
{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +
|
||||||
|
{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +
|
||||||
|
{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +
|
||||||
|
{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }
|
||||||
|
{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +
|
||||||
|
{ ['windows-exporter-' + name]: kp.windowsExporter[name] for name in std.objectFields(kp.windowsExporter) } +
|
||||||
|
{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
|
||||||
|
{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }
|
||||||
43
go.mod
43
go.mod
@@ -1,51 +1,52 @@
|
|||||||
module github.com/prometheus-operator/kube-prometheus
|
module github.com/prometheus-operator/kube-prometheus
|
||||||
|
|
||||||
go 1.17
|
go 1.19
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/Jeffail/gabs v1.4.0
|
github.com/Jeffail/gabs v1.4.0
|
||||||
github.com/prometheus/client_golang v1.14.0
|
github.com/prometheus/client_golang v1.16.0
|
||||||
k8s.io/apimachinery v0.26.0
|
k8s.io/apimachinery v0.27.4
|
||||||
k8s.io/client-go v0.26.0
|
k8s.io/client-go v0.27.4
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
|
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
|
||||||
github.com/go-logr/logr v1.2.3 // indirect
|
github.com/go-logr/logr v1.2.3 // indirect
|
||||||
github.com/go-openapi/jsonpointer v0.19.5 // indirect
|
github.com/go-openapi/jsonpointer v0.19.6 // indirect
|
||||||
github.com/go-openapi/jsonreference v0.20.0 // indirect
|
github.com/go-openapi/jsonreference v0.20.1 // indirect
|
||||||
github.com/go-openapi/swag v0.19.14 // indirect
|
github.com/go-openapi/swag v0.22.3 // indirect
|
||||||
github.com/gogo/protobuf v1.3.2 // indirect
|
github.com/gogo/protobuf v1.3.2 // indirect
|
||||||
github.com/golang/protobuf v1.5.2 // indirect
|
github.com/golang/protobuf v1.5.3 // indirect
|
||||||
github.com/google/gnostic v0.5.7-v3refs // indirect
|
github.com/google/gnostic v0.5.7-v3refs // indirect
|
||||||
github.com/google/go-cmp v0.5.9 // indirect
|
github.com/google/go-cmp v0.5.9 // indirect
|
||||||
github.com/google/gofuzz v1.1.0 // indirect
|
github.com/google/gofuzz v1.1.0 // indirect
|
||||||
|
github.com/google/uuid v1.3.0 // indirect
|
||||||
github.com/imdario/mergo v0.3.6 // indirect
|
github.com/imdario/mergo v0.3.6 // indirect
|
||||||
github.com/josharian/intern v1.0.0 // indirect
|
github.com/josharian/intern v1.0.0 // indirect
|
||||||
github.com/json-iterator/go v1.1.12 // indirect
|
github.com/json-iterator/go v1.1.12 // indirect
|
||||||
github.com/mailru/easyjson v0.7.6 // indirect
|
github.com/mailru/easyjson v0.7.7 // indirect
|
||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
||||||
github.com/prometheus/common v0.37.0 // indirect
|
github.com/prometheus/common v0.42.0 // indirect
|
||||||
github.com/spf13/pflag v1.0.5 // indirect
|
github.com/spf13/pflag v1.0.5 // indirect
|
||||||
golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10 // indirect
|
golang.org/x/net v0.8.0 // indirect
|
||||||
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b // indirect
|
golang.org/x/oauth2 v0.5.0 // indirect
|
||||||
golang.org/x/sys v0.3.0 // indirect
|
golang.org/x/sys v0.8.0 // indirect
|
||||||
golang.org/x/term v0.3.0 // indirect
|
golang.org/x/term v0.6.0 // indirect
|
||||||
golang.org/x/text v0.5.0 // indirect
|
golang.org/x/text v0.8.0 // indirect
|
||||||
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect
|
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect
|
||||||
google.golang.org/appengine v1.6.7 // indirect
|
google.golang.org/appengine v1.6.7 // indirect
|
||||||
google.golang.org/protobuf v1.28.1 // indirect
|
google.golang.org/protobuf v1.30.0 // indirect
|
||||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
k8s.io/api v0.26.0 // indirect
|
k8s.io/api v0.27.4 // indirect
|
||||||
k8s.io/klog/v2 v2.80.1 // indirect
|
k8s.io/klog/v2 v2.90.1 // indirect
|
||||||
k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 // indirect
|
k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect
|
||||||
k8s.io/utils v0.0.0-20221107191617-1a15be271d1d // indirect
|
k8s.io/utils v0.0.0-20230209194617-a36077c30491 // indirect
|
||||||
sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect
|
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
|
||||||
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
|
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
|
||||||
sigs.k8s.io/yaml v1.3.0 // indirect
|
sigs.k8s.io/yaml v1.3.0 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
567
go.sum
567
go.sum
@@ -1,676 +1,225 @@
|
|||||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
|
||||||
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
|
|
||||||
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
|
|
||||||
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
|
|
||||||
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
|
|
||||||
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
|
|
||||||
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
|
|
||||||
cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
|
|
||||||
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
|
|
||||||
cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
|
|
||||||
cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
|
|
||||||
cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
|
|
||||||
cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
|
|
||||||
cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
|
|
||||||
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
|
|
||||||
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
|
|
||||||
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
|
|
||||||
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
|
|
||||||
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
|
|
||||||
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
|
|
||||||
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
|
|
||||||
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
|
|
||||||
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
|
|
||||||
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
|
|
||||||
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
|
|
||||||
cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
|
|
||||||
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
|
|
||||||
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
|
|
||||||
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
|
|
||||||
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
|
|
||||||
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
|
|
||||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
|
||||||
github.com/Jeffail/gabs v1.4.0 h1://5fYRRTq1edjfIrQGvdkcd22pkYUrHZ5YC/H2GJVAo=
|
github.com/Jeffail/gabs v1.4.0 h1://5fYRRTq1edjfIrQGvdkcd22pkYUrHZ5YC/H2GJVAo=
|
||||||
github.com/Jeffail/gabs v1.4.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc=
|
github.com/Jeffail/gabs v1.4.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc=
|
||||||
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
|
|
||||||
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
|
||||||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
|
||||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
|
||||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
|
||||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
|
||||||
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
|
||||||
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
|
|
||||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
|
|
||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
|
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
|
||||||
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
|
||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
|
||||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
|
||||||
github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
|
|
||||||
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
|
||||||
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
|
||||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
|
||||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
|
||||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
|
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
|
||||||
github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
|
|
||||||
github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
|
|
||||||
github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE=
|
github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE=
|
||||||
github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
|
github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
|
||||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
|
||||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
|
||||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
|
||||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
|
||||||
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
|
||||||
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
|
||||||
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
|
|
||||||
github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=
|
|
||||||
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
|
|
||||||
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
|
|
||||||
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
|
|
||||||
github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
|
|
||||||
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
|
|
||||||
github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
|
|
||||||
github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||||
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
|
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
|
||||||
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||||
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
|
||||||
github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
|
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
|
||||||
github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8=
|
||||||
github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8=
|
github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
|
||||||
github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA=
|
github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
|
||||||
github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo=
|
github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
|
||||||
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
|
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I=
|
||||||
github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng=
|
|
||||||
github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
|
|
||||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
|
||||||
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
|
|
||||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
|
||||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
|
||||||
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
|
||||||
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
|
||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
|
||||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
|
||||||
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
|
|
||||||
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
|
|
||||||
github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
|
|
||||||
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
|
|
||||||
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
|
|
||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
|
||||||
github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
|
||||||
github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
|
|
||||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||||
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
||||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
|
||||||
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
|
||||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||||
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
|
|
||||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
|
||||||
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||||
github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA=
|
|
||||||
github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54=
|
github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54=
|
||||||
github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ=
|
github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ=
|
||||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
|
||||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
|
||||||
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
|
||||||
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
|
||||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
|
||||||
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g=
|
github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g=
|
||||||
github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
|
||||||
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
|
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||||
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
|
||||||
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
|
||||||
github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
|
||||||
github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
|
||||||
github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
|
||||||
github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
|
||||||
github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
|
||||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
|
||||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
|
||||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
|
||||||
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
|
||||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
|
||||||
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
|
||||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
|
||||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
|
||||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
|
||||||
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
|
||||||
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
|
||||||
github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28=
|
github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28=
|
||||||
github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
||||||
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
|
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
|
||||||
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
|
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
|
||||||
github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
|
github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
|
||||||
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
|
|
||||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
|
||||||
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
|
||||||
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
|
||||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
|
||||||
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
|
||||||
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
|
|
||||||
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
|
|
||||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
|
||||||
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
|
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
|
||||||
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||||
|
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||||
|
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
|
||||||
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
||||||
github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA=
|
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
|
||||||
github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
|
||||||
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
|
|
||||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
|
||||||
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
|
||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
|
|
||||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
|
||||||
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
|
||||||
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
||||||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||||
github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
|
||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
|
||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||||
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
|
||||||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
|
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
|
||||||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
github.com/onsi/ginkgo/v2 v2.9.1 h1:zie5Ly042PD3bsCvsSOPvRnFwyo3rKe64TJlD6nu0mk=
|
||||||
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
|
github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
|
||||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
|
||||||
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
|
|
||||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
|
||||||
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
|
||||||
github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc=
|
|
||||||
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
|
|
||||||
github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
|
|
||||||
github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU=
|
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
|
|
||||||
github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0=
|
|
||||||
github.com/onsi/ginkgo/v2 v2.4.0 h1:+Ig9nvqgS5OBSACXNk15PLdp0U9XPYROt9CFzVdFGIs=
|
|
||||||
github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo=
|
|
||||||
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
|
||||||
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
|
||||||
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
|
|
||||||
github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
|
|
||||||
github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
|
|
||||||
github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc=
|
|
||||||
github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM=
|
|
||||||
github.com/onsi/gomega v1.23.0 h1:/oxKu9c2HVap+F3PfKort2Hw5DEU+HGlW8n+tguWsys=
|
|
||||||
github.com/onsi/gomega v1.23.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg=
|
|
||||||
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
|
|
||||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
|
github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
|
||||||
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
|
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
|
||||||
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
|
|
||||||
github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
|
|
||||||
github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
|
|
||||||
github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw=
|
|
||||||
github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y=
|
|
||||||
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
|
||||||
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
|
||||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||||
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
|
||||||
github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4=
|
github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4=
|
||||||
github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w=
|
github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM=
|
||||||
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
|
github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc=
|
||||||
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
|
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
|
||||||
github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
|
github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
|
||||||
github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
|
|
||||||
github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE=
|
|
||||||
github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA=
|
|
||||||
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
|
||||||
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
|
||||||
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
|
||||||
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
|
|
||||||
github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
|
|
||||||
github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo=
|
|
||||||
github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4=
|
|
||||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
|
||||||
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
|
||||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
|
||||||
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
|
|
||||||
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
|
|
||||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
|
github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
|
||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
|
||||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
|
||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
|
|
||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
|
||||||
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
|
||||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
|
||||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
|
||||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
|
||||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
|
||||||
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
|
||||||
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
|
||||||
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
|
||||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
|
||||||
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
|
||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
|
||||||
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
|
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
|
||||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
|
||||||
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
|
|
||||||
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
|
|
||||||
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
|
||||||
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
|
||||||
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
|
||||||
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
|
||||||
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
|
||||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
|
||||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
|
||||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||||
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
|
||||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
|
||||||
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
|
||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
|
||||||
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
|
|
||||||
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
|
||||||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
|
||||||
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
|
|
||||||
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
|
||||||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
|
||||||
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
|
|
||||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
|
||||||
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
|
||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
|
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
|
||||||
golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
|
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
|
||||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
|
||||||
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
|
||||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
|
||||||
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
|
||||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||||
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
|
||||||
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
|
||||||
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
|
||||||
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
|
||||||
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
|
||||||
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
|
||||||
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
|
||||||
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
|
||||||
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
|
||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
|
||||||
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
|
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
||||||
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
|
||||||
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
|
||||||
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
|
||||||
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
|
||||||
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
|
||||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
|
||||||
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
|
|
||||||
golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10 h1:Frnccbp+ok2GkUS2tC84yAq/U9Vg+0sIO7aRL3T4Xnc=
|
|
||||||
golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
|
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.5.0 h1:HuArIo48skDwlrvM3sEdHXElYslAMsf3KwRkkW4MC4s=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I=
|
||||||
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
|
||||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
|
||||||
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
|
||||||
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b h1:clP8eMhB30EHdc0bd2Twtq6kgU7yl5ub2cQLSdrv1Dg=
|
|
||||||
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
|
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
|
||||||
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw=
|
||||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
|
||||||
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
|
|
||||||
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
|
||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
|
||||||
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
|
||||||
golang.org/x/term v0.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI=
|
|
||||||
golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
|
|
||||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
||||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
|
||||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
|
||||||
golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
|
|
||||||
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
|
||||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
|
||||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
|
||||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
|
||||||
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44=
|
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44=
|
||||||
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||||
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
|
||||||
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
|
||||||
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
|
||||||
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
|
||||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
|
||||||
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
|
||||||
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
|
||||||
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
|
||||||
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
|
||||||
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
|
||||||
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
|
||||||
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
|
||||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
|
||||||
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
|
||||||
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
|
||||||
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
|
||||||
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
|
||||||
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
|
||||||
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
|
||||||
golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
|
||||||
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
|
||||||
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
|
||||||
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
|
||||||
golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
|
||||||
golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
|
|
||||||
golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
|
|
||||||
golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
|
|
||||||
golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
|
||||||
golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
|
||||||
golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
|
||||||
golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
|
||||||
golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
|
||||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||||
golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
|
||||||
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
|
||||||
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
|
||||||
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
|
||||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
|
golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4=
|
||||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
|
||||||
golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
|
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
|
||||||
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
|
||||||
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
|
||||||
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
|
||||||
google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
|
||||||
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
|
||||||
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
|
||||||
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
|
||||||
google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
|
||||||
google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
|
||||||
google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
|
||||||
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
|
||||||
google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
|
|
||||||
google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
|
|
||||||
google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
|
|
||||||
google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
|
|
||||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
|
||||||
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
|
|
||||||
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
|
||||||
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
|
||||||
google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
|
google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
|
||||||
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
|
||||||
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
|
||||||
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
|
||||||
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
|
||||||
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
|
||||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||||
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
|
|
||||||
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
|
||||||
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
|
||||||
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
|
||||||
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
|
||||||
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
|
||||||
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
|
||||||
google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
|
|
||||||
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
|
||||||
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
|
||||||
google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
|
||||||
google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
|
||||||
google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
|
||||||
google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
|
||||||
google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
|
||||||
google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
|
||||||
google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
|
|
||||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||||
google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
|
|
||||||
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
|
||||||
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
|
||||||
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
|
||||||
google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
|
||||||
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
|
||||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||||
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
|
||||||
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
|
||||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
|
||||||
google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
|
|
||||||
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
|
|
||||||
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
|
||||||
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
|
||||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||||
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||||
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||||
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
|
||||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
|
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
|
||||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
|
||||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
|
||||||
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||||
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
|
|
||||||
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
|
||||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
|
||||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
|
||||||
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
|
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
|
||||||
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
||||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
|
||||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
|
||||||
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
|
||||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
k8s.io/api v0.27.4 h1:0pCo/AN9hONazBKlNUdhQymmnfLRbSZjd5H5H3f0bSs=
|
||||||
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
k8s.io/api v0.27.4/go.mod h1:O3smaaX15NfxjzILfiln1D8Z3+gEYpjEpiNA/1EVK1Y=
|
||||||
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
k8s.io/apimachinery v0.27.4 h1:CdxflD4AF61yewuid0fLl6bM4a3q04jWel0IlP+aYjs=
|
||||||
k8s.io/api v0.26.0 h1:IpPlZnxBpV1xl7TGk/X6lFtpgjgntCg8PJ+qrPHAC7I=
|
k8s.io/apimachinery v0.27.4/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E=
|
||||||
k8s.io/api v0.26.0/go.mod h1:k6HDTaIFC8yn1i6pSClSqIwLABIcLV9l5Q4EcngKnQg=
|
k8s.io/client-go v0.27.4 h1:vj2YTtSJ6J4KxaC88P4pMPEQECWMY8gqPqsTgUKzvjk=
|
||||||
k8s.io/apimachinery v0.26.0 h1:1feANjElT7MvPqp0JT6F3Ss6TWDwmcjLypwoPpEf7zg=
|
k8s.io/client-go v0.27.4/go.mod h1:ragcly7lUlN0SRPk5/ZkGnDjPknzb37TICq07WhI6Xc=
|
||||||
k8s.io/apimachinery v0.26.0/go.mod h1:tnPmbONNJ7ByJNz9+n9kMjNP8ON+1qoAIIC70lztu74=
|
k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw=
|
||||||
k8s.io/client-go v0.26.0 h1:lT1D3OfO+wIi9UFolCrifbjUUgu7CpLca0AD8ghRLI8=
|
k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
|
||||||
k8s.io/client-go v0.26.0/go.mod h1:I2Sh57A79EQsDmn7F7ASpmru1cceh3ocVT9KlX2jEZg=
|
k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f h1:2kWPakN3i/k81b0gvD5C5FJ2kxm1WrQFanWchyKuqGg=
|
||||||
k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
|
k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f/go.mod h1:byini6yhqGC14c3ebc/QwanvYwhuMWF6yz2F8uwW8eg=
|
||||||
k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
|
k8s.io/utils v0.0.0-20230209194617-a36077c30491 h1:r0BAOLElQnnFhE/ApUsg3iHdVYYPBjNSSOMowRZxxsY=
|
||||||
k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
|
k8s.io/utils v0.0.0-20230209194617-a36077c30491/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
|
||||||
k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4=
|
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
|
||||||
k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
|
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
|
||||||
k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+OGxg8HsuBr/5f6tVAjDu6E=
|
|
||||||
k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4=
|
|
||||||
k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
|
||||||
k8s.io/utils v0.0.0-20221107191617-1a15be271d1d h1:0Smp/HP1OH4Rvhe+4B8nWGERtlqAGSftbSbbmm45oFs=
|
|
||||||
k8s.io/utils v0.0.0-20221107191617-1a15be271d1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
|
|
||||||
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
|
||||||
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
|
||||||
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
|
||||||
sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k=
|
|
||||||
sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
|
|
||||||
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE=
|
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE=
|
||||||
sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
|
sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
|
||||||
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
|
|
||||||
sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
|
sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
|
||||||
sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
|
sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
{
|
{
|
||||||
values+:: {
|
values+:: {
|
||||||
prometheusAdapter+: {
|
prometheusAdapter+: {
|
||||||
namespace: $.values.prometheusAdapter.namespace,
|
|
||||||
// Rules for custom-metrics
|
// Rules for custom-metrics
|
||||||
config+:: {
|
config+:: {
|
||||||
rules+: [
|
rules+: [
|
||||||
|
|||||||
197
jsonnet/kube-prometheus/addons/windows-hostprocess.libsonnet
Normal file
197
jsonnet/kube-prometheus/addons/windows-hostprocess.libsonnet
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
local windowsdashboards = import 'github.com/kubernetes-monitoring/kubernetes-mixin/dashboards/windows.libsonnet';
|
||||||
|
local windowsrules = import 'github.com/kubernetes-monitoring/kubernetes-mixin/rules/windows.libsonnet';
|
||||||
|
|
||||||
|
local defaults = {
|
||||||
|
local defaults = self,
|
||||||
|
// Convention: Top-level fields related to CRDs are public, other fields are hidden
|
||||||
|
// If there is no CRD for the component, everything is hidden in defaults.
|
||||||
|
name:: 'windows-exporter',
|
||||||
|
namespace:: error 'must provide namespace',
|
||||||
|
version:: error 'must provide version',
|
||||||
|
image:: error 'must provide version',
|
||||||
|
resources:: {
|
||||||
|
requests: { cpu: '300m', memory: '200Mi' },
|
||||||
|
limits: { memory: '200Mi' },
|
||||||
|
},
|
||||||
|
collectorsEnabled:: 'cpu,logical_disk,net,os,system,container,memory',
|
||||||
|
scrapeTimeout:: '15s',
|
||||||
|
interval:: '30s',
|
||||||
|
listenAddress:: '127.0.0.1',
|
||||||
|
port:: 9182,
|
||||||
|
commonLabels:: {
|
||||||
|
'app.kubernetes.io/name': defaults.name,
|
||||||
|
'app.kubernetes.io/version': defaults.version,
|
||||||
|
'app.kubernetes.io/component': 'windows-exporter',
|
||||||
|
'app.kubernetes.io/part-of': 'kube-prometheus',
|
||||||
|
},
|
||||||
|
selectorLabels:: {
|
||||||
|
[labelName]: defaults.commonLabels[labelName]
|
||||||
|
for labelName in std.objectFields(defaults.commonLabels)
|
||||||
|
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
local windowsExporter = function(params) {
|
||||||
|
local we = self,
|
||||||
|
_config:: defaults + params,
|
||||||
|
// Safety check
|
||||||
|
assert std.isObject(we._config.resources),
|
||||||
|
_metadata:: {
|
||||||
|
name: we._config.name,
|
||||||
|
namespace: we._config.namespace,
|
||||||
|
labels: we._config.commonLabels,
|
||||||
|
},
|
||||||
|
|
||||||
|
daemonset: {
|
||||||
|
apiVersion: 'apps/v1',
|
||||||
|
kind: 'DaemonSet',
|
||||||
|
metadata: we._metadata,
|
||||||
|
spec: {
|
||||||
|
selector: {
|
||||||
|
matchLabels: we._config.selectorLabels,
|
||||||
|
},
|
||||||
|
updateStrategy: {
|
||||||
|
type: 'RollingUpdate',
|
||||||
|
rollingUpdate: { maxUnavailable: '10%' },
|
||||||
|
},
|
||||||
|
template: {
|
||||||
|
metadata: we._metadata,
|
||||||
|
spec: {
|
||||||
|
securityContext: {
|
||||||
|
windowsOptions: {
|
||||||
|
hostProcess: true,
|
||||||
|
runAsUserName: 'NT AUTHORITY\\system',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hostNetwork: true,
|
||||||
|
initContainers: [
|
||||||
|
{
|
||||||
|
name: 'configure-firewall',
|
||||||
|
image: 'mcr.microsoft.com/windows/nanoserver:1809',
|
||||||
|
resources: we._config.resources,
|
||||||
|
command: [
|
||||||
|
'powershell',
|
||||||
|
],
|
||||||
|
args: [
|
||||||
|
'New-NetFirewallRule',
|
||||||
|
'-DisplayName',
|
||||||
|
"'windows-exporter'",
|
||||||
|
'-Direction',
|
||||||
|
'inbound',
|
||||||
|
'-Profile',
|
||||||
|
'Any',
|
||||||
|
'-Action',
|
||||||
|
'Allow',
|
||||||
|
'-LocalPort',
|
||||||
|
std.toString(we._config.port),
|
||||||
|
'-Protocol',
|
||||||
|
'TCP',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
containers: [
|
||||||
|
{
|
||||||
|
args: [
|
||||||
|
'--config.file=%CONTAINER_SANDBOX_MOUNT_POINT%/config.yml',
|
||||||
|
'--collector.textfile.directory=%CONTAINER_SANDBOX_MOUNT_POINT%',
|
||||||
|
],
|
||||||
|
name: we._config.name,
|
||||||
|
image: we._config.image + ':' + we._config.version,
|
||||||
|
imagePullPolicy: 'Always',
|
||||||
|
resources: we._config.resources,
|
||||||
|
ports: [
|
||||||
|
{
|
||||||
|
containerPort: we._config.port,
|
||||||
|
hostPort: we._config.port,
|
||||||
|
name: 'http',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
volumeMounts: [
|
||||||
|
{
|
||||||
|
name: 'windows-exporter-config',
|
||||||
|
mountPath: '/config.yml',
|
||||||
|
subPath: 'config.yml',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
nodeSelector: {
|
||||||
|
'kubernetes.io/os': 'windows',
|
||||||
|
},
|
||||||
|
volumes: [
|
||||||
|
{
|
||||||
|
name: 'windows-exporter-config',
|
||||||
|
configMap: {
|
||||||
|
name: we._config.name,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
configmap: {
|
||||||
|
kind: 'ConfigMap',
|
||||||
|
apiVersion: 'v1',
|
||||||
|
metadata: we._metadata,
|
||||||
|
data: {
|
||||||
|
'config.yml': "collectors:\n enabled: '" + we._config.collectorsEnabled + "'",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
podmonitor: {
|
||||||
|
apiVersion: 'monitoring.coreos.com/v1',
|
||||||
|
kind: 'PodMonitor',
|
||||||
|
metadata: we._metadata,
|
||||||
|
spec: {
|
||||||
|
jobLabel: 'app.kubernetes.io/name',
|
||||||
|
selector: {
|
||||||
|
matchLabels: we._config.selectorLabels,
|
||||||
|
},
|
||||||
|
podMetricsEndpoints: [
|
||||||
|
{
|
||||||
|
port: 'http',
|
||||||
|
scheme: 'http',
|
||||||
|
scrapeTimeout: we._config.scrapeTimeout,
|
||||||
|
interval: we._config.interval,
|
||||||
|
relabelings: [
|
||||||
|
{
|
||||||
|
action: 'replace',
|
||||||
|
regex: '(.*)',
|
||||||
|
replacement: '$1',
|
||||||
|
sourceLabels: ['__meta_kubernetes_pod_node_name'],
|
||||||
|
targetLabel: 'instance',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
{
|
||||||
|
values+:: {
|
||||||
|
windowsExporter+: {
|
||||||
|
name: defaults.name,
|
||||||
|
namespace: $.values.common.namespace,
|
||||||
|
},
|
||||||
|
grafana+:: {
|
||||||
|
dashboards+:: windowsdashboards {
|
||||||
|
_config: $.kubernetesControlPlane.mixin._config {
|
||||||
|
windowsExporterSelector: 'job="' + $.values.windowsExporter.name + '"',
|
||||||
|
},
|
||||||
|
}.grafanaDashboards,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
kubernetesControlPlane+: {
|
||||||
|
mixin+:: {
|
||||||
|
prometheusRules+:: {
|
||||||
|
groups+: windowsrules {
|
||||||
|
_config: $.kubernetesControlPlane.mixin._config {
|
||||||
|
windowsExporterSelector: 'job="' + $.values.windowsExporter.name + '"',
|
||||||
|
},
|
||||||
|
}.prometheusRules.groups,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
windowsExporter: windowsExporter($.values.windowsExporter),
|
||||||
|
}
|
||||||
@@ -11,6 +11,12 @@ local defaults = {
|
|||||||
requests: { cpu: '10m', memory: '20Mi' },
|
requests: { cpu: '10m', memory: '20Mi' },
|
||||||
limits: { cpu: '20m', memory: '40Mi' },
|
limits: { cpu: '20m', memory: '40Mi' },
|
||||||
},
|
},
|
||||||
|
kubeRbacProxy:: {
|
||||||
|
resources+: {
|
||||||
|
requests: { cpu: '10m', memory: '20Mi' },
|
||||||
|
limits: { cpu: '20m', memory: '40Mi' },
|
||||||
|
},
|
||||||
|
},
|
||||||
commonLabels:: {
|
commonLabels:: {
|
||||||
'app.kubernetes.io/name': 'blackbox-exporter',
|
'app.kubernetes.io/name': 'blackbox-exporter',
|
||||||
'app.kubernetes.io/version': defaults.version,
|
'app.kubernetes.io/version': defaults.version,
|
||||||
@@ -141,7 +147,10 @@ function(params) {
|
|||||||
clusterRoleBinding: {
|
clusterRoleBinding: {
|
||||||
apiVersion: 'rbac.authorization.k8s.io/v1',
|
apiVersion: 'rbac.authorization.k8s.io/v1',
|
||||||
kind: 'ClusterRoleBinding',
|
kind: 'ClusterRoleBinding',
|
||||||
metadata: bb._metadata,
|
metadata: {
|
||||||
|
name: 'blackbox-exporter',
|
||||||
|
labels: bb._config.commonLabels,
|
||||||
|
},
|
||||||
roleRef: {
|
roleRef: {
|
||||||
apiGroup: 'rbac.authorization.k8s.io',
|
apiGroup: 'rbac.authorization.k8s.io',
|
||||||
kind: 'ClusterRole',
|
kind: 'ClusterRole',
|
||||||
@@ -209,7 +218,7 @@ function(params) {
|
|||||||
}],
|
}],
|
||||||
};
|
};
|
||||||
|
|
||||||
local kubeRbacProxy = krp({
|
local kubeRbacProxy = krp(bb._config.kubeRbacProxy {
|
||||||
name: 'kube-rbac-proxy',
|
name: 'kube-rbac-proxy',
|
||||||
upstream: 'http://127.0.0.1:' + bb._config.internalPort + '/',
|
upstream: 'http://127.0.0.1:' + bb._config.internalPort + '/',
|
||||||
resources: bb._config.resources,
|
resources: bb._config.resources,
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ local defaults = {
|
|||||||
mixin:: {
|
mixin:: {
|
||||||
ruleLabels: {},
|
ruleLabels: {},
|
||||||
_config: {
|
_config: {
|
||||||
|
showMultiCluster: true,
|
||||||
cadvisorSelector: 'job="kubelet", metrics_path="/metrics/cadvisor"',
|
cadvisorSelector: 'job="kubelet", metrics_path="/metrics/cadvisor"',
|
||||||
kubeletSelector: 'job="kubelet", metrics_path="/metrics"',
|
kubeletSelector: 'job="kubelet", metrics_path="/metrics"',
|
||||||
kubeStateMetricsSelector: 'job="kube-state-metrics"',
|
kubeStateMetricsSelector: 'job="kube-state-metrics"',
|
||||||
@@ -105,6 +106,7 @@ function(params) {
|
|||||||
bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',
|
bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',
|
||||||
metricRelabelings: relabelings,
|
metricRelabelings: relabelings,
|
||||||
relabelings: [{
|
relabelings: [{
|
||||||
|
action: 'replace',
|
||||||
sourceLabels: ['__metrics_path__'],
|
sourceLabels: ['__metrics_path__'],
|
||||||
targetLabel: 'metrics_path',
|
targetLabel: 'metrics_path',
|
||||||
}],
|
}],
|
||||||
@@ -121,6 +123,7 @@ function(params) {
|
|||||||
},
|
},
|
||||||
bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',
|
bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',
|
||||||
relabelings: [{
|
relabelings: [{
|
||||||
|
action: 'replace',
|
||||||
sourceLabels: ['__metrics_path__'],
|
sourceLabels: ['__metrics_path__'],
|
||||||
targetLabel: 'metrics_path',
|
targetLabel: 'metrics_path',
|
||||||
}],
|
}],
|
||||||
@@ -166,6 +169,7 @@ function(params) {
|
|||||||
tlsConfig: { insecureSkipVerify: true },
|
tlsConfig: { insecureSkipVerify: true },
|
||||||
bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',
|
bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',
|
||||||
relabelings: [{
|
relabelings: [{
|
||||||
|
action: 'replace',
|
||||||
sourceLabels: ['__metrics_path__'],
|
sourceLabels: ['__metrics_path__'],
|
||||||
targetLabel: 'metrics_path',
|
targetLabel: 'metrics_path',
|
||||||
}],
|
}],
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
summary: 'One or more targets are unreachable.',
|
summary: 'One or more targets are unreachable.',
|
||||||
description: '{{ printf "%.4g" $value }}% of the {{ $labels.job }}/{{ $labels.service }} targets in {{ $labels.namespace }} namespace are down.',
|
description: '{{ printf "%.4g" $value }}% of the {{ $labels.job }}/{{ $labels.service }} targets in {{ $labels.namespace }} namespace are down.',
|
||||||
},
|
},
|
||||||
expr: '100 * (count(up == 0) BY (job, namespace, service) / count(up) BY (job, namespace, service)) > 10',
|
expr: '100 * (count(up == 0) BY (cluster, job, namespace, service) / count(up) BY (cluster, job, namespace, service)) > 10',
|
||||||
'for': '10m',
|
'for': '10m',
|
||||||
labels: {
|
labels: {
|
||||||
severity: 'warning',
|
severity: 'warning',
|
||||||
|
|||||||
@@ -13,6 +13,12 @@ local defaults = {
|
|||||||
requests: { cpu: '102m', memory: '180Mi' },
|
requests: { cpu: '102m', memory: '180Mi' },
|
||||||
limits: { cpu: '250m', memory: '180Mi' },
|
limits: { cpu: '250m', memory: '180Mi' },
|
||||||
},
|
},
|
||||||
|
kubeRbacProxy:: {
|
||||||
|
resources+: {
|
||||||
|
requests: { cpu: '10m', memory: '20Mi' },
|
||||||
|
limits: { cpu: '20m', memory: '40Mi' },
|
||||||
|
},
|
||||||
|
},
|
||||||
listenAddress:: '127.0.0.1',
|
listenAddress:: '127.0.0.1',
|
||||||
filesystemMountPointsExclude:: '^/(dev|proc|sys|run/k3s/containerd/.+|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)',
|
filesystemMountPointsExclude:: '^/(dev|proc|sys|run/k3s/containerd/.+|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)',
|
||||||
// NOTE: ignore veth network interface associated with containers.
|
// NOTE: ignore veth network interface associated with containers.
|
||||||
@@ -86,7 +92,10 @@ function(params) {
|
|||||||
clusterRoleBinding: {
|
clusterRoleBinding: {
|
||||||
apiVersion: 'rbac.authorization.k8s.io/v1',
|
apiVersion: 'rbac.authorization.k8s.io/v1',
|
||||||
kind: 'ClusterRoleBinding',
|
kind: 'ClusterRoleBinding',
|
||||||
metadata: ne._metadata,
|
metadata: {
|
||||||
|
name: ne._config.name,
|
||||||
|
labels: ne._config.commonLabels,
|
||||||
|
},
|
||||||
roleRef: {
|
roleRef: {
|
||||||
apiGroup: 'rbac.authorization.k8s.io',
|
apiGroup: 'rbac.authorization.k8s.io',
|
||||||
kind: 'ClusterRole',
|
kind: 'ClusterRole',
|
||||||
@@ -102,7 +111,10 @@ function(params) {
|
|||||||
clusterRole: {
|
clusterRole: {
|
||||||
apiVersion: 'rbac.authorization.k8s.io/v1',
|
apiVersion: 'rbac.authorization.k8s.io/v1',
|
||||||
kind: 'ClusterRole',
|
kind: 'ClusterRole',
|
||||||
metadata: ne._metadata,
|
metadata: {
|
||||||
|
name: ne._config.name,
|
||||||
|
labels: ne._config.commonLabels,
|
||||||
|
},
|
||||||
rules: [
|
rules: [
|
||||||
{
|
{
|
||||||
apiGroups: ['authentication.k8s.io'],
|
apiGroups: ['authentication.k8s.io'],
|
||||||
@@ -204,6 +216,7 @@ function(params) {
|
|||||||
'--path.udev.data=/host/root/run/udev/data',
|
'--path.udev.data=/host/root/run/udev/data',
|
||||||
'--no-collector.wifi',
|
'--no-collector.wifi',
|
||||||
'--no-collector.hwmon',
|
'--no-collector.hwmon',
|
||||||
|
'--no-collector.btrfs',
|
||||||
'--collector.filesystem.mount-points-exclude=' + ne._config.filesystemMountPointsExclude,
|
'--collector.filesystem.mount-points-exclude=' + ne._config.filesystemMountPointsExclude,
|
||||||
'--collector.netclass.ignored-devices=' + ne._config.ignoredNetworkDevices,
|
'--collector.netclass.ignored-devices=' + ne._config.ignoredNetworkDevices,
|
||||||
'--collector.netdev.device-exclude=' + ne._config.ignoredNetworkDevices,
|
'--collector.netdev.device-exclude=' + ne._config.ignoredNetworkDevices,
|
||||||
@@ -220,7 +233,7 @@ function(params) {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
local kubeRbacProxy = krp({
|
local kubeRbacProxy = krp(ne._config.kubeRbacProxy {
|
||||||
name: 'kube-rbac-proxy',
|
name: 'kube-rbac-proxy',
|
||||||
//image: krpImage,
|
//image: krpImage,
|
||||||
upstream: 'http://127.0.0.1:' + ne._config.port + '/',
|
upstream: 'http://127.0.0.1:' + ne._config.port + '/',
|
||||||
|
|||||||
@@ -34,20 +34,24 @@ local defaults = {
|
|||||||
containerMetricsPrefix:: '',
|
containerMetricsPrefix:: '',
|
||||||
|
|
||||||
prometheusURL:: error 'must provide prometheusURL',
|
prometheusURL:: error 'must provide prometheusURL',
|
||||||
|
containerQuerySelector:: '',
|
||||||
|
nodeQuerySelector:: '',
|
||||||
config:: {
|
config:: {
|
||||||
|
local containerSelector = if $.containerQuerySelector != '' then ',' + $.containerQuerySelector else '',
|
||||||
|
local nodeSelector = if $.nodeQuerySelector != '' then ',' + $.nodeQuerySelector else '',
|
||||||
resourceRules: {
|
resourceRules: {
|
||||||
cpu: {
|
cpu: {
|
||||||
containerQuery: |||
|
containerQuery: |||
|
||||||
sum by (<<.GroupBy>>) (
|
sum by (<<.GroupBy>>) (
|
||||||
irate (
|
irate (
|
||||||
%(containerMetricsPrefix)scontainer_cpu_usage_seconds_total{<<.LabelMatchers>>,container!="",pod!=""}[%(kubelet)s]
|
%(containerMetricsPrefix)scontainer_cpu_usage_seconds_total{<<.LabelMatchers>>,container!="",pod!=""%(addtionalSelector)s}[%(kubelet)s]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
||| % { kubelet: $.rangeIntervals.kubelet, containerMetricsPrefix: $.containerMetricsPrefix },
|
||| % { kubelet: $.rangeIntervals.kubelet, containerMetricsPrefix: $.containerMetricsPrefix, addtionalSelector: containerSelector },
|
||||||
nodeQuery: |||
|
nodeQuery: |||
|
||||||
sum by (<<.GroupBy>>) (
|
sum by (<<.GroupBy>>) (
|
||||||
1 - irate(
|
1 - irate(
|
||||||
node_cpu_seconds_total{mode="idle"}[%(nodeExporter)s]
|
node_cpu_seconds_total{mode="idle"%(addtionalSelector)s}[%(nodeExporter)s]
|
||||||
)
|
)
|
||||||
* on(namespace, pod) group_left(node) (
|
* on(namespace, pod) group_left(node) (
|
||||||
node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}
|
node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}
|
||||||
@@ -55,10 +59,10 @@ local defaults = {
|
|||||||
)
|
)
|
||||||
or sum by (<<.GroupBy>>) (
|
or sum by (<<.GroupBy>>) (
|
||||||
1 - irate(
|
1 - irate(
|
||||||
windows_cpu_time_total{mode="idle", job="windows-exporter",<<.LabelMatchers>>}[%(windowsExporter)s]
|
windows_cpu_time_total{mode="idle", job="windows-exporter",<<.LabelMatchers>>%(addtionalSelector)s}[%(windowsExporter)s]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
||| % { nodeExporter: $.rangeIntervals.nodeExporter, windowsExporter: $.rangeIntervals.windowsExporter, containerMetricsPrefix: $.containerMetricsPrefix },
|
||| % { nodeExporter: $.rangeIntervals.nodeExporter, windowsExporter: $.rangeIntervals.windowsExporter, containerMetricsPrefix: $.containerMetricsPrefix, addtionalSelector: nodeSelector },
|
||||||
resources: {
|
resources: {
|
||||||
overrides: {
|
overrides: {
|
||||||
node: { resource: 'node' },
|
node: { resource: 'node' },
|
||||||
@@ -71,21 +75,21 @@ local defaults = {
|
|||||||
memory: {
|
memory: {
|
||||||
containerQuery: |||
|
containerQuery: |||
|
||||||
sum by (<<.GroupBy>>) (
|
sum by (<<.GroupBy>>) (
|
||||||
%(containerMetricsPrefix)scontainer_memory_working_set_bytes{<<.LabelMatchers>>,container!="",pod!=""}
|
%(containerMetricsPrefix)scontainer_memory_working_set_bytes{<<.LabelMatchers>>,container!="",pod!=""%(addtionalSelector)s}
|
||||||
)
|
)
|
||||||
||| % { containerMetricsPrefix: $.containerMetricsPrefix },
|
||| % { containerMetricsPrefix: $.containerMetricsPrefix, addtionalSelector: containerSelector },
|
||||||
nodeQuery: |||
|
nodeQuery: |||
|
||||||
sum by (<<.GroupBy>>) (
|
sum by (<<.GroupBy>>) (
|
||||||
node_memory_MemTotal_bytes{job="node-exporter",<<.LabelMatchers>>}
|
node_memory_MemTotal_bytes{job="node-exporter",<<.LabelMatchers>>%(addtionalSelector)s}
|
||||||
-
|
-
|
||||||
node_memory_MemAvailable_bytes{job="node-exporter",<<.LabelMatchers>>}
|
node_memory_MemAvailable_bytes{job="node-exporter",<<.LabelMatchers>>%(addtionalSelector)s}
|
||||||
)
|
)
|
||||||
or sum by (<<.GroupBy>>) (
|
or sum by (<<.GroupBy>>) (
|
||||||
windows_cs_physical_memory_bytes{job="windows-exporter",<<.LabelMatchers>>}
|
windows_cs_physical_memory_bytes{job="windows-exporter",<<.LabelMatchers>>%(addtionalSelector)s}
|
||||||
-
|
-
|
||||||
windows_memory_available_bytes{job="windows-exporter",<<.LabelMatchers>>}
|
windows_memory_available_bytes{job="windows-exporter",<<.LabelMatchers>>%(addtionalSelector)s}
|
||||||
)
|
)
|
||||||
||| % { containerMetricsPrefix: $.containerMetricsPrefix },
|
||| % { containerMetricsPrefix: $.containerMetricsPrefix, addtionalSelector: nodeSelector },
|
||||||
resources: {
|
resources: {
|
||||||
overrides: {
|
overrides: {
|
||||||
instance: { resource: 'node' },
|
instance: { resource: 'node' },
|
||||||
@@ -129,6 +133,11 @@ function(params) {
|
|||||||
labels: pa._config.commonLabels,
|
labels: pa._config.commonLabels,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_metadata_no_ns:: {
|
||||||
|
name: pa._config.name,
|
||||||
|
labels: pa._config.commonLabels,
|
||||||
|
},
|
||||||
|
|
||||||
apiService: {
|
apiService: {
|
||||||
apiVersion: 'apiregistration.k8s.io/v1',
|
apiVersion: 'apiregistration.k8s.io/v1',
|
||||||
kind: 'APIService',
|
kind: 'APIService',
|
||||||
@@ -236,13 +245,21 @@ function(params) {
|
|||||||
'--tls-cipher-suites=' + std.join(',', pa._config.tlsCipherSuites),
|
'--tls-cipher-suites=' + std.join(',', pa._config.tlsCipherSuites),
|
||||||
],
|
],
|
||||||
resources: pa._config.resources,
|
resources: pa._config.resources,
|
||||||
|
startupProbe: {
|
||||||
|
httpGet: {
|
||||||
|
path: '/livez',
|
||||||
|
port: 'https',
|
||||||
|
scheme: 'HTTPS',
|
||||||
|
},
|
||||||
|
periodSeconds: 10,
|
||||||
|
failureThreshold: 18,
|
||||||
|
},
|
||||||
readinessProbe: {
|
readinessProbe: {
|
||||||
httpGet: {
|
httpGet: {
|
||||||
path: '/readyz',
|
path: '/readyz',
|
||||||
port: 'https',
|
port: 'https',
|
||||||
scheme: 'HTTPS',
|
scheme: 'HTTPS',
|
||||||
},
|
},
|
||||||
initialDelaySeconds: 30,
|
|
||||||
periodSeconds: 5,
|
periodSeconds: 5,
|
||||||
failureThreshold: 5,
|
failureThreshold: 5,
|
||||||
},
|
},
|
||||||
@@ -252,7 +269,6 @@ function(params) {
|
|||||||
port: 'https',
|
port: 'https',
|
||||||
scheme: 'HTTPS',
|
scheme: 'HTTPS',
|
||||||
},
|
},
|
||||||
initialDelaySeconds: 30,
|
|
||||||
periodSeconds: 5,
|
periodSeconds: 5,
|
||||||
failureThreshold: 5,
|
failureThreshold: 5,
|
||||||
},
|
},
|
||||||
@@ -311,7 +327,7 @@ function(params) {
|
|||||||
clusterRole: {
|
clusterRole: {
|
||||||
apiVersion: 'rbac.authorization.k8s.io/v1',
|
apiVersion: 'rbac.authorization.k8s.io/v1',
|
||||||
kind: 'ClusterRole',
|
kind: 'ClusterRole',
|
||||||
metadata: pa._metadata,
|
metadata: pa._metadata_no_ns,
|
||||||
rules: [{
|
rules: [{
|
||||||
apiGroups: [''],
|
apiGroups: [''],
|
||||||
resources: ['nodes', 'namespaces', 'pods', 'services'],
|
resources: ['nodes', 'namespaces', 'pods', 'services'],
|
||||||
@@ -322,7 +338,7 @@ function(params) {
|
|||||||
clusterRoleBinding: {
|
clusterRoleBinding: {
|
||||||
apiVersion: 'rbac.authorization.k8s.io/v1',
|
apiVersion: 'rbac.authorization.k8s.io/v1',
|
||||||
kind: 'ClusterRoleBinding',
|
kind: 'ClusterRoleBinding',
|
||||||
metadata: pa._metadata,
|
metadata: pa._metadata_no_ns,
|
||||||
roleRef: {
|
roleRef: {
|
||||||
apiGroup: 'rbac.authorization.k8s.io',
|
apiGroup: 'rbac.authorization.k8s.io',
|
||||||
kind: 'ClusterRole',
|
kind: 'ClusterRole',
|
||||||
@@ -338,7 +354,7 @@ function(params) {
|
|||||||
clusterRoleBindingDelegator: {
|
clusterRoleBindingDelegator: {
|
||||||
apiVersion: 'rbac.authorization.k8s.io/v1',
|
apiVersion: 'rbac.authorization.k8s.io/v1',
|
||||||
kind: 'ClusterRoleBinding',
|
kind: 'ClusterRoleBinding',
|
||||||
metadata: pa._metadata {
|
metadata: pa._metadata_no_ns {
|
||||||
name: 'resource-metrics:system:auth-delegator',
|
name: 'resource-metrics:system:auth-delegator',
|
||||||
},
|
},
|
||||||
roleRef: {
|
roleRef: {
|
||||||
@@ -356,7 +372,7 @@ function(params) {
|
|||||||
clusterRoleServerResources: {
|
clusterRoleServerResources: {
|
||||||
apiVersion: 'rbac.authorization.k8s.io/v1',
|
apiVersion: 'rbac.authorization.k8s.io/v1',
|
||||||
kind: 'ClusterRole',
|
kind: 'ClusterRole',
|
||||||
metadata: pa._metadata {
|
metadata: pa._metadata_no_ns {
|
||||||
name: 'resource-metrics-server-resources',
|
name: 'resource-metrics-server-resources',
|
||||||
},
|
},
|
||||||
rules: [{
|
rules: [{
|
||||||
@@ -369,7 +385,7 @@ function(params) {
|
|||||||
clusterRoleAggregatedMetricsReader: {
|
clusterRoleAggregatedMetricsReader: {
|
||||||
apiVersion: 'rbac.authorization.k8s.io/v1',
|
apiVersion: 'rbac.authorization.k8s.io/v1',
|
||||||
kind: 'ClusterRole',
|
kind: 'ClusterRole',
|
||||||
metadata: pa._metadata {
|
metadata: pa._metadata_no_ns {
|
||||||
name: 'system:aggregated-metrics-reader',
|
name: 'system:aggregated-metrics-reader',
|
||||||
labels+: {
|
labels+: {
|
||||||
'rbac.authorization.k8s.io/aggregate-to-admin': 'true',
|
'rbac.authorization.k8s.io/aggregate-to-admin': 'true',
|
||||||
|
|||||||
@@ -15,6 +15,12 @@ local defaults = {
|
|||||||
limits: { cpu: '200m', memory: '200Mi' },
|
limits: { cpu: '200m', memory: '200Mi' },
|
||||||
requests: { cpu: '100m', memory: '100Mi' },
|
requests: { cpu: '100m', memory: '100Mi' },
|
||||||
},
|
},
|
||||||
|
kubeRbacProxy:: {
|
||||||
|
resources+: {
|
||||||
|
requests: { cpu: '10m', memory: '20Mi' },
|
||||||
|
limits: { cpu: '20m', memory: '40Mi' },
|
||||||
|
},
|
||||||
|
},
|
||||||
commonLabels:: {
|
commonLabels:: {
|
||||||
'app.kubernetes.io/name': defaults.name,
|
'app.kubernetes.io/name': defaults.name,
|
||||||
'app.kubernetes.io/version': defaults.version,
|
'app.kubernetes.io/version': defaults.version,
|
||||||
@@ -32,6 +38,7 @@ local defaults = {
|
|||||||
prometheus: defaults.name,
|
prometheus: defaults.name,
|
||||||
},
|
},
|
||||||
_config: {
|
_config: {
|
||||||
|
groupLabels: 'cluster,controller,namespace',
|
||||||
prometheusOperatorSelector: 'job="prometheus-operator",namespace="' + defaults.namespace + '"',
|
prometheusOperatorSelector: 'job="prometheus-operator",namespace="' + defaults.namespace + '"',
|
||||||
runbookURLPattern: 'https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/%s',
|
runbookURLPattern: 'https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/%s',
|
||||||
},
|
},
|
||||||
@@ -141,7 +148,7 @@ function(params)
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
local kubeRbacProxy = krp({
|
local kubeRbacProxy = krp(po._config.kubeRbacProxy {
|
||||||
name: 'kube-rbac-proxy',
|
name: 'kube-rbac-proxy',
|
||||||
upstream: 'http://127.0.0.1:8080/',
|
upstream: 'http://127.0.0.1:8080/',
|
||||||
secureListenAddress: ':8443',
|
secureListenAddress: ':8443',
|
||||||
|
|||||||
@@ -116,6 +116,18 @@ function(params) {
|
|||||||
port: o.port,
|
port: o.port,
|
||||||
protocol: 'TCP',
|
protocol: 'TCP',
|
||||||
}, p.service.spec.ports),
|
}, p.service.spec.ports),
|
||||||
|
}, {
|
||||||
|
from: [{
|
||||||
|
podSelector: {
|
||||||
|
matchLabels: {
|
||||||
|
'app.kubernetes.io/name': 'prometheus-adapter',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}],
|
||||||
|
ports: [{
|
||||||
|
port: 9090,
|
||||||
|
protocol: 'TCP',
|
||||||
|
}],
|
||||||
}, {
|
}, {
|
||||||
from: [{
|
from: [{
|
||||||
podSelector: {
|
podSelector: {
|
||||||
@@ -236,11 +248,11 @@ function(params) {
|
|||||||
roleRef: {
|
roleRef: {
|
||||||
apiGroup: 'rbac.authorization.k8s.io',
|
apiGroup: 'rbac.authorization.k8s.io',
|
||||||
kind: 'Role',
|
kind: 'Role',
|
||||||
name: p._metadata.name + '-config',
|
name: p.roleConfig.metadata.name,
|
||||||
},
|
},
|
||||||
subjects: [{
|
subjects: [{
|
||||||
kind: 'ServiceAccount',
|
kind: 'ServiceAccount',
|
||||||
name: p._metadata.name,
|
name: p.serviceAccount.metadata.name,
|
||||||
namespace: p._config.namespace,
|
namespace: p._config.namespace,
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
@@ -254,11 +266,11 @@ function(params) {
|
|||||||
roleRef: {
|
roleRef: {
|
||||||
apiGroup: 'rbac.authorization.k8s.io',
|
apiGroup: 'rbac.authorization.k8s.io',
|
||||||
kind: 'ClusterRole',
|
kind: 'ClusterRole',
|
||||||
name: p._metadata.name,
|
name: p.clusterRole.metadata.name,
|
||||||
},
|
},
|
||||||
subjects: [{
|
subjects: [{
|
||||||
kind: 'ServiceAccount',
|
kind: 'ServiceAccount',
|
||||||
name: p._metadata.name,
|
name: p.serviceAccount.metadata.name,
|
||||||
namespace: p._config.namespace,
|
namespace: p._config.namespace,
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"subdir": "grafana"
|
"subdir": "grafana"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "d039275e4916aceae1c137120882e01d857787ac"
|
"version": "master"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
"subdir": "grafana-mixin"
|
"subdir": "grafana-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "release-9.3.0",
|
"version": "main",
|
||||||
"name": "grafana-mixin"
|
"name": "grafana-mixin"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
"subdir": "contrib/mixin"
|
"subdir": "contrib/mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "release-3.5"
|
"version": "main"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
"subdir": "jsonnet/prometheus-operator"
|
"subdir": "jsonnet/prometheus-operator"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "release-0.62"
|
"version": "main"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
"subdir": "jsonnet/mixin"
|
"subdir": "jsonnet/mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "release-0.62",
|
"version": "main",
|
||||||
"name": "prometheus-operator-mixin"
|
"name": "prometheus-operator-mixin"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
"subdir": ""
|
"subdir": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "release-0.12"
|
"version": "master"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
"subdir": "jsonnet/kube-state-metrics"
|
"subdir": "jsonnet/kube-state-metrics"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "release-2.7"
|
"version": "main"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
"subdir": "jsonnet/kube-state-metrics-mixin"
|
"subdir": "jsonnet/kube-state-metrics-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "release-2.7"
|
"version": "main"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
"subdir": "docs/node-mixin"
|
"subdir": "docs/node-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "release-1.4"
|
"version": "master"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -91,7 +91,7 @@
|
|||||||
"subdir": "documentation/prometheus-mixin"
|
"subdir": "documentation/prometheus-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "release-2.41",
|
"version": "main",
|
||||||
"name": "prometheus"
|
"name": "prometheus"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
"subdir": "doc/alertmanager-mixin"
|
"subdir": "doc/alertmanager-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "release-0.25",
|
"version": "main",
|
||||||
"name": "alertmanager"
|
"name": "alertmanager"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -111,7 +111,7 @@
|
|||||||
"subdir": "config/crd/bases"
|
"subdir": "config/crd/bases"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "release-0.5"
|
"version": "main"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
"subdir": "mixin"
|
"subdir": "mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "release-0.30",
|
"version": "main",
|
||||||
"name": "thanos-mixin"
|
"name": "thanos-mixin"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -10,4 +10,23 @@
|
|||||||
prometheusAdapter+:: {
|
prometheusAdapter+:: {
|
||||||
apiService:: null,
|
apiService:: null,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
kubernetesControlPlane+: {
|
||||||
|
kubeDnsPrometheusStackService: {
|
||||||
|
apiVersion: 'v1',
|
||||||
|
kind: 'Service',
|
||||||
|
metadata: {
|
||||||
|
name: 'kube-prometheus-stack-coredns',
|
||||||
|
namespace: 'kube-system',
|
||||||
|
labels: { 'k8s-app': 'kube-dns' },
|
||||||
|
},
|
||||||
|
spec: {
|
||||||
|
ports: [
|
||||||
|
{ name: 'metrics', port: 9153, targetPort: 9153 },
|
||||||
|
],
|
||||||
|
selector: { 'k8s-app': 'kube-dns' },
|
||||||
|
clusterIP: 'None',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
local platforms = {
|
local platforms = {
|
||||||
|
aks: import './aks.libsonnet',
|
||||||
aws: import './aws.libsonnet',
|
aws: import './aws.libsonnet',
|
||||||
bootkube: import './bootkube.libsonnet',
|
bootkube: import './bootkube.libsonnet',
|
||||||
gke: import './gke.libsonnet',
|
gke: import './gke.libsonnet',
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
"alertmanager": "0.25.0",
|
"alertmanager": "0.25.0",
|
||||||
"blackboxExporter": "0.23.0",
|
"blackboxExporter": "0.24.0",
|
||||||
"grafana": "9.3.16",
|
"grafana": "9.5.3",
|
||||||
"kubeStateMetrics": "2.7.0",
|
"kubeStateMetrics": "2.9.2",
|
||||||
"nodeExporter": "1.5.0",
|
"nodeExporter": "1.6.1",
|
||||||
"prometheus": "2.41.0",
|
"prometheus": "2.45.0",
|
||||||
"prometheusAdapter": "0.10.0",
|
"prometheusAdapter": "0.10.0",
|
||||||
"prometheusOperator": "0.62.0",
|
"prometheusOperator": "0.66.0",
|
||||||
"kubeRbacProxy": "0.14.0",
|
"kubeRbacProxy": "0.14.2",
|
||||||
"configmapReload": "0.5.0",
|
"configmapReload": "0.5.0",
|
||||||
"pyrra": "0.5.2"
|
"pyrra": "0.6.4"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,6 @@
|
|||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
{
|
|
||||||
"source": {
|
|
||||||
"git": {
|
|
||||||
"remote": "https://github.com/grafana/jsonnet-libs.git",
|
|
||||||
"subdir": "mixin-utils"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"version": "master"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
"local": {
|
"local": {
|
||||||
|
|||||||
@@ -8,8 +8,8 @@
|
|||||||
"subdir": "grafana"
|
"subdir": "grafana"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "d039275e4916aceae1c137120882e01d857787ac",
|
"version": "5698c8940b6dadca3f42107b7839557bc041761f",
|
||||||
"sum": "515vMn4x4tP8vegL4HLW0nDO5+njGTgnDZB5OOhtsCI="
|
"sum": "l6fPvh3tW6fWot308w71QY/amrYsFPeitvz1IgJxqQA="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -18,8 +18,8 @@
|
|||||||
"subdir": "contrib/mixin"
|
"subdir": "contrib/mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "ae3b43a924c688f06560ada76a047d14b3935829",
|
"version": "26b3ecf5aa25ec085c7bd0f99a871865742c078d",
|
||||||
"sum": "W/Azptf1PoqjyMwJON96UY69MFugDA4IAYiKURscryc="
|
"sum": "GdePvMDfLQcVhwzk/Ephi/jC27ywGObLB5t0eC0lXd4="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
"subdir": "grafana-mixin"
|
"subdir": "grafana-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "e9cb2a313ecc5a8e3cfeca7d2b7df2878802096e",
|
"version": "1120f9e255760a3c104b57871fcb91801e934382",
|
||||||
"sum": "MkjR7zCgq6MUZgjDzop574tFKoTX2OBr7DTwm1K+Ofs="
|
"sum": "MkjR7zCgq6MUZgjDzop574tFKoTX2OBr7DTwm1K+Ofs="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -58,18 +58,8 @@
|
|||||||
"subdir": "grafana-builder"
|
"subdir": "grafana-builder"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "02db06f540086fa3f67d487bd01e1b314853fb8f",
|
"version": "a3e4fa30494f4ee94f1cab506df85090a12545d9",
|
||||||
"sum": "B49EzIY2WZsFxNMJcgRxE/gcZ9ltnS8pkOOV6Q5qioc="
|
"sum": "xEFMv4+ObwP5L1Wu0XK5agWci4AJzNApys6iKAQxLlQ="
|
||||||
},
|
|
||||||
{
|
|
||||||
"source": {
|
|
||||||
"git": {
|
|
||||||
"remote": "https://github.com/grafana/jsonnet-libs.git",
|
|
||||||
"subdir": "mixin-utils"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"version": "d9ba581fb27aa6689e911f288d4df06948eb8aad",
|
|
||||||
"sum": "LoYq5QxJmUXEtqkEG8CFUBLBhhzDDaNANHc7Gz36ZdM="
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -78,8 +68,8 @@
|
|||||||
"subdir": ""
|
"subdir": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "05ca993f01ee4dada3ea4d2afd51693784c6d858",
|
"version": "46fc905d5b2981642043088ac7902ea50db2903e",
|
||||||
"sum": "SqrljHWptkp0AT2w5/+n1KdE8EWzr3KydvW2DCltKnA="
|
"sum": "8FAie1MXww5Ip9F8hQWkU9Fio1Af+hO4weQuuexioIQ="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -88,8 +78,8 @@
|
|||||||
"subdir": "jsonnet/kube-state-metrics"
|
"subdir": "jsonnet/kube-state-metrics"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "abe3fd3184e16893b5a47196f90a94ed13e1b04d",
|
"version": "3fb1e86c189d40f6807508424b273b463464b372",
|
||||||
"sum": "TOS2nb0CFfVg+Bc7+AT/nPivCQO6zkefZb3wHN2E5/E="
|
"sum": "+dOzAK+fwsFf97uZpjcjTcEJEC1H8hh/j8f5uIQK/5g="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -98,8 +88,8 @@
|
|||||||
"subdir": "jsonnet/kube-state-metrics-mixin"
|
"subdir": "jsonnet/kube-state-metrics-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "abe3fd3184e16893b5a47196f90a94ed13e1b04d",
|
"version": "3fb1e86c189d40f6807508424b273b463464b372",
|
||||||
"sum": "u8gaydJoxEjzizQ8jY8xSjYgWooPmxw+wIWdDxifMAk="
|
"sum": "qclI7LwucTjBef3PkGBkKxF0mfZPbHnn4rlNWKGtR4c="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -108,8 +98,8 @@
|
|||||||
"subdir": "jsonnet/mixin"
|
"subdir": "jsonnet/mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "21147bd93fa83f01b3fbf1542015d3508962561a",
|
"version": "ec8188c48b186becae6041bcd439fa640086a1e4",
|
||||||
"sum": "GQmaVFJwKMiD/P4n3N2LrAZVcwutriWrP8joclDtBYQ=",
|
"sum": "n3flMIzlADeyygb0uipZ4KPp2uNSjdtkrwgHjTC7Ca4=",
|
||||||
"name": "prometheus-operator-mixin"
|
"name": "prometheus-operator-mixin"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -119,8 +109,8 @@
|
|||||||
"subdir": "jsonnet/prometheus-operator"
|
"subdir": "jsonnet/prometheus-operator"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "21147bd93fa83f01b3fbf1542015d3508962561a",
|
"version": "ec8188c48b186becae6041bcd439fa640086a1e4",
|
||||||
"sum": "mIHCeM53O4u5RBf4z2Snl+CQRDINv4J3bMygsQWauq4="
|
"sum": "e+BTsEsyOI6FFW464Xn8Tp1xixtArpLqGHW8qIczNjs="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -129,7 +119,7 @@
|
|||||||
"subdir": "doc/alertmanager-mixin"
|
"subdir": "doc/alertmanager-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "a4e8574be7165d3c21162456f160e0faf3d05de3",
|
"version": "487db1383b8cc5c2867c77f110431605bb8ce247",
|
||||||
"sum": "PsK+V7oETCPKu2gLoPfqY0wwPKH9TzhNj6o2xezjjXc=",
|
"sum": "PsK+V7oETCPKu2gLoPfqY0wwPKH9TzhNj6o2xezjjXc=",
|
||||||
"name": "alertmanager"
|
"name": "alertmanager"
|
||||||
},
|
},
|
||||||
@@ -140,8 +130,8 @@
|
|||||||
"subdir": "docs/node-mixin"
|
"subdir": "docs/node-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "a954c9fea6bcccea7f68a77a002a2a878ef1d60c",
|
"version": "8fb4f78ce541f404144f86b3202cc53d2a0f387c",
|
||||||
"sum": "tappaHscNBSJCA6ypSWt7DDhohIOkxNjcLFRb3WKpu4="
|
"sum": "By6n6U10hYDogUsyhsaKZehbhzxBZZobJloiKyKadgM="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -150,8 +140,8 @@
|
|||||||
"subdir": "documentation/prometheus-mixin"
|
"subdir": "documentation/prometheus-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "c0d8a56c69014279464c0e15d8bfb0e153af0dab",
|
"version": "94edd088595b3f872fd770418c8face76a853628",
|
||||||
"sum": "LRx0tbMnoE1p8KEn+i81j2YsA5Sgt3itE5Y6jBf5eOQ=",
|
"sum": "8OngT76gVXOUROOOeP9yTe6E/dn+2D2J34Dn690QCG0=",
|
||||||
"name": "prometheus"
|
"name": "prometheus"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -161,8 +151,8 @@
|
|||||||
"subdir": "config/crd/bases"
|
"subdir": "config/crd/bases"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "490bebc3ac2a93497301e76019adcb22eed6c543",
|
"version": "1f288e97738e6869b07d3363094f55146ce1d5eb",
|
||||||
"sum": "d1550yhsX4VxdVN7b0gWT0cido/W90P6OGLzLqPwZcs="
|
"sum": "hF23mXrMFOMwB0zGHaHdL5aw3KOx5j1lyOwWT3IaOXY="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": {
|
"source": {
|
||||||
@@ -171,8 +161,8 @@
|
|||||||
"subdir": "mixin"
|
"subdir": "mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "fe3f5d24192570038e9576307e1b31794920a1f3",
|
"version": "cdba35b2c3779804adb69fca2162a528a10e682e",
|
||||||
"sum": "Io++1+lp1oQVoQiVRSCXUiGdTIRPV7aL6Ewgs3bShEs=",
|
"sum": "WhheqsiX0maUXByZFsb9xhCEsGXK2955bPmPPf1x+Cs=",
|
||||||
"name": "thanos-mixin"
|
"name": "thanos-mixin"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -90,7 +90,9 @@ resources:
|
|||||||
- ./manifests/setup/0podmonitorCustomResourceDefinition.yaml
|
- ./manifests/setup/0podmonitorCustomResourceDefinition.yaml
|
||||||
- ./manifests/setup/0probeCustomResourceDefinition.yaml
|
- ./manifests/setup/0probeCustomResourceDefinition.yaml
|
||||||
- ./manifests/setup/0prometheusCustomResourceDefinition.yaml
|
- ./manifests/setup/0prometheusCustomResourceDefinition.yaml
|
||||||
|
- ./manifests/setup/0prometheusagentCustomResourceDefinition.yaml
|
||||||
- ./manifests/setup/0prometheusruleCustomResourceDefinition.yaml
|
- ./manifests/setup/0prometheusruleCustomResourceDefinition.yaml
|
||||||
|
- ./manifests/setup/0scrapeconfigCustomResourceDefinition.yaml
|
||||||
- ./manifests/setup/0servicemonitorCustomResourceDefinition.yaml
|
- ./manifests/setup/0servicemonitorCustomResourceDefinition.yaml
|
||||||
- ./manifests/setup/0thanosrulerCustomResourceDefinition.yaml
|
- ./manifests/setup/0thanosrulerCustomResourceDefinition.yaml
|
||||||
- ./manifests/setup/namespace.yaml
|
- ./manifests/setup/namespace.yaml
|
||||||
|
|||||||
@@ -17,8 +17,7 @@ spec:
|
|||||||
rules:
|
rules:
|
||||||
- alert: AlertmanagerFailedReload
|
- alert: AlertmanagerFailedReload
|
||||||
annotations:
|
annotations:
|
||||||
description: Configuration has failed to load for {{ $labels.namespace }}/{{
|
description: Configuration has failed to load for {{ $labels.namespace }}/{{ $labels.pod}}.
|
||||||
$labels.pod}}.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerfailedreload
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerfailedreload
|
||||||
summary: Reloading an Alertmanager configuration has failed.
|
summary: Reloading an Alertmanager configuration has failed.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -30,11 +29,9 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- alert: AlertmanagerMembersInconsistent
|
- alert: AlertmanagerMembersInconsistent
|
||||||
annotations:
|
annotations:
|
||||||
description: Alertmanager {{ $labels.namespace }}/{{ $labels.pod}} has only
|
description: Alertmanager {{ $labels.namespace }}/{{ $labels.pod}} has only found {{ $value }} members of the {{$labels.job}} cluster.
|
||||||
found {{ $value }} members of the {{$labels.job}} cluster.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagermembersinconsistent
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagermembersinconsistent
|
||||||
summary: A member of an Alertmanager cluster has not found all other cluster
|
summary: A member of an Alertmanager cluster has not found all other cluster members.
|
||||||
members.
|
|
||||||
expr: |
|
expr: |
|
||||||
# Without max_over_time, failed scrapes could create false negatives, see
|
# Without max_over_time, failed scrapes could create false negatives, see
|
||||||
# https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.
|
# https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.
|
||||||
@@ -46,9 +43,7 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- alert: AlertmanagerFailedToSendAlerts
|
- alert: AlertmanagerFailedToSendAlerts
|
||||||
annotations:
|
annotations:
|
||||||
description: Alertmanager {{ $labels.namespace }}/{{ $labels.pod}} failed
|
description: Alertmanager {{ $labels.namespace }}/{{ $labels.pod}} failed to send {{ $value | humanizePercentage }} of notifications to {{ $labels.integration }}.
|
||||||
to send {{ $value | humanizePercentage }} of notifications to {{ $labels.integration
|
|
||||||
}}.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerfailedtosendalerts
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerfailedtosendalerts
|
||||||
summary: An Alertmanager instance failed to send notifications.
|
summary: An Alertmanager instance failed to send notifications.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -63,12 +58,9 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: AlertmanagerClusterFailedToSendAlerts
|
- alert: AlertmanagerClusterFailedToSendAlerts
|
||||||
annotations:
|
annotations:
|
||||||
description: The minimum notification failure rate to {{ $labels.integration
|
description: The minimum notification failure rate to {{ $labels.integration }} sent from any instance in the {{$labels.job}} cluster is {{ $value | humanizePercentage }}.
|
||||||
}} sent from any instance in the {{$labels.job}} cluster is {{ $value |
|
|
||||||
humanizePercentage }}.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterfailedtosendalerts
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterfailedtosendalerts
|
||||||
summary: All Alertmanager instances in a cluster failed to send notifications
|
summary: All Alertmanager instances in a cluster failed to send notifications to a critical integration.
|
||||||
to a critical integration.
|
|
||||||
expr: |
|
expr: |
|
||||||
min by (namespace,service, integration) (
|
min by (namespace,service, integration) (
|
||||||
rate(alertmanager_notifications_failed_total{job="alertmanager-main",namespace="monitoring", integration=~`.*`}[5m])
|
rate(alertmanager_notifications_failed_total{job="alertmanager-main",namespace="monitoring", integration=~`.*`}[5m])
|
||||||
@@ -81,12 +73,9 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- alert: AlertmanagerClusterFailedToSendAlerts
|
- alert: AlertmanagerClusterFailedToSendAlerts
|
||||||
annotations:
|
annotations:
|
||||||
description: The minimum notification failure rate to {{ $labels.integration
|
description: The minimum notification failure rate to {{ $labels.integration }} sent from any instance in the {{$labels.job}} cluster is {{ $value | humanizePercentage }}.
|
||||||
}} sent from any instance in the {{$labels.job}} cluster is {{ $value |
|
|
||||||
humanizePercentage }}.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterfailedtosendalerts
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterfailedtosendalerts
|
||||||
summary: All Alertmanager instances in a cluster failed to send notifications
|
summary: All Alertmanager instances in a cluster failed to send notifications to a non-critical integration.
|
||||||
to a non-critical integration.
|
|
||||||
expr: |
|
expr: |
|
||||||
min by (namespace,service, integration) (
|
min by (namespace,service, integration) (
|
||||||
rate(alertmanager_notifications_failed_total{job="alertmanager-main",namespace="monitoring", integration!~`.*`}[5m])
|
rate(alertmanager_notifications_failed_total{job="alertmanager-main",namespace="monitoring", integration!~`.*`}[5m])
|
||||||
@@ -99,8 +88,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: AlertmanagerConfigInconsistent
|
- alert: AlertmanagerConfigInconsistent
|
||||||
annotations:
|
annotations:
|
||||||
description: Alertmanager instances within the {{$labels.job}} cluster have
|
description: Alertmanager instances within the {{$labels.job}} cluster have different configurations.
|
||||||
different configurations.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerconfiginconsistent
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerconfiginconsistent
|
||||||
summary: Alertmanager instances within the same cluster have different configurations.
|
summary: Alertmanager instances within the same cluster have different configurations.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -113,12 +101,9 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- alert: AlertmanagerClusterDown
|
- alert: AlertmanagerClusterDown
|
||||||
annotations:
|
annotations:
|
||||||
description: '{{ $value | humanizePercentage }} of Alertmanager instances
|
description: '{{ $value | humanizePercentage }} of Alertmanager instances within the {{$labels.job}} cluster have been up for less than half of the last 5m.'
|
||||||
within the {{$labels.job}} cluster have been up for less than half of the
|
|
||||||
last 5m.'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterdown
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterdown
|
||||||
summary: Half or more of the Alertmanager instances within the same cluster
|
summary: Half or more of the Alertmanager instances within the same cluster are down.
|
||||||
are down.
|
|
||||||
expr: |
|
expr: |
|
||||||
(
|
(
|
||||||
count by (namespace,service) (
|
count by (namespace,service) (
|
||||||
@@ -135,12 +120,9 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- alert: AlertmanagerClusterCrashlooping
|
- alert: AlertmanagerClusterCrashlooping
|
||||||
annotations:
|
annotations:
|
||||||
description: '{{ $value | humanizePercentage }} of Alertmanager instances
|
description: '{{ $value | humanizePercentage }} of Alertmanager instances within the {{$labels.job}} cluster have restarted at least 5 times in the last 10m.'
|
||||||
within the {{$labels.job}} cluster have restarted at least 5 times in the
|
|
||||||
last 10m.'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclustercrashlooping
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclustercrashlooping
|
||||||
summary: Half or more of the Alertmanager instances within the same cluster
|
summary: Half or more of the Alertmanager instances within the same cluster are crashlooping.
|
||||||
are crashlooping.
|
|
||||||
expr: |
|
expr: |
|
||||||
(
|
(
|
||||||
count by (namespace,service) (
|
count by (namespace,service) (
|
||||||
|
|||||||
@@ -5,9 +5,8 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: blackbox-exporter
|
app.kubernetes.io/name: blackbox-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.23.0
|
app.kubernetes.io/version: 0.24.0
|
||||||
name: blackbox-exporter
|
name: blackbox-exporter
|
||||||
namespace: monitoring
|
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
kind: ClusterRole
|
kind: ClusterRole
|
||||||
|
|||||||
@@ -46,6 +46,6 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: blackbox-exporter
|
app.kubernetes.io/name: blackbox-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.23.0
|
app.kubernetes.io/version: 0.24.0
|
||||||
name: blackbox-exporter-configuration
|
name: blackbox-exporter-configuration
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: blackbox-exporter
|
app.kubernetes.io/name: blackbox-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.23.0
|
app.kubernetes.io/version: 0.24.0
|
||||||
name: blackbox-exporter
|
name: blackbox-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
@@ -23,14 +23,14 @@ spec:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: blackbox-exporter
|
app.kubernetes.io/name: blackbox-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.23.0
|
app.kubernetes.io/version: 0.24.0
|
||||||
spec:
|
spec:
|
||||||
automountServiceAccountToken: true
|
automountServiceAccountToken: true
|
||||||
containers:
|
containers:
|
||||||
- args:
|
- args:
|
||||||
- --config.file=/etc/blackbox_exporter/config.yml
|
- --config.file=/etc/blackbox_exporter/config.yml
|
||||||
- --web.listen-address=:19115
|
- --web.listen-address=:19115
|
||||||
image: quay.io/prometheus/blackbox-exporter:v0.23.0
|
image: quay.io/prometheus/blackbox-exporter:v0.24.0
|
||||||
name: blackbox-exporter
|
name: blackbox-exporter
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 19115
|
- containerPort: 19115
|
||||||
@@ -85,7 +85,7 @@ spec:
|
|||||||
- --secure-listen-address=:9115
|
- --secure-listen-address=:9115
|
||||||
- --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
|
- --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
|
||||||
- --upstream=http://127.0.0.1:19115/
|
- --upstream=http://127.0.0.1:19115/
|
||||||
image: quay.io/brancz/kube-rbac-proxy:v0.14.0
|
image: quay.io/brancz/kube-rbac-proxy:v0.14.2
|
||||||
name: kube-rbac-proxy
|
name: kube-rbac-proxy
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 9115
|
- containerPort: 9115
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: blackbox-exporter
|
app.kubernetes.io/name: blackbox-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.23.0
|
app.kubernetes.io/version: 0.24.0
|
||||||
name: blackbox-exporter
|
name: blackbox-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: blackbox-exporter
|
app.kubernetes.io/name: blackbox-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.23.0
|
app.kubernetes.io/version: 0.24.0
|
||||||
name: blackbox-exporter
|
name: blackbox-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: blackbox-exporter
|
app.kubernetes.io/name: blackbox-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.23.0
|
app.kubernetes.io/version: 0.24.0
|
||||||
name: blackbox-exporter
|
name: blackbox-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: blackbox-exporter
|
app.kubernetes.io/name: blackbox-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.23.0
|
app.kubernetes.io/version: 0.24.0
|
||||||
name: blackbox-exporter
|
name: blackbox-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: grafana
|
app.kubernetes.io/component: grafana
|
||||||
app.kubernetes.io/name: grafana
|
app.kubernetes.io/name: grafana
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 9.3.16
|
app.kubernetes.io/version: 9.5.3
|
||||||
name: grafana-config
|
name: grafana-config
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
stringData:
|
stringData:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: grafana
|
app.kubernetes.io/component: grafana
|
||||||
app.kubernetes.io/name: grafana
|
app.kubernetes.io/name: grafana
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 9.3.16
|
app.kubernetes.io/version: 9.5.3
|
||||||
name: grafana-datasources
|
name: grafana-datasources
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
stringData:
|
stringData:
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -22,6 +22,6 @@ metadata:
|
|||||||
app.kubernetes.io/component: grafana
|
app.kubernetes.io/component: grafana
|
||||||
app.kubernetes.io/name: grafana
|
app.kubernetes.io/name: grafana
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 9.3.16
|
app.kubernetes.io/version: 9.5.3
|
||||||
name: grafana-dashboards
|
name: grafana-dashboards
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: grafana
|
app.kubernetes.io/component: grafana
|
||||||
app.kubernetes.io/name: grafana
|
app.kubernetes.io/name: grafana
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 9.3.16
|
app.kubernetes.io/version: 9.5.3
|
||||||
name: grafana
|
name: grafana
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
@@ -18,19 +18,19 @@ spec:
|
|||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
checksum/grafana-config: 8f789e9282d2c489627b7cc14331eeb5
|
checksum/grafana-config: 5c598ba58d9b65011bdbb3864138399a
|
||||||
checksum/grafana-dashboardproviders: c7085e546c9aa6fdaf5f4fdabcf41b7c
|
checksum/grafana-dashboardproviders: c9c1743868aa1c3dab60d2c402e2dcf0
|
||||||
checksum/grafana-datasources: 73ffe398adc193d9836e41703c06f169
|
checksum/grafana-datasources: 5ef0e6acaa5b4e8603740fbad440717d
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/component: grafana
|
app.kubernetes.io/component: grafana
|
||||||
app.kubernetes.io/name: grafana
|
app.kubernetes.io/name: grafana
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 9.3.16
|
app.kubernetes.io/version: 9.5.3
|
||||||
spec:
|
spec:
|
||||||
automountServiceAccountToken: false
|
automountServiceAccountToken: false
|
||||||
containers:
|
containers:
|
||||||
- env: []
|
- env: []
|
||||||
image: grafana/grafana:9.3.16
|
image: grafana/grafana:9.5.3
|
||||||
name: grafana
|
name: grafana
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 3000
|
- containerPort: 3000
|
||||||
@@ -52,6 +52,8 @@ spec:
|
|||||||
drop:
|
drop:
|
||||||
- ALL
|
- ALL
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- mountPath: /var/lib/grafana
|
- mountPath: /var/lib/grafana
|
||||||
name: grafana-storage
|
name: grafana-storage
|
||||||
@@ -83,6 +85,9 @@ spec:
|
|||||||
- mountPath: /grafana-dashboard-definitions/0/k8s-resources-cluster
|
- mountPath: /grafana-dashboard-definitions/0/k8s-resources-cluster
|
||||||
name: grafana-dashboard-k8s-resources-cluster
|
name: grafana-dashboard-k8s-resources-cluster
|
||||||
readOnly: false
|
readOnly: false
|
||||||
|
- mountPath: /grafana-dashboard-definitions/0/k8s-resources-multicluster
|
||||||
|
name: grafana-dashboard-k8s-resources-multicluster
|
||||||
|
readOnly: false
|
||||||
- mountPath: /grafana-dashboard-definitions/0/k8s-resources-namespace
|
- mountPath: /grafana-dashboard-definitions/0/k8s-resources-namespace
|
||||||
name: grafana-dashboard-k8s-resources-namespace
|
name: grafana-dashboard-k8s-resources-namespace
|
||||||
readOnly: false
|
readOnly: false
|
||||||
@@ -180,6 +185,9 @@ spec:
|
|||||||
- configMap:
|
- configMap:
|
||||||
name: grafana-dashboard-k8s-resources-cluster
|
name: grafana-dashboard-k8s-resources-cluster
|
||||||
name: grafana-dashboard-k8s-resources-cluster
|
name: grafana-dashboard-k8s-resources-cluster
|
||||||
|
- configMap:
|
||||||
|
name: grafana-dashboard-k8s-resources-multicluster
|
||||||
|
name: grafana-dashboard-k8s-resources-multicluster
|
||||||
- configMap:
|
- configMap:
|
||||||
name: grafana-dashboard-k8s-resources-namespace
|
name: grafana-dashboard-k8s-resources-namespace
|
||||||
name: grafana-dashboard-k8s-resources-namespace
|
name: grafana-dashboard-k8s-resources-namespace
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: grafana
|
app.kubernetes.io/component: grafana
|
||||||
app.kubernetes.io/name: grafana
|
app.kubernetes.io/name: grafana
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 9.3.16
|
app.kubernetes.io/version: 9.5.3
|
||||||
name: grafana
|
name: grafana
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: grafana
|
app.kubernetes.io/component: grafana
|
||||||
app.kubernetes.io/name: grafana
|
app.kubernetes.io/name: grafana
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 9.3.16
|
app.kubernetes.io/version: 9.5.3
|
||||||
prometheus: k8s
|
prometheus: k8s
|
||||||
role: alert-rules
|
role: alert-rules
|
||||||
name: grafana-rules
|
name: grafana-rules
|
||||||
@@ -16,8 +16,7 @@ spec:
|
|||||||
rules:
|
rules:
|
||||||
- alert: GrafanaRequestsFailing
|
- alert: GrafanaRequestsFailing
|
||||||
annotations:
|
annotations:
|
||||||
message: '{{ $labels.namespace }}/{{ $labels.job }}/{{ $labels.handler }}
|
message: '{{ $labels.namespace }}/{{ $labels.job }}/{{ $labels.handler }} is experiencing {{ $value | humanize }}% errors'
|
||||||
is experiencing {{ $value | humanize }}% errors'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/grafana/grafanarequestsfailing
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/grafana/grafanarequestsfailing
|
||||||
expr: |
|
expr: |
|
||||||
100 * namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m{handler!~"/api/datasources/proxy/:id.*|/api/ds/query|/api/tsdb/query", status_code=~"5.."}
|
100 * namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m{handler!~"/api/datasources/proxy/:id.*|/api/ds/query|/api/tsdb/query", status_code=~"5.."}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: grafana
|
app.kubernetes.io/component: grafana
|
||||||
app.kubernetes.io/name: grafana
|
app.kubernetes.io/name: grafana
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 9.3.16
|
app.kubernetes.io/version: 9.5.3
|
||||||
name: grafana
|
name: grafana
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ metadata:
|
|||||||
app.kubernetes.io/component: grafana
|
app.kubernetes.io/component: grafana
|
||||||
app.kubernetes.io/name: grafana
|
app.kubernetes.io/name: grafana
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 9.3.16
|
app.kubernetes.io/version: 9.5.3
|
||||||
name: grafana
|
name: grafana
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: grafana
|
app.kubernetes.io/component: grafana
|
||||||
app.kubernetes.io/name: grafana
|
app.kubernetes.io/name: grafana
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 9.3.16
|
app.kubernetes.io/version: 9.5.3
|
||||||
name: grafana
|
name: grafana
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -15,12 +15,10 @@ spec:
|
|||||||
rules:
|
rules:
|
||||||
- alert: TargetDown
|
- alert: TargetDown
|
||||||
annotations:
|
annotations:
|
||||||
description: '{{ printf "%.4g" $value }}% of the {{ $labels.job }}/{{ $labels.service
|
description: '{{ printf "%.4g" $value }}% of the {{ $labels.job }}/{{ $labels.service }} targets in {{ $labels.namespace }} namespace are down.'
|
||||||
}} targets in {{ $labels.namespace }} namespace are down.'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/targetdown
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/targetdown
|
||||||
summary: One or more targets are unreachable.
|
summary: One or more targets are unreachable.
|
||||||
expr: 100 * (count(up == 0) BY (job, namespace, service) / count(up) BY (job,
|
expr: 100 * (count(up == 0) BY (cluster, job, namespace, service) / count(up) BY (cluster, job, namespace, service)) > 10
|
||||||
namespace, service)) > 10
|
|
||||||
for: 10m
|
for: 10m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
@@ -33,8 +31,7 @@ spec:
|
|||||||
mechanisms that send a notification when this alert is not firing. For example the
|
mechanisms that send a notification when this alert is not firing. For example the
|
||||||
"DeadMansSnitch" integration in PagerDuty.
|
"DeadMansSnitch" integration in PagerDuty.
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/watchdog
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/watchdog
|
||||||
summary: An alert that should always be firing to certify that Alertmanager
|
summary: An alert that should always be firing to certify that Alertmanager is working properly.
|
||||||
is working properly.
|
|
||||||
expr: vector(1)
|
expr: vector(1)
|
||||||
labels:
|
labels:
|
||||||
severity: none
|
severity: none
|
||||||
@@ -49,16 +46,14 @@ spec:
|
|||||||
This alert should be routed to a null receiver and configured to inhibit alerts with severity="info".
|
This alert should be routed to a null receiver and configured to inhibit alerts with severity="info".
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/infoinhibitor
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/infoinhibitor
|
||||||
summary: Info-level alert inhibition.
|
summary: Info-level alert inhibition.
|
||||||
expr: ALERTS{severity = "info"} == 1 unless on(namespace) ALERTS{alertname !=
|
expr: ALERTS{severity = "info"} == 1 unless on(namespace) ALERTS{alertname != "InfoInhibitor", severity =~ "warning|critical", alertstate="firing"} == 1
|
||||||
"InfoInhibitor", severity =~ "warning|critical", alertstate="firing"} == 1
|
|
||||||
labels:
|
labels:
|
||||||
severity: none
|
severity: none
|
||||||
- name: node-network
|
- name: node-network
|
||||||
rules:
|
rules:
|
||||||
- alert: NodeNetworkInterfaceFlapping
|
- alert: NodeNetworkInterfaceFlapping
|
||||||
annotations:
|
annotations:
|
||||||
description: Network interface "{{ $labels.device }}" changing its up status
|
description: Network interface "{{ $labels.device }}" changing its up status often on node-exporter {{ $labels.namespace }}/{{ $labels.pod }}
|
||||||
often on node-exporter {{ $labels.namespace }}/{{ $labels.pod }}
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/nodenetworkinterfaceflapping
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/nodenetworkinterfaceflapping
|
||||||
summary: Network interface is often changing its status
|
summary: Network interface is often changing its status
|
||||||
expr: |
|
expr: |
|
||||||
@@ -68,21 +63,17 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- name: kube-prometheus-node-recording.rules
|
- name: kube-prometheus-node-recording.rules
|
||||||
rules:
|
rules:
|
||||||
- expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal"}[3m]))
|
- expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal"}[3m])) BY (instance)
|
||||||
BY (instance)
|
|
||||||
record: instance:node_cpu:rate:sum
|
record: instance:node_cpu:rate:sum
|
||||||
- expr: sum(rate(node_network_receive_bytes_total[3m])) BY (instance)
|
- expr: sum(rate(node_network_receive_bytes_total[3m])) BY (instance)
|
||||||
record: instance:node_network_receive_bytes:rate:sum
|
record: instance:node_network_receive_bytes:rate:sum
|
||||||
- expr: sum(rate(node_network_transmit_bytes_total[3m])) BY (instance)
|
- expr: sum(rate(node_network_transmit_bytes_total[3m])) BY (instance)
|
||||||
record: instance:node_network_transmit_bytes:rate:sum
|
record: instance:node_network_transmit_bytes:rate:sum
|
||||||
- expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal"}[5m]))
|
- expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal"}[5m])) WITHOUT (cpu, mode) / ON(instance) GROUP_LEFT() count(sum(node_cpu_seconds_total) BY (instance, cpu)) BY (instance)
|
||||||
WITHOUT (cpu, mode) / ON(instance) GROUP_LEFT() count(sum(node_cpu_seconds_total)
|
|
||||||
BY (instance, cpu)) BY (instance)
|
|
||||||
record: instance:node_cpu:ratio
|
record: instance:node_cpu:ratio
|
||||||
- expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal"}[5m]))
|
- expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal"}[5m]))
|
||||||
record: cluster:node_cpu:sum_rate5m
|
record: cluster:node_cpu:sum_rate5m
|
||||||
- expr: cluster:node_cpu:sum_rate5m / count(sum(node_cpu_seconds_total) BY (instance,
|
- expr: cluster:node_cpu:sum_rate5m / count(sum(node_cpu_seconds_total) BY (instance, cpu))
|
||||||
cpu))
|
|
||||||
record: cluster:node_cpu:ratio
|
record: cluster:node_cpu:ratio
|
||||||
- name: kube-prometheus-general.rules
|
- name: kube-prometheus-general.rules
|
||||||
rules:
|
rules:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: kube-state-metrics
|
app.kubernetes.io/name: kube-state-metrics
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.7.0
|
app.kubernetes.io/version: 2.9.2
|
||||||
name: kube-state-metrics
|
name: kube-state-metrics
|
||||||
rules:
|
rules:
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
@@ -78,6 +78,13 @@ rules:
|
|||||||
verbs:
|
verbs:
|
||||||
- list
|
- list
|
||||||
- watch
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- discovery.k8s.io
|
||||||
|
resources:
|
||||||
|
- endpointslices
|
||||||
|
verbs:
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- storage.k8s.io
|
- storage.k8s.io
|
||||||
resources:
|
resources:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: kube-state-metrics
|
app.kubernetes.io/name: kube-state-metrics
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.7.0
|
app.kubernetes.io/version: 2.9.2
|
||||||
name: kube-state-metrics
|
name: kube-state-metrics
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: kube-state-metrics
|
app.kubernetes.io/name: kube-state-metrics
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.7.0
|
app.kubernetes.io/version: 2.9.2
|
||||||
name: kube-state-metrics
|
name: kube-state-metrics
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
@@ -23,7 +23,7 @@ spec:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: kube-state-metrics
|
app.kubernetes.io/name: kube-state-metrics
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.7.0
|
app.kubernetes.io/version: 2.9.2
|
||||||
spec:
|
spec:
|
||||||
automountServiceAccountToken: true
|
automountServiceAccountToken: true
|
||||||
containers:
|
containers:
|
||||||
@@ -32,7 +32,7 @@ spec:
|
|||||||
- --port=8081
|
- --port=8081
|
||||||
- --telemetry-host=127.0.0.1
|
- --telemetry-host=127.0.0.1
|
||||||
- --telemetry-port=8082
|
- --telemetry-port=8082
|
||||||
image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.7.0
|
image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.9.2
|
||||||
name: kube-state-metrics
|
name: kube-state-metrics
|
||||||
resources:
|
resources:
|
||||||
limits:
|
limits:
|
||||||
@@ -47,13 +47,16 @@ spec:
|
|||||||
drop:
|
drop:
|
||||||
- ALL
|
- ALL
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
|
runAsNonRoot: true
|
||||||
runAsUser: 65534
|
runAsUser: 65534
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
- args:
|
- args:
|
||||||
- --logtostderr
|
- --logtostderr
|
||||||
- --secure-listen-address=:8443
|
- --secure-listen-address=:8443
|
||||||
- --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
|
- --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
|
||||||
- --upstream=http://127.0.0.1:8081/
|
- --upstream=http://127.0.0.1:8081/
|
||||||
image: quay.io/brancz/kube-rbac-proxy:v0.14.0
|
image: quay.io/brancz/kube-rbac-proxy:v0.14.2
|
||||||
name: kube-rbac-proxy-main
|
name: kube-rbac-proxy-main
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 8443
|
- containerPort: 8443
|
||||||
@@ -79,7 +82,7 @@ spec:
|
|||||||
- --secure-listen-address=:9443
|
- --secure-listen-address=:9443
|
||||||
- --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
|
- --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
|
||||||
- --upstream=http://127.0.0.1:8082/
|
- --upstream=http://127.0.0.1:8082/
|
||||||
image: quay.io/brancz/kube-rbac-proxy:v0.14.0
|
image: quay.io/brancz/kube-rbac-proxy:v0.14.2
|
||||||
name: kube-rbac-proxy-self
|
name: kube-rbac-proxy-self
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 9443
|
- containerPort: 9443
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: kube-state-metrics
|
app.kubernetes.io/name: kube-state-metrics
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.7.0
|
app.kubernetes.io/version: 2.9.2
|
||||||
name: kube-state-metrics
|
name: kube-state-metrics
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: kube-state-metrics
|
app.kubernetes.io/name: kube-state-metrics
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.7.0
|
app.kubernetes.io/version: 2.9.2
|
||||||
prometheus: k8s
|
prometheus: k8s
|
||||||
role: alert-rules
|
role: alert-rules
|
||||||
name: kube-state-metrics-rules
|
name: kube-state-metrics-rules
|
||||||
@@ -16,56 +16,49 @@ spec:
|
|||||||
rules:
|
rules:
|
||||||
- alert: KubeStateMetricsListErrors
|
- alert: KubeStateMetricsListErrors
|
||||||
annotations:
|
annotations:
|
||||||
description: kube-state-metrics is experiencing errors at an elevated rate
|
description: kube-state-metrics is experiencing errors at an elevated rate in list operations. This is likely causing it to not be able to expose metrics about Kubernetes objects correctly or at all.
|
||||||
in list operations. This is likely causing it to not be able to expose metrics
|
|
||||||
about Kubernetes objects correctly or at all.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricslisterrors
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricslisterrors
|
||||||
summary: kube-state-metrics is experiencing errors in list operations.
|
summary: kube-state-metrics is experiencing errors in list operations.
|
||||||
expr: |
|
expr: |
|
||||||
(sum(rate(kube_state_metrics_list_total{job="kube-state-metrics",result="error"}[5m]))
|
(sum(rate(kube_state_metrics_list_total{job="kube-state-metrics",result="error"}[5m])) by (cluster)
|
||||||
/
|
/
|
||||||
sum(rate(kube_state_metrics_list_total{job="kube-state-metrics"}[5m])))
|
sum(rate(kube_state_metrics_list_total{job="kube-state-metrics"}[5m])) by (cluster))
|
||||||
> 0.01
|
> 0.01
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: critical
|
severity: critical
|
||||||
- alert: KubeStateMetricsWatchErrors
|
- alert: KubeStateMetricsWatchErrors
|
||||||
annotations:
|
annotations:
|
||||||
description: kube-state-metrics is experiencing errors at an elevated rate
|
description: kube-state-metrics is experiencing errors at an elevated rate in watch operations. This is likely causing it to not be able to expose metrics about Kubernetes objects correctly or at all.
|
||||||
in watch operations. This is likely causing it to not be able to expose
|
|
||||||
metrics about Kubernetes objects correctly or at all.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricswatcherrors
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricswatcherrors
|
||||||
summary: kube-state-metrics is experiencing errors in watch operations.
|
summary: kube-state-metrics is experiencing errors in watch operations.
|
||||||
expr: |
|
expr: |
|
||||||
(sum(rate(kube_state_metrics_watch_total{job="kube-state-metrics",result="error"}[5m]))
|
(sum(rate(kube_state_metrics_watch_total{job="kube-state-metrics",result="error"}[5m])) by (cluster)
|
||||||
/
|
/
|
||||||
sum(rate(kube_state_metrics_watch_total{job="kube-state-metrics"}[5m])))
|
sum(rate(kube_state_metrics_watch_total{job="kube-state-metrics"}[5m])) by (cluster))
|
||||||
> 0.01
|
> 0.01
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: critical
|
severity: critical
|
||||||
- alert: KubeStateMetricsShardingMismatch
|
- alert: KubeStateMetricsShardingMismatch
|
||||||
annotations:
|
annotations:
|
||||||
description: kube-state-metrics pods are running with different --total-shards
|
description: kube-state-metrics pods are running with different --total-shards configuration, some Kubernetes objects may be exposed multiple times or not exposed at all.
|
||||||
configuration, some Kubernetes objects may be exposed multiple times or
|
|
||||||
not exposed at all.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricsshardingmismatch
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricsshardingmismatch
|
||||||
summary: kube-state-metrics sharding is misconfigured.
|
summary: kube-state-metrics sharding is misconfigured.
|
||||||
expr: |
|
expr: |
|
||||||
stdvar (kube_state_metrics_total_shards{job="kube-state-metrics"}) != 0
|
stdvar (kube_state_metrics_total_shards{job="kube-state-metrics"}) by (cluster) != 0
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: critical
|
severity: critical
|
||||||
- alert: KubeStateMetricsShardsMissing
|
- alert: KubeStateMetricsShardsMissing
|
||||||
annotations:
|
annotations:
|
||||||
description: kube-state-metrics shards are missing, some Kubernetes objects
|
description: kube-state-metrics shards are missing, some Kubernetes objects are not being exposed.
|
||||||
are not being exposed.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricsshardsmissing
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricsshardsmissing
|
||||||
summary: kube-state-metrics shards are missing.
|
summary: kube-state-metrics shards are missing.
|
||||||
expr: |
|
expr: |
|
||||||
2^max(kube_state_metrics_total_shards{job="kube-state-metrics"}) - 1
|
2^max(kube_state_metrics_total_shards{job="kube-state-metrics"}) by (cluster) - 1
|
||||||
-
|
-
|
||||||
sum( 2 ^ max by (shard_ordinal) (kube_state_metrics_shard_ordinal{job="kube-state-metrics"}) )
|
sum( 2 ^ max by (cluster, shard_ordinal) (kube_state_metrics_shard_ordinal{job="kube-state-metrics"}) ) by (cluster)
|
||||||
!= 0
|
!= 0
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: kube-state-metrics
|
app.kubernetes.io/name: kube-state-metrics
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.7.0
|
app.kubernetes.io/version: 2.9.2
|
||||||
name: kube-state-metrics
|
name: kube-state-metrics
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: kube-state-metrics
|
app.kubernetes.io/name: kube-state-metrics
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.7.0
|
app.kubernetes.io/version: 2.9.2
|
||||||
name: kube-state-metrics
|
name: kube-state-metrics
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: kube-state-metrics
|
app.kubernetes.io/name: kube-state-metrics
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.7.0
|
app.kubernetes.io/version: 2.9.2
|
||||||
name: kube-state-metrics
|
name: kube-state-metrics
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ spec:
|
|||||||
rules:
|
rules:
|
||||||
- alert: KubePodCrashLooping
|
- alert: KubePodCrashLooping
|
||||||
annotations:
|
annotations:
|
||||||
description: 'Pod {{ $labels.namespace }}/{{ $labels.pod }} ({{ $labels.container
|
description: 'Pod {{ $labels.namespace }}/{{ $labels.pod }} ({{ $labels.container }}) is in waiting state (reason: "CrashLoopBackOff").'
|
||||||
}}) is in waiting state (reason: "CrashLoopBackOff").'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepodcrashlooping
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepodcrashlooping
|
||||||
summary: Pod is crash looping.
|
summary: Pod is crash looping.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -25,8 +24,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubePodNotReady
|
- alert: KubePodNotReady
|
||||||
annotations:
|
annotations:
|
||||||
description: Pod {{ $labels.namespace }}/{{ $labels.pod }} has been in a non-ready
|
description: 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://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepodnotready
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepodnotready
|
||||||
summary: Pod has been in a non-ready state for more than 15 minutes.
|
summary: Pod has been in a non-ready state for more than 15 minutes.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -42,9 +40,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeDeploymentGenerationMismatch
|
- alert: KubeDeploymentGenerationMismatch
|
||||||
annotations:
|
annotations:
|
||||||
description: Deployment generation for {{ $labels.namespace }}/{{ $labels.deployment
|
description: Deployment generation for {{ $labels.namespace }}/{{ $labels.deployment }} does not match, this indicates that the Deployment has failed but has not been rolled back.
|
||||||
}} does not match, this indicates that the Deployment has failed but has
|
|
||||||
not been rolled back.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedeploymentgenerationmismatch
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedeploymentgenerationmismatch
|
||||||
summary: Deployment generation mismatch due to possible roll-back
|
summary: Deployment generation mismatch due to possible roll-back
|
||||||
expr: |
|
expr: |
|
||||||
@@ -56,8 +52,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeDeploymentReplicasMismatch
|
- alert: KubeDeploymentReplicasMismatch
|
||||||
annotations:
|
annotations:
|
||||||
description: Deployment {{ $labels.namespace }}/{{ $labels.deployment }} has
|
description: Deployment {{ $labels.namespace }}/{{ $labels.deployment }} has not matched the expected number of replicas for longer than 15 minutes.
|
||||||
not matched the expected number of replicas for longer than 15 minutes.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedeploymentreplicasmismatch
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedeploymentreplicasmismatch
|
||||||
summary: Deployment has not matched the expected number of replicas.
|
summary: Deployment has not matched the expected number of replicas.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -73,12 +68,22 @@ spec:
|
|||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
|
- alert: KubeDeploymentRolloutStuck
|
||||||
|
annotations:
|
||||||
|
description: Rollout of deployment {{ $labels.namespace }}/{{ $labels.deployment }} is not progressing for longer than 15 minutes.
|
||||||
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedeploymentrolloutstuck
|
||||||
|
summary: Deployment rollout is not progressing.
|
||||||
|
expr: |
|
||||||
|
kube_deployment_status_condition{condition="Progressing", status="false",job="kube-state-metrics"}
|
||||||
|
!= 0
|
||||||
|
for: 15m
|
||||||
|
labels:
|
||||||
|
severity: warning
|
||||||
- alert: KubeStatefulSetReplicasMismatch
|
- alert: KubeStatefulSetReplicasMismatch
|
||||||
annotations:
|
annotations:
|
||||||
description: StatefulSet {{ $labels.namespace }}/{{ $labels.statefulset }}
|
description: StatefulSet {{ $labels.namespace }}/{{ $labels.statefulset }} has not matched the expected number of replicas for longer than 15 minutes.
|
||||||
has not matched the expected number of replicas for longer than 15 minutes.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetreplicasmismatch
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetreplicasmismatch
|
||||||
summary: Deployment has not matched the expected number of replicas.
|
summary: StatefulSet has not matched the expected number of replicas.
|
||||||
expr: |
|
expr: |
|
||||||
(
|
(
|
||||||
kube_statefulset_status_replicas_ready{job="kube-state-metrics"}
|
kube_statefulset_status_replicas_ready{job="kube-state-metrics"}
|
||||||
@@ -94,9 +99,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeStatefulSetGenerationMismatch
|
- alert: KubeStatefulSetGenerationMismatch
|
||||||
annotations:
|
annotations:
|
||||||
description: StatefulSet generation for {{ $labels.namespace }}/{{ $labels.statefulset
|
description: StatefulSet generation for {{ $labels.namespace }}/{{ $labels.statefulset }} does not match, this indicates that the StatefulSet has failed but has not been rolled back.
|
||||||
}} does not match, this indicates that the StatefulSet has failed but has
|
|
||||||
not been rolled back.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetgenerationmismatch
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetgenerationmismatch
|
||||||
summary: StatefulSet generation mismatch due to possible roll-back
|
summary: StatefulSet generation mismatch due to possible roll-back
|
||||||
expr: |
|
expr: |
|
||||||
@@ -108,8 +111,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeStatefulSetUpdateNotRolledOut
|
- alert: KubeStatefulSetUpdateNotRolledOut
|
||||||
annotations:
|
annotations:
|
||||||
description: StatefulSet {{ $labels.namespace }}/{{ $labels.statefulset }}
|
description: StatefulSet {{ $labels.namespace }}/{{ $labels.statefulset }} update has not been rolled out.
|
||||||
update has not been rolled out.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetupdatenotrolledout
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetupdatenotrolledout
|
||||||
summary: StatefulSet update has not been rolled out.
|
summary: StatefulSet update has not been rolled out.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -135,8 +137,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeDaemonSetRolloutStuck
|
- alert: KubeDaemonSetRolloutStuck
|
||||||
annotations:
|
annotations:
|
||||||
description: DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset }} has
|
description: DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset }} has not finished or progressed for at least 15 minutes.
|
||||||
not finished or progressed for at least 15 minutes.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedaemonsetrolloutstuck
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedaemonsetrolloutstuck
|
||||||
summary: DaemonSet rollout is stuck.
|
summary: DaemonSet rollout is stuck.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -168,9 +169,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeContainerWaiting
|
- alert: KubeContainerWaiting
|
||||||
annotations:
|
annotations:
|
||||||
description: pod/{{ $labels.pod }} in namespace {{ $labels.namespace }} on
|
description: pod/{{ $labels.pod }} in namespace {{ $labels.namespace }} on container {{ $labels.container}} has been in waiting state for longer than 1 hour.
|
||||||
container {{ $labels.container}} has been in waiting state for longer than
|
|
||||||
1 hour.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecontainerwaiting
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecontainerwaiting
|
||||||
summary: Pod container waiting longer than 1 hour
|
summary: Pod container waiting longer than 1 hour
|
||||||
expr: |
|
expr: |
|
||||||
@@ -180,8 +179,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeDaemonSetNotScheduled
|
- alert: KubeDaemonSetNotScheduled
|
||||||
annotations:
|
annotations:
|
||||||
description: '{{ $value }} Pods of DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset
|
description: '{{ $value }} Pods of DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset }} are not scheduled.'
|
||||||
}} are not scheduled.'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedaemonsetnotscheduled
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedaemonsetnotscheduled
|
||||||
summary: DaemonSet pods are not scheduled.
|
summary: DaemonSet pods are not scheduled.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -193,8 +191,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeDaemonSetMisScheduled
|
- alert: KubeDaemonSetMisScheduled
|
||||||
annotations:
|
annotations:
|
||||||
description: '{{ $value }} Pods of DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset
|
description: '{{ $value }} Pods of DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset }} are running where they are not supposed to run.'
|
||||||
}} are running where they are not supposed to run.'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedaemonsetmisscheduled
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedaemonsetmisscheduled
|
||||||
summary: DaemonSet pods are misscheduled.
|
summary: DaemonSet pods are misscheduled.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -204,8 +201,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeJobNotCompleted
|
- alert: KubeJobNotCompleted
|
||||||
annotations:
|
annotations:
|
||||||
description: Job {{ $labels.namespace }}/{{ $labels.job_name }} is taking
|
description: Job {{ $labels.namespace }}/{{ $labels.job_name }} is taking more than {{ "43200" | humanizeDuration }} to complete.
|
||||||
more than {{ "43200" | humanizeDuration }} to complete.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubejobnotcompleted
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubejobnotcompleted
|
||||||
summary: Job did not complete in time
|
summary: Job did not complete in time
|
||||||
expr: |
|
expr: |
|
||||||
@@ -216,8 +212,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeJobFailed
|
- alert: KubeJobFailed
|
||||||
annotations:
|
annotations:
|
||||||
description: Job {{ $labels.namespace }}/{{ $labels.job_name }} failed to
|
description: Job {{ $labels.namespace }}/{{ $labels.job_name }} failed to complete. Removing failed job after investigation should clear this alert.
|
||||||
complete. Removing failed job after investigation should clear this alert.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubejobfailed
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubejobfailed
|
||||||
summary: Job failed to complete.
|
summary: Job failed to complete.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -227,8 +222,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeHpaReplicasMismatch
|
- alert: KubeHpaReplicasMismatch
|
||||||
annotations:
|
annotations:
|
||||||
description: HPA {{ $labels.namespace }}/{{ $labels.horizontalpodautoscaler }}
|
description: HPA {{ $labels.namespace }}/{{ $labels.horizontalpodautoscaler }} has not matched the desired number of replicas for longer than 15 minutes.
|
||||||
has not matched the desired number of replicas for longer than 15 minutes.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubehpareplicasmismatch
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubehpareplicasmismatch
|
||||||
summary: HPA has not matched desired number of replicas.
|
summary: HPA has not matched desired number of replicas.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -250,8 +244,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeHpaMaxedOut
|
- alert: KubeHpaMaxedOut
|
||||||
annotations:
|
annotations:
|
||||||
description: HPA {{ $labels.namespace }}/{{ $labels.horizontalpodautoscaler }}
|
description: HPA {{ $labels.namespace }}/{{ $labels.horizontalpodautoscaler }} has been running at max replicas for longer than 15 minutes.
|
||||||
has been running at max replicas for longer than 15 minutes.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubehpamaxedout
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubehpamaxedout
|
||||||
summary: HPA is running at max replicas
|
summary: HPA is running at max replicas
|
||||||
expr: |
|
expr: |
|
||||||
@@ -265,60 +258,57 @@ spec:
|
|||||||
rules:
|
rules:
|
||||||
- alert: KubeCPUOvercommit
|
- alert: KubeCPUOvercommit
|
||||||
annotations:
|
annotations:
|
||||||
description: Cluster has overcommitted CPU resource requests for Pods by {{
|
description: Cluster {{ $labels.cluster }} has overcommitted CPU resource requests for Pods by {{ $value }} CPU shares and cannot tolerate node failure.
|
||||||
$value }} CPU shares and cannot tolerate node failure.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecpuovercommit
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecpuovercommit
|
||||||
summary: Cluster has overcommitted CPU resource requests.
|
summary: Cluster has overcommitted CPU resource requests.
|
||||||
expr: |
|
expr: |
|
||||||
sum(namespace_cpu:kube_pod_container_resource_requests:sum{}) - (sum(kube_node_status_allocatable{resource="cpu"}) - max(kube_node_status_allocatable{resource="cpu"})) > 0
|
sum(namespace_cpu:kube_pod_container_resource_requests:sum{job="kube-state-metrics",}) by (cluster) - (sum(kube_node_status_allocatable{job="kube-state-metrics",resource="cpu"}) by (cluster) - max(kube_node_status_allocatable{job="kube-state-metrics",resource="cpu"}) by (cluster)) > 0
|
||||||
and
|
and
|
||||||
(sum(kube_node_status_allocatable{resource="cpu"}) - max(kube_node_status_allocatable{resource="cpu"})) > 0
|
(sum(kube_node_status_allocatable{job="kube-state-metrics",resource="cpu"}) by (cluster) - max(kube_node_status_allocatable{job="kube-state-metrics",resource="cpu"}) by (cluster)) > 0
|
||||||
for: 10m
|
for: 10m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeMemoryOvercommit
|
- alert: KubeMemoryOvercommit
|
||||||
annotations:
|
annotations:
|
||||||
description: Cluster has overcommitted memory resource requests for Pods by
|
description: Cluster {{ $labels.cluster }} has overcommitted memory resource requests for Pods by {{ $value | humanize }} bytes and cannot tolerate node failure.
|
||||||
{{ $value | humanize }} bytes and cannot tolerate node failure.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubememoryovercommit
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubememoryovercommit
|
||||||
summary: Cluster has overcommitted memory resource requests.
|
summary: Cluster has overcommitted memory resource requests.
|
||||||
expr: |
|
expr: |
|
||||||
sum(namespace_memory:kube_pod_container_resource_requests:sum{}) - (sum(kube_node_status_allocatable{resource="memory"}) - max(kube_node_status_allocatable{resource="memory"})) > 0
|
sum(namespace_memory:kube_pod_container_resource_requests:sum{}) by (cluster) - (sum(kube_node_status_allocatable{resource="memory", job="kube-state-metrics"}) by (cluster) - max(kube_node_status_allocatable{resource="memory", job="kube-state-metrics"}) by (cluster)) > 0
|
||||||
and
|
and
|
||||||
(sum(kube_node_status_allocatable{resource="memory"}) - max(kube_node_status_allocatable{resource="memory"})) > 0
|
(sum(kube_node_status_allocatable{resource="memory", job="kube-state-metrics"}) by (cluster) - max(kube_node_status_allocatable{resource="memory", job="kube-state-metrics"}) by (cluster)) > 0
|
||||||
for: 10m
|
for: 10m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeCPUQuotaOvercommit
|
- alert: KubeCPUQuotaOvercommit
|
||||||
annotations:
|
annotations:
|
||||||
description: Cluster has overcommitted CPU resource requests for Namespaces.
|
description: Cluster {{ $labels.cluster }} has overcommitted CPU resource requests for Namespaces.
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecpuquotaovercommit
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecpuquotaovercommit
|
||||||
summary: Cluster has overcommitted CPU resource requests.
|
summary: Cluster has overcommitted CPU resource requests.
|
||||||
expr: |
|
expr: |
|
||||||
sum(min without(resource) (kube_resourcequota{job="kube-state-metrics", type="hard", resource=~"(cpu|requests.cpu)"}))
|
sum(min without(resource) (kube_resourcequota{job="kube-state-metrics", type="hard", resource=~"(cpu|requests.cpu)"})) by (cluster)
|
||||||
/
|
/
|
||||||
sum(kube_node_status_allocatable{resource="cpu", job="kube-state-metrics"})
|
sum(kube_node_status_allocatable{resource="cpu", job="kube-state-metrics"}) by (cluster)
|
||||||
> 1.5
|
> 1.5
|
||||||
for: 5m
|
for: 5m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeMemoryQuotaOvercommit
|
- alert: KubeMemoryQuotaOvercommit
|
||||||
annotations:
|
annotations:
|
||||||
description: Cluster has overcommitted memory resource requests for Namespaces.
|
description: Cluster {{ $labels.cluster }} has overcommitted memory resource requests for Namespaces.
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubememoryquotaovercommit
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubememoryquotaovercommit
|
||||||
summary: Cluster has overcommitted memory resource requests.
|
summary: Cluster has overcommitted memory resource requests.
|
||||||
expr: |
|
expr: |
|
||||||
sum(min without(resource) (kube_resourcequota{job="kube-state-metrics", type="hard", resource=~"(memory|requests.memory)"}))
|
sum(min without(resource) (kube_resourcequota{job="kube-state-metrics", type="hard", resource=~"(memory|requests.memory)"})) by (cluster)
|
||||||
/
|
/
|
||||||
sum(kube_node_status_allocatable{resource="memory", job="kube-state-metrics"})
|
sum(kube_node_status_allocatable{resource="memory", job="kube-state-metrics"}) by (cluster)
|
||||||
> 1.5
|
> 1.5
|
||||||
for: 5m
|
for: 5m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeQuotaAlmostFull
|
- alert: KubeQuotaAlmostFull
|
||||||
annotations:
|
annotations:
|
||||||
description: Namespace {{ $labels.namespace }} is using {{ $value | humanizePercentage
|
description: Namespace {{ $labels.namespace }} is using {{ $value | humanizePercentage }} of its {{ $labels.resource }} quota.
|
||||||
}} of its {{ $labels.resource }} quota.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubequotaalmostfull
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubequotaalmostfull
|
||||||
summary: Namespace quota is going to be full.
|
summary: Namespace quota is going to be full.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -331,8 +321,7 @@ spec:
|
|||||||
severity: info
|
severity: info
|
||||||
- alert: KubeQuotaFullyUsed
|
- alert: KubeQuotaFullyUsed
|
||||||
annotations:
|
annotations:
|
||||||
description: Namespace {{ $labels.namespace }} is using {{ $value | humanizePercentage
|
description: Namespace {{ $labels.namespace }} is using {{ $value | humanizePercentage }} of its {{ $labels.resource }} quota.
|
||||||
}} of its {{ $labels.resource }} quota.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubequotafullyused
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubequotafullyused
|
||||||
summary: Namespace quota is fully used.
|
summary: Namespace quota is fully used.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -345,8 +334,7 @@ spec:
|
|||||||
severity: info
|
severity: info
|
||||||
- alert: KubeQuotaExceeded
|
- alert: KubeQuotaExceeded
|
||||||
annotations:
|
annotations:
|
||||||
description: Namespace {{ $labels.namespace }} is using {{ $value | humanizePercentage
|
description: Namespace {{ $labels.namespace }} is using {{ $value | humanizePercentage }} of its {{ $labels.resource }} quota.
|
||||||
}} of its {{ $labels.resource }} quota.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubequotaexceeded
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubequotaexceeded
|
||||||
summary: Namespace quota has exceeded the limits.
|
summary: Namespace quota has exceeded the limits.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -359,9 +347,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: CPUThrottlingHigh
|
- alert: CPUThrottlingHigh
|
||||||
annotations:
|
annotations:
|
||||||
description: '{{ $value | humanizePercentage }} throttling of CPU in namespace
|
description: '{{ $value | humanizePercentage }} throttling of CPU in namespace {{ $labels.namespace }} for container {{ $labels.container }} in pod {{ $labels.pod }}.'
|
||||||
{{ $labels.namespace }} for container {{ $labels.container }} in pod {{
|
|
||||||
$labels.pod }}.'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/cputhrottlinghigh
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/cputhrottlinghigh
|
||||||
summary: Processes experience elevated CPU throttling.
|
summary: Processes experience elevated CPU throttling.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -376,9 +362,7 @@ spec:
|
|||||||
rules:
|
rules:
|
||||||
- alert: KubePersistentVolumeFillingUp
|
- alert: KubePersistentVolumeFillingUp
|
||||||
annotations:
|
annotations:
|
||||||
description: The PersistentVolume claimed by {{ $labels.persistentvolumeclaim
|
description: The PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} is only {{ $value | humanizePercentage }} free.
|
||||||
}} in Namespace {{ $labels.namespace }} is only {{ $value | humanizePercentage
|
|
||||||
}} free.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumefillingup
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumefillingup
|
||||||
summary: PersistentVolume is filling up.
|
summary: PersistentVolume is filling up.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -398,10 +382,7 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- alert: KubePersistentVolumeFillingUp
|
- alert: KubePersistentVolumeFillingUp
|
||||||
annotations:
|
annotations:
|
||||||
description: Based on recent sampling, the PersistentVolume claimed by {{
|
description: Based on recent sampling, the PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} is expected to fill up within four days. Currently {{ $value | humanizePercentage }} is available.
|
||||||
$labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} is
|
|
||||||
expected to fill up within four days. Currently {{ $value | humanizePercentage
|
|
||||||
}} is available.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumefillingup
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumefillingup
|
||||||
summary: PersistentVolume is filling up.
|
summary: PersistentVolume is filling up.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -423,9 +404,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubePersistentVolumeInodesFillingUp
|
- alert: KubePersistentVolumeInodesFillingUp
|
||||||
annotations:
|
annotations:
|
||||||
description: The PersistentVolume claimed by {{ $labels.persistentvolumeclaim
|
description: The PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} only has {{ $value | humanizePercentage }} free inodes.
|
||||||
}} in Namespace {{ $labels.namespace }} only has {{ $value | humanizePercentage
|
|
||||||
}} free inodes.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeinodesfillingup
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeinodesfillingup
|
||||||
summary: PersistentVolumeInodes are filling up.
|
summary: PersistentVolumeInodes are filling up.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -445,10 +424,7 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- alert: KubePersistentVolumeInodesFillingUp
|
- alert: KubePersistentVolumeInodesFillingUp
|
||||||
annotations:
|
annotations:
|
||||||
description: Based on recent sampling, the PersistentVolume claimed by {{
|
description: Based on recent sampling, the PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} is expected to run out of inodes within four days. Currently {{ $value | humanizePercentage }} of its inodes are free.
|
||||||
$labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} is
|
|
||||||
expected to run out of inodes within four days. Currently {{ $value | humanizePercentage
|
|
||||||
}} of its inodes are free.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeinodesfillingup
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeinodesfillingup
|
||||||
summary: PersistentVolumeInodes are filling up.
|
summary: PersistentVolumeInodes are filling up.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -470,8 +446,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubePersistentVolumeErrors
|
- alert: KubePersistentVolumeErrors
|
||||||
annotations:
|
annotations:
|
||||||
description: The persistent volume {{ $labels.persistentvolume }} has status
|
description: The persistent volume {{ $labels.persistentvolume }} has status {{ $labels.phase }}.
|
||||||
{{ $labels.phase }}.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeerrors
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeerrors
|
||||||
summary: PersistentVolume is having issues with provisioning.
|
summary: PersistentVolume is having issues with provisioning.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -483,8 +458,7 @@ spec:
|
|||||||
rules:
|
rules:
|
||||||
- alert: KubeVersionMismatch
|
- alert: KubeVersionMismatch
|
||||||
annotations:
|
annotations:
|
||||||
description: There are {{ $value }} different semantic versions of Kubernetes
|
description: There are {{ $value }} different semantic versions of Kubernetes components running.
|
||||||
components running.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeversionmismatch
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeversionmismatch
|
||||||
summary: Different semantic versions of Kubernetes components running.
|
summary: Different semantic versions of Kubernetes components running.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -494,14 +468,13 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeClientErrors
|
- alert: KubeClientErrors
|
||||||
annotations:
|
annotations:
|
||||||
description: Kubernetes API server client '{{ $labels.job }}/{{ $labels.instance
|
description: Kubernetes API server client '{{ $labels.job }}/{{ $labels.instance }}' is experiencing {{ $value | humanizePercentage }} errors.'
|
||||||
}}' is experiencing {{ $value | humanizePercentage }} errors.'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeclienterrors
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeclienterrors
|
||||||
summary: Kubernetes API server client is experiencing errors.
|
summary: Kubernetes API server client is experiencing errors.
|
||||||
expr: |
|
expr: |
|
||||||
(sum(rate(rest_client_requests_total{code=~"5.."}[5m])) by (cluster, instance, job, namespace)
|
(sum(rate(rest_client_requests_total{job="apiserver",code=~"5.."}[5m])) by (cluster, instance, job, namespace)
|
||||||
/
|
/
|
||||||
sum(rate(rest_client_requests_total[5m])) by (cluster, instance, job, namespace))
|
sum(rate(rest_client_requests_total{job="apiserver"}[5m])) by (cluster, instance, job, namespace))
|
||||||
> 0.01
|
> 0.01
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
@@ -568,8 +541,7 @@ spec:
|
|||||||
rules:
|
rules:
|
||||||
- alert: KubeClientCertificateExpiration
|
- alert: KubeClientCertificateExpiration
|
||||||
annotations:
|
annotations:
|
||||||
description: A client certificate used to authenticate to kubernetes apiserver
|
description: A client certificate used to authenticate to kubernetes apiserver is expiring in less than 7.0 days.
|
||||||
is expiring in less than 7.0 days.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeclientcertificateexpiration
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeclientcertificateexpiration
|
||||||
summary: Client certificate is about to expire.
|
summary: Client certificate is about to expire.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -579,8 +551,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeClientCertificateExpiration
|
- alert: KubeClientCertificateExpiration
|
||||||
annotations:
|
annotations:
|
||||||
description: A client certificate used to authenticate to kubernetes apiserver
|
description: A client certificate used to authenticate to kubernetes apiserver is expiring in less than 24.0 hours.
|
||||||
is expiring in less than 24.0 hours.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeclientcertificateexpiration
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeclientcertificateexpiration
|
||||||
summary: Client certificate is about to expire.
|
summary: Client certificate is about to expire.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -590,23 +561,20 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- alert: KubeAggregatedAPIErrors
|
- alert: KubeAggregatedAPIErrors
|
||||||
annotations:
|
annotations:
|
||||||
description: Kubernetes aggregated API {{ $labels.name }}/{{ $labels.namespace
|
description: Kubernetes aggregated API {{ $labels.name }}/{{ $labels.namespace }} has reported errors. It has appeared unavailable {{ $value | humanize }} times averaged over the past 10m.
|
||||||
}} has reported errors. It has appeared unavailable {{ $value | humanize
|
|
||||||
}} times averaged over the past 10m.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeaggregatedapierrors
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeaggregatedapierrors
|
||||||
summary: Kubernetes aggregated API has reported errors.
|
summary: Kubernetes aggregated API has reported errors.
|
||||||
expr: |
|
expr: |
|
||||||
sum by(name, namespace, cluster)(increase(aggregator_unavailable_apiservice_total[10m])) > 4
|
sum by(name, namespace, cluster)(increase(aggregator_unavailable_apiservice_total{job="apiserver"}[10m])) > 4
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeAggregatedAPIDown
|
- alert: KubeAggregatedAPIDown
|
||||||
annotations:
|
annotations:
|
||||||
description: Kubernetes aggregated API {{ $labels.name }}/{{ $labels.namespace
|
description: Kubernetes aggregated API {{ $labels.name }}/{{ $labels.namespace }} has been only {{ $value | humanize }}% available over the last 10m.
|
||||||
}} has been only {{ $value | humanize }}% available over the last 10m.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeaggregatedapidown
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeaggregatedapidown
|
||||||
summary: Kubernetes aggregated API is down.
|
summary: Kubernetes aggregated API is down.
|
||||||
expr: |
|
expr: |
|
||||||
(1 - max by(name, namespace, cluster)(avg_over_time(aggregator_unavailable_apiservice[10m]))) * 100 < 85
|
(1 - max by(name, namespace, cluster)(avg_over_time(aggregator_unavailable_apiservice{job="apiserver"}[10m]))) * 100 < 85
|
||||||
for: 5m
|
for: 5m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
@@ -622,11 +590,9 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- alert: KubeAPITerminatedRequests
|
- alert: KubeAPITerminatedRequests
|
||||||
annotations:
|
annotations:
|
||||||
description: The kubernetes apiserver has terminated {{ $value | humanizePercentage
|
description: The kubernetes apiserver has terminated {{ $value | humanizePercentage }} of its incoming requests.
|
||||||
}} of its incoming requests.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapiterminatedrequests
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapiterminatedrequests
|
||||||
summary: The kubernetes apiserver has terminated {{ $value | humanizePercentage
|
summary: The kubernetes apiserver has terminated {{ $value | humanizePercentage }} of its incoming requests.
|
||||||
}} of its incoming requests.
|
|
||||||
expr: |
|
expr: |
|
||||||
sum(rate(apiserver_request_terminations_total{job="apiserver"}[10m])) / ( sum(rate(apiserver_request_total{job="apiserver"}[10m])) + sum(rate(apiserver_request_terminations_total{job="apiserver"}[10m])) ) > 0.20
|
sum(rate(apiserver_request_terminations_total{job="apiserver"}[10m])) / ( sum(rate(apiserver_request_total{job="apiserver"}[10m])) + sum(rate(apiserver_request_terminations_total{job="apiserver"}[10m])) ) > 0.20
|
||||||
for: 5m
|
for: 5m
|
||||||
@@ -646,8 +612,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeNodeUnreachable
|
- alert: KubeNodeUnreachable
|
||||||
annotations:
|
annotations:
|
||||||
description: '{{ $labels.node }} is unreachable and some workloads may be
|
description: '{{ $labels.node }} is unreachable and some workloads may be rescheduled.'
|
||||||
rescheduled.'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodeunreachable
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodeunreachable
|
||||||
summary: Node is unreachable.
|
summary: Node is unreachable.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -657,8 +622,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeletTooManyPods
|
- alert: KubeletTooManyPods
|
||||||
annotations:
|
annotations:
|
||||||
description: Kubelet '{{ $labels.node }}' is running at {{ $value | humanizePercentage
|
description: Kubelet '{{ $labels.node }}' is running at {{ $value | humanizePercentage }} of its Pod capacity.
|
||||||
}} of its Pod capacity.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubelettoomanypods
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubelettoomanypods
|
||||||
summary: Kubelet is running at capacity.
|
summary: Kubelet is running at capacity.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -674,19 +638,17 @@ spec:
|
|||||||
severity: info
|
severity: info
|
||||||
- alert: KubeNodeReadinessFlapping
|
- alert: KubeNodeReadinessFlapping
|
||||||
annotations:
|
annotations:
|
||||||
description: The readiness status of node {{ $labels.node }} has changed {{
|
description: The readiness status of node {{ $labels.node }} has changed {{ $value }} times in the last 15 minutes.
|
||||||
$value }} times in the last 15 minutes.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodereadinessflapping
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodereadinessflapping
|
||||||
summary: Node readiness status is flapping.
|
summary: Node readiness status is flapping.
|
||||||
expr: |
|
expr: |
|
||||||
sum(changes(kube_node_status_condition{status="true",condition="Ready"}[15m])) by (cluster, node) > 2
|
sum(changes(kube_node_status_condition{job="kube-state-metrics",status="true",condition="Ready"}[15m])) by (cluster, node) > 2
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeletPlegDurationHigh
|
- alert: KubeletPlegDurationHigh
|
||||||
annotations:
|
annotations:
|
||||||
description: The Kubelet Pod Lifecycle Event Generator has a 99th percentile
|
description: The Kubelet Pod Lifecycle Event Generator has a 99th percentile duration of {{ $value }} seconds on node {{ $labels.node }}.
|
||||||
duration of {{ $value }} seconds on node {{ $labels.node }}.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletplegdurationhigh
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletplegdurationhigh
|
||||||
summary: Kubelet Pod Lifecycle Event Generator is taking too long to relist.
|
summary: Kubelet Pod Lifecycle Event Generator is taking too long to relist.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -696,8 +658,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeletPodStartUpLatencyHigh
|
- alert: KubeletPodStartUpLatencyHigh
|
||||||
annotations:
|
annotations:
|
||||||
description: Kubelet Pod startup 99th percentile latency is {{ $value }} seconds
|
description: Kubelet Pod startup 99th percentile latency is {{ $value }} seconds on node {{ $labels.node }}.
|
||||||
on node {{ $labels.node }}.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletpodstartuplatencyhigh
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletpodstartuplatencyhigh
|
||||||
summary: Kubelet Pod startup latency is too high.
|
summary: Kubelet Pod startup latency is too high.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -707,8 +668,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeletClientCertificateExpiration
|
- alert: KubeletClientCertificateExpiration
|
||||||
annotations:
|
annotations:
|
||||||
description: Client certificate for Kubelet on node {{ $labels.node }} expires
|
description: Client certificate for Kubelet on node {{ $labels.node }} expires in {{ $value | humanizeDuration }}.
|
||||||
in {{ $value | humanizeDuration }}.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletclientcertificateexpiration
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletclientcertificateexpiration
|
||||||
summary: Kubelet client certificate is about to expire.
|
summary: Kubelet client certificate is about to expire.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -717,8 +677,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeletClientCertificateExpiration
|
- alert: KubeletClientCertificateExpiration
|
||||||
annotations:
|
annotations:
|
||||||
description: Client certificate for Kubelet on node {{ $labels.node }} expires
|
description: Client certificate for Kubelet on node {{ $labels.node }} expires in {{ $value | humanizeDuration }}.
|
||||||
in {{ $value | humanizeDuration }}.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletclientcertificateexpiration
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletclientcertificateexpiration
|
||||||
summary: Kubelet client certificate is about to expire.
|
summary: Kubelet client certificate is about to expire.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -727,8 +686,7 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- alert: KubeletServerCertificateExpiration
|
- alert: KubeletServerCertificateExpiration
|
||||||
annotations:
|
annotations:
|
||||||
description: Server certificate for Kubelet on node {{ $labels.node }} expires
|
description: Server certificate for Kubelet on node {{ $labels.node }} expires in {{ $value | humanizeDuration }}.
|
||||||
in {{ $value | humanizeDuration }}.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletservercertificateexpiration
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletservercertificateexpiration
|
||||||
summary: Kubelet server certificate is about to expire.
|
summary: Kubelet server certificate is about to expire.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -737,8 +695,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeletServerCertificateExpiration
|
- alert: KubeletServerCertificateExpiration
|
||||||
annotations:
|
annotations:
|
||||||
description: Server certificate for Kubelet on node {{ $labels.node }} expires
|
description: Server certificate for Kubelet on node {{ $labels.node }} expires in {{ $value | humanizeDuration }}.
|
||||||
in {{ $value | humanizeDuration }}.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletservercertificateexpiration
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletservercertificateexpiration
|
||||||
summary: Kubelet server certificate is about to expire.
|
summary: Kubelet server certificate is about to expire.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -747,8 +704,7 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- alert: KubeletClientCertificateRenewalErrors
|
- alert: KubeletClientCertificateRenewalErrors
|
||||||
annotations:
|
annotations:
|
||||||
description: Kubelet on node {{ $labels.node }} has failed to renew its client
|
description: Kubelet on node {{ $labels.node }} has failed to renew its client certificate ({{ $value | humanize }} errors in the last 5 minutes).
|
||||||
certificate ({{ $value | humanize }} errors in the last 5 minutes).
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletclientcertificaterenewalerrors
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletclientcertificaterenewalerrors
|
||||||
summary: Kubelet has failed to renew its client certificate.
|
summary: Kubelet has failed to renew its client certificate.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -758,8 +714,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeletServerCertificateRenewalErrors
|
- alert: KubeletServerCertificateRenewalErrors
|
||||||
annotations:
|
annotations:
|
||||||
description: Kubelet on node {{ $labels.node }} has failed to renew its server
|
description: Kubelet on node {{ $labels.node }} has failed to renew its server certificate ({{ $value | humanize }} errors in the last 5 minutes).
|
||||||
certificate ({{ $value | humanize }} errors in the last 5 minutes).
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletservercertificaterenewalerrors
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletservercertificaterenewalerrors
|
||||||
summary: Kubelet has failed to renew its server certificate.
|
summary: Kubelet has failed to renew its server certificate.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -793,8 +748,7 @@ spec:
|
|||||||
rules:
|
rules:
|
||||||
- alert: KubeControllerManagerDown
|
- alert: KubeControllerManagerDown
|
||||||
annotations:
|
annotations:
|
||||||
description: KubeControllerManager has disappeared from Prometheus target
|
description: KubeControllerManager has disappeared from Prometheus target discovery.
|
||||||
discovery.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecontrollermanagerdown
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecontrollermanagerdown
|
||||||
summary: Target disappeared from Prometheus target discovery.
|
summary: Target disappeared from Prometheus target discovery.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -1136,7 +1090,7 @@ spec:
|
|||||||
verb: write
|
verb: write
|
||||||
record: code:apiserver_request_total:increase30d
|
record: code:apiserver_request_total:increase30d
|
||||||
- expr: |
|
- expr: |
|
||||||
sum by (cluster, verb, scope) (increase(apiserver_request_slo_duration_seconds_count[1h]))
|
sum by (cluster, verb, scope) (increase(apiserver_request_slo_duration_seconds_count{job="apiserver"}[1h]))
|
||||||
record: cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase1h
|
record: cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase1h
|
||||||
- expr: |
|
- expr: |
|
||||||
sum by (cluster, verb, scope) (avg_over_time(cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase1h[30d]) * 24 * 30)
|
sum by (cluster, verb, scope) (avg_over_time(cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase1h[30d]) * 24 * 30)
|
||||||
@@ -1254,26 +1208,26 @@ spec:
|
|||||||
record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate
|
record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate
|
||||||
- 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 (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,
|
||||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
max by(cluster, namespace, pod, node) (kube_pod_info{node!=""})
|
||||||
)
|
)
|
||||||
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 (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,
|
||||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
max by(cluster, namespace, pod, node) (kube_pod_info{node!=""})
|
||||||
)
|
)
|
||||||
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 (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,
|
||||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
max by(cluster, namespace, pod, node) (kube_pod_info{node!=""})
|
||||||
)
|
)
|
||||||
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 (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,
|
||||||
max by(namespace, pod, node) (kube_pod_info{node!=""})
|
max by(cluster, namespace, pod, node) (kube_pod_info{node!=""})
|
||||||
)
|
)
|
||||||
record: node_namespace_pod_container:container_memory_swap
|
record: node_namespace_pod_container:container_memory_swap
|
||||||
- expr: |
|
- expr: |
|
||||||
@@ -1479,17 +1433,17 @@ spec:
|
|||||||
- name: kubelet.rules
|
- name: kubelet.rules
|
||||||
rules:
|
rules:
|
||||||
- expr: |
|
- expr: |
|
||||||
histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_duration_seconds_bucket[5m])) by (cluster, instance, le) * on(cluster, instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"})
|
histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job="kubelet", metrics_path="/metrics"}[5m])) by (cluster, instance, le) * on(cluster, instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"})
|
||||||
labels:
|
labels:
|
||||||
quantile: "0.99"
|
quantile: "0.99"
|
||||||
record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile
|
record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile
|
||||||
- expr: |
|
- expr: |
|
||||||
histogram_quantile(0.9, sum(rate(kubelet_pleg_relist_duration_seconds_bucket[5m])) by (cluster, instance, le) * on(cluster, instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"})
|
histogram_quantile(0.9, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job="kubelet", metrics_path="/metrics"}[5m])) by (cluster, instance, le) * on(cluster, instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"})
|
||||||
labels:
|
labels:
|
||||||
quantile: "0.9"
|
quantile: "0.9"
|
||||||
record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile
|
record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile
|
||||||
- expr: |
|
- expr: |
|
||||||
histogram_quantile(0.5, sum(rate(kubelet_pleg_relist_duration_seconds_bucket[5m])) by (cluster, instance, le) * on(cluster, instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"})
|
histogram_quantile(0.5, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job="kubelet", metrics_path="/metrics"}[5m])) by (cluster, instance, le) * on(cluster, instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"})
|
||||||
labels:
|
labels:
|
||||||
quantile: "0.5"
|
quantile: "0.5"
|
||||||
record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile
|
record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile
|
||||||
|
|||||||
@@ -46,7 +46,8 @@ spec:
|
|||||||
- __name__
|
- __name__
|
||||||
port: https-metrics
|
port: https-metrics
|
||||||
relabelings:
|
relabelings:
|
||||||
- sourceLabels:
|
- action: replace
|
||||||
|
sourceLabels:
|
||||||
- __metrics_path__
|
- __metrics_path__
|
||||||
targetLabel: metrics_path
|
targetLabel: metrics_path
|
||||||
scheme: https
|
scheme: https
|
||||||
@@ -75,7 +76,8 @@ spec:
|
|||||||
path: /metrics/cadvisor
|
path: /metrics/cadvisor
|
||||||
port: https-metrics
|
port: https-metrics
|
||||||
relabelings:
|
relabelings:
|
||||||
- sourceLabels:
|
- action: replace
|
||||||
|
sourceLabels:
|
||||||
- __metrics_path__
|
- __metrics_path__
|
||||||
targetLabel: metrics_path
|
targetLabel: metrics_path
|
||||||
scheme: https
|
scheme: https
|
||||||
@@ -87,7 +89,8 @@ spec:
|
|||||||
path: /metrics/probes
|
path: /metrics/probes
|
||||||
port: https-metrics
|
port: https-metrics
|
||||||
relabelings:
|
relabelings:
|
||||||
- sourceLabels:
|
- action: replace
|
||||||
|
sourceLabels:
|
||||||
- __metrics_path__
|
- __metrics_path__
|
||||||
targetLabel: metrics_path
|
targetLabel: metrics_path
|
||||||
scheme: https
|
scheme: https
|
||||||
|
|||||||
@@ -5,9 +5,8 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 1.5.0
|
app.kubernetes.io/version: 1.6.1
|
||||||
name: node-exporter
|
name: node-exporter
|
||||||
namespace: monitoring
|
|
||||||
rules:
|
rules:
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- authentication.k8s.io
|
- authentication.k8s.io
|
||||||
|
|||||||
@@ -5,9 +5,8 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 1.5.0
|
app.kubernetes.io/version: 1.6.1
|
||||||
name: node-exporter
|
name: node-exporter
|
||||||
namespace: monitoring
|
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
kind: ClusterRole
|
kind: ClusterRole
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 1.5.0
|
app.kubernetes.io/version: 1.6.1
|
||||||
name: node-exporter
|
name: node-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
@@ -22,7 +22,7 @@ spec:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 1.5.0
|
app.kubernetes.io/version: 1.6.1
|
||||||
spec:
|
spec:
|
||||||
automountServiceAccountToken: true
|
automountServiceAccountToken: true
|
||||||
containers:
|
containers:
|
||||||
@@ -33,10 +33,11 @@ spec:
|
|||||||
- --path.udev.data=/host/root/run/udev/data
|
- --path.udev.data=/host/root/run/udev/data
|
||||||
- --no-collector.wifi
|
- --no-collector.wifi
|
||||||
- --no-collector.hwmon
|
- --no-collector.hwmon
|
||||||
|
- --no-collector.btrfs
|
||||||
- --collector.filesystem.mount-points-exclude=^/(dev|proc|sys|run/k3s/containerd/.+|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)
|
- --collector.filesystem.mount-points-exclude=^/(dev|proc|sys|run/k3s/containerd/.+|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)
|
||||||
- --collector.netclass.ignored-devices=^(veth.*|[a-f0-9]{15})$
|
- --collector.netclass.ignored-devices=^(veth.*|[a-f0-9]{15})$
|
||||||
- --collector.netdev.device-exclude=^(veth.*|[a-f0-9]{15})$
|
- --collector.netdev.device-exclude=^(veth.*|[a-f0-9]{15})$
|
||||||
image: quay.io/prometheus/node-exporter:v1.5.0
|
image: quay.io/prometheus/node-exporter:v1.6.1
|
||||||
name: node-exporter
|
name: node-exporter
|
||||||
resources:
|
resources:
|
||||||
limits:
|
limits:
|
||||||
@@ -72,7 +73,7 @@ spec:
|
|||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: status.podIP
|
fieldPath: status.podIP
|
||||||
image: quay.io/brancz/kube-rbac-proxy:v0.14.0
|
image: quay.io/brancz/kube-rbac-proxy:v0.14.2
|
||||||
name: kube-rbac-proxy
|
name: kube-rbac-proxy
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 9100
|
- containerPort: 9100
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 1.5.0
|
app.kubernetes.io/version: 1.6.1
|
||||||
name: node-exporter
|
name: node-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 1.5.0
|
app.kubernetes.io/version: 1.6.1
|
||||||
prometheus: k8s
|
prometheus: k8s
|
||||||
role: alert-rules
|
role: alert-rules
|
||||||
name: node-exporter-rules
|
name: node-exporter-rules
|
||||||
@@ -16,155 +16,141 @@ spec:
|
|||||||
rules:
|
rules:
|
||||||
- alert: NodeFilesystemSpaceFillingUp
|
- alert: NodeFilesystemSpaceFillingUp
|
||||||
annotations:
|
annotations:
|
||||||
description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}
|
description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available space left and is filling up.
|
||||||
has only {{ printf "%.2f" $value }}% available space left and is filling
|
|
||||||
up.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemspacefillingup
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemspacefillingup
|
||||||
summary: Filesystem is predicted to run out of space within the next 24 hours.
|
summary: Filesystem is predicted to run out of space within the next 24 hours.
|
||||||
expr: |
|
expr: |
|
||||||
(
|
(
|
||||||
node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 15
|
node_filesystem_avail_bytes{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 15
|
||||||
and
|
and
|
||||||
predict_linear(node_filesystem_avail_bytes{job="node-exporter",fstype!=""}[6h], 24*60*60) < 0
|
predict_linear(node_filesystem_avail_bytes{job="node-exporter",fstype!="",mountpoint!=""}[6h], 24*60*60) < 0
|
||||||
and
|
and
|
||||||
node_filesystem_readonly{job="node-exporter",fstype!=""} == 0
|
node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0
|
||||||
)
|
)
|
||||||
for: 1h
|
for: 1h
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: NodeFilesystemSpaceFillingUp
|
- alert: NodeFilesystemSpaceFillingUp
|
||||||
annotations:
|
annotations:
|
||||||
description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}
|
description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available space left and is filling up fast.
|
||||||
has only {{ printf "%.2f" $value }}% available space left and is filling
|
|
||||||
up fast.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemspacefillingup
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemspacefillingup
|
||||||
summary: Filesystem is predicted to run out of space within the next 4 hours.
|
summary: Filesystem is predicted to run out of space within the next 4 hours.
|
||||||
expr: |
|
expr: |
|
||||||
(
|
(
|
||||||
node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 10
|
node_filesystem_avail_bytes{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 10
|
||||||
and
|
and
|
||||||
predict_linear(node_filesystem_avail_bytes{job="node-exporter",fstype!=""}[6h], 4*60*60) < 0
|
predict_linear(node_filesystem_avail_bytes{job="node-exporter",fstype!="",mountpoint!=""}[6h], 4*60*60) < 0
|
||||||
and
|
and
|
||||||
node_filesystem_readonly{job="node-exporter",fstype!=""} == 0
|
node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0
|
||||||
)
|
)
|
||||||
for: 1h
|
for: 1h
|
||||||
labels:
|
labels:
|
||||||
severity: critical
|
severity: critical
|
||||||
- alert: NodeFilesystemAlmostOutOfSpace
|
- alert: NodeFilesystemAlmostOutOfSpace
|
||||||
annotations:
|
annotations:
|
||||||
description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}
|
description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available space left.
|
||||||
has only {{ printf "%.2f" $value }}% available space left.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutofspace
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutofspace
|
||||||
summary: Filesystem has less than 5% space left.
|
summary: Filesystem has less than 5% space left.
|
||||||
expr: |
|
expr: |
|
||||||
(
|
(
|
||||||
node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 5
|
node_filesystem_avail_bytes{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 5
|
||||||
and
|
and
|
||||||
node_filesystem_readonly{job="node-exporter",fstype!=""} == 0
|
node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0
|
||||||
)
|
)
|
||||||
for: 30m
|
for: 30m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: NodeFilesystemAlmostOutOfSpace
|
- alert: NodeFilesystemAlmostOutOfSpace
|
||||||
annotations:
|
annotations:
|
||||||
description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}
|
description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available space left.
|
||||||
has only {{ printf "%.2f" $value }}% available space left.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutofspace
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutofspace
|
||||||
summary: Filesystem has less than 3% space left.
|
summary: Filesystem has less than 3% space left.
|
||||||
expr: |
|
expr: |
|
||||||
(
|
(
|
||||||
node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 3
|
node_filesystem_avail_bytes{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 3
|
||||||
and
|
and
|
||||||
node_filesystem_readonly{job="node-exporter",fstype!=""} == 0
|
node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0
|
||||||
)
|
)
|
||||||
for: 30m
|
for: 30m
|
||||||
labels:
|
labels:
|
||||||
severity: critical
|
severity: critical
|
||||||
- alert: NodeFilesystemFilesFillingUp
|
- alert: NodeFilesystemFilesFillingUp
|
||||||
annotations:
|
annotations:
|
||||||
description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}
|
description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available inodes left and is filling up.
|
||||||
has only {{ printf "%.2f" $value }}% available inodes left and is filling
|
|
||||||
up.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemfilesfillingup
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemfilesfillingup
|
||||||
summary: Filesystem is predicted to run out of inodes within the next 24 hours.
|
summary: Filesystem is predicted to run out of inodes within the next 24 hours.
|
||||||
expr: |
|
expr: |
|
||||||
(
|
(
|
||||||
node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 40
|
node_filesystem_files_free{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_files{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 40
|
||||||
and
|
and
|
||||||
predict_linear(node_filesystem_files_free{job="node-exporter",fstype!=""}[6h], 24*60*60) < 0
|
predict_linear(node_filesystem_files_free{job="node-exporter",fstype!="",mountpoint!=""}[6h], 24*60*60) < 0
|
||||||
and
|
and
|
||||||
node_filesystem_readonly{job="node-exporter",fstype!=""} == 0
|
node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0
|
||||||
)
|
)
|
||||||
for: 1h
|
for: 1h
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: NodeFilesystemFilesFillingUp
|
- alert: NodeFilesystemFilesFillingUp
|
||||||
annotations:
|
annotations:
|
||||||
description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}
|
description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available inodes left and is filling up fast.
|
||||||
has only {{ printf "%.2f" $value }}% available inodes left and is filling
|
|
||||||
up fast.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemfilesfillingup
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemfilesfillingup
|
||||||
summary: Filesystem is predicted to run out of inodes within the next 4 hours.
|
summary: Filesystem is predicted to run out of inodes within the next 4 hours.
|
||||||
expr: |
|
expr: |
|
||||||
(
|
(
|
||||||
node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 20
|
node_filesystem_files_free{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_files{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 20
|
||||||
and
|
and
|
||||||
predict_linear(node_filesystem_files_free{job="node-exporter",fstype!=""}[6h], 4*60*60) < 0
|
predict_linear(node_filesystem_files_free{job="node-exporter",fstype!="",mountpoint!=""}[6h], 4*60*60) < 0
|
||||||
and
|
and
|
||||||
node_filesystem_readonly{job="node-exporter",fstype!=""} == 0
|
node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0
|
||||||
)
|
)
|
||||||
for: 1h
|
for: 1h
|
||||||
labels:
|
labels:
|
||||||
severity: critical
|
severity: critical
|
||||||
- alert: NodeFilesystemAlmostOutOfFiles
|
- alert: NodeFilesystemAlmostOutOfFiles
|
||||||
annotations:
|
annotations:
|
||||||
description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}
|
description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available inodes left.
|
||||||
has only {{ printf "%.2f" $value }}% available inodes left.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutoffiles
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutoffiles
|
||||||
summary: Filesystem has less than 5% inodes left.
|
summary: Filesystem has less than 5% inodes left.
|
||||||
expr: |
|
expr: |
|
||||||
(
|
(
|
||||||
node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 5
|
node_filesystem_files_free{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_files{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 5
|
||||||
and
|
and
|
||||||
node_filesystem_readonly{job="node-exporter",fstype!=""} == 0
|
node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0
|
||||||
)
|
)
|
||||||
for: 1h
|
for: 1h
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: NodeFilesystemAlmostOutOfFiles
|
- alert: NodeFilesystemAlmostOutOfFiles
|
||||||
annotations:
|
annotations:
|
||||||
description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}
|
description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available inodes left.
|
||||||
has only {{ printf "%.2f" $value }}% available inodes left.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutoffiles
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutoffiles
|
||||||
summary: Filesystem has less than 3% inodes left.
|
summary: Filesystem has less than 3% inodes left.
|
||||||
expr: |
|
expr: |
|
||||||
(
|
(
|
||||||
node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 3
|
node_filesystem_files_free{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_files{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 3
|
||||||
and
|
and
|
||||||
node_filesystem_readonly{job="node-exporter",fstype!=""} == 0
|
node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0
|
||||||
)
|
)
|
||||||
for: 1h
|
for: 1h
|
||||||
labels:
|
labels:
|
||||||
severity: critical
|
severity: critical
|
||||||
- alert: NodeNetworkReceiveErrs
|
- alert: NodeNetworkReceiveErrs
|
||||||
annotations:
|
annotations:
|
||||||
description: '{{ $labels.instance }} interface {{ $labels.device }} has encountered
|
description: '{{ $labels.instance }} interface {{ $labels.device }} has encountered {{ printf "%.0f" $value }} receive errors in the last two minutes.'
|
||||||
{{ printf "%.0f" $value }} receive errors in the last two minutes.'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodenetworkreceiveerrs
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodenetworkreceiveerrs
|
||||||
summary: Network interface is reporting many receive errors.
|
summary: Network interface is reporting many receive errors.
|
||||||
expr: |
|
expr: |
|
||||||
rate(node_network_receive_errs_total[2m]) / rate(node_network_receive_packets_total[2m]) > 0.01
|
rate(node_network_receive_errs_total{job="node-exporter"}[2m]) / rate(node_network_receive_packets_total{job="node-exporter"}[2m]) > 0.01
|
||||||
for: 1h
|
for: 1h
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: NodeNetworkTransmitErrs
|
- alert: NodeNetworkTransmitErrs
|
||||||
annotations:
|
annotations:
|
||||||
description: '{{ $labels.instance }} interface {{ $labels.device }} has encountered
|
description: '{{ $labels.instance }} interface {{ $labels.device }} has encountered {{ printf "%.0f" $value }} transmit errors in the last two minutes.'
|
||||||
{{ printf "%.0f" $value }} transmit errors in the last two minutes.'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodenetworktransmiterrs
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodenetworktransmiterrs
|
||||||
summary: Network interface is reporting many transmit errors.
|
summary: Network interface is reporting many transmit errors.
|
||||||
expr: |
|
expr: |
|
||||||
rate(node_network_transmit_errs_total[2m]) / rate(node_network_transmit_packets_total[2m]) > 0.01
|
rate(node_network_transmit_errs_total{job="node-exporter"}[2m]) / rate(node_network_transmit_packets_total{job="node-exporter"}[2m]) > 0.01
|
||||||
for: 1h
|
for: 1h
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
@@ -174,12 +160,12 @@ spec:
|
|||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodehighnumberconntrackentriesused
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodehighnumberconntrackentriesused
|
||||||
summary: Number of conntrack are getting close to the limit.
|
summary: Number of conntrack are getting close to the limit.
|
||||||
expr: |
|
expr: |
|
||||||
(node_nf_conntrack_entries / node_nf_conntrack_entries_limit) > 0.75
|
(node_nf_conntrack_entries{job="node-exporter"} / node_nf_conntrack_entries_limit) > 0.75
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: NodeTextFileCollectorScrapeError
|
- alert: NodeTextFileCollectorScrapeError
|
||||||
annotations:
|
annotations:
|
||||||
description: Node Exporter text file collector failed to scrape.
|
description: Node Exporter text file collector on {{ $labels.instance }} failed to scrape.
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodetextfilecollectorscrapeerror
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodetextfilecollectorscrapeerror
|
||||||
summary: Node Exporter text file collector failed to scrape.
|
summary: Node Exporter text file collector failed to scrape.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -188,8 +174,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: NodeClockSkewDetected
|
- alert: NodeClockSkewDetected
|
||||||
annotations:
|
annotations:
|
||||||
description: Clock on {{ $labels.instance }} is out of sync by more than 300s.
|
description: Clock at {{ $labels.instance }} is out of sync by more than 0.05s. Ensure NTP is configured correctly on this host.
|
||||||
Ensure NTP is configured correctly on this host.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodeclockskewdetected
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodeclockskewdetected
|
||||||
summary: Clock skew detected.
|
summary: Clock skew detected.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -209,8 +194,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: NodeClockNotSynchronising
|
- alert: NodeClockNotSynchronising
|
||||||
annotations:
|
annotations:
|
||||||
description: Clock on {{ $labels.instance }} is not synchronising. Ensure
|
description: Clock at {{ $labels.instance }} is not synchronising. Ensure NTP is configured on this host.
|
||||||
NTP is configured on this host.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodeclocknotsynchronising
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodeclocknotsynchronising
|
||||||
summary: Clock not synchronising.
|
summary: Clock not synchronising.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -222,11 +206,9 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: NodeRAIDDegraded
|
- alert: NodeRAIDDegraded
|
||||||
annotations:
|
annotations:
|
||||||
description: RAID array '{{ $labels.device }}' on {{ $labels.instance }} is
|
description: RAID array '{{ $labels.device }}' at {{ $labels.instance }} is in degraded state due to one or more disks failures. Number of spare drives is insufficient to fix issue automatically.
|
||||||
in degraded state due to one or more disks failures. Number of spare drives
|
|
||||||
is insufficient to fix issue automatically.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/noderaiddegraded
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/noderaiddegraded
|
||||||
summary: RAID Array is degraded
|
summary: RAID Array is degraded.
|
||||||
expr: |
|
expr: |
|
||||||
node_md_disks_required{job="node-exporter",device=~"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)"} - ignoring (state) (node_md_disks{state="active",job="node-exporter",device=~"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)"}) > 0
|
node_md_disks_required{job="node-exporter",device=~"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)"} - ignoring (state) (node_md_disks{state="active",job="node-exporter",device=~"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)"}) > 0
|
||||||
for: 15m
|
for: 15m
|
||||||
@@ -234,18 +216,16 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- alert: NodeRAIDDiskFailure
|
- alert: NodeRAIDDiskFailure
|
||||||
annotations:
|
annotations:
|
||||||
description: At least one device in RAID array on {{ $labels.instance }} failed.
|
description: At least one device in RAID array at {{ $labels.instance }} failed. Array '{{ $labels.device }}' needs attention and possibly a disk swap.
|
||||||
Array '{{ $labels.device }}' needs attention and possibly a disk swap.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/noderaiddiskfailure
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/noderaiddiskfailure
|
||||||
summary: Failed device in RAID array
|
summary: Failed device in RAID array.
|
||||||
expr: |
|
expr: |
|
||||||
node_md_disks{state="failed",job="node-exporter",device=~"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)"} > 0
|
node_md_disks{state="failed",job="node-exporter",device=~"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)"} > 0
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: NodeFileDescriptorLimit
|
- alert: NodeFileDescriptorLimit
|
||||||
annotations:
|
annotations:
|
||||||
description: File descriptors limit at {{ $labels.instance }} is currently
|
description: File descriptors limit at {{ $labels.instance }} is currently at {{ printf "%.2f" $value }}%.
|
||||||
at {{ printf "%.2f" $value }}%.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefiledescriptorlimit
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefiledescriptorlimit
|
||||||
summary: Kernel is predicted to exhaust file descriptors limit soon.
|
summary: Kernel is predicted to exhaust file descriptors limit soon.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -257,8 +237,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: NodeFileDescriptorLimit
|
- alert: NodeFileDescriptorLimit
|
||||||
annotations:
|
annotations:
|
||||||
description: File descriptors limit at {{ $labels.instance }} is currently
|
description: File descriptors limit at {{ $labels.instance }} is currently at {{ printf "%.2f" $value }}%.
|
||||||
at {{ printf "%.2f" $value }}%.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefiledescriptorlimit
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefiledescriptorlimit
|
||||||
summary: Kernel is predicted to exhaust file descriptors limit soon.
|
summary: Kernel is predicted to exhaust file descriptors limit soon.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -268,6 +247,75 @@ spec:
|
|||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: critical
|
severity: critical
|
||||||
|
- alert: NodeCPUHighUsage
|
||||||
|
annotations:
|
||||||
|
description: |
|
||||||
|
CPU usage at {{ $labels.instance }} has been above 90% for the last 15 minutes, is currently at {{ printf "%.2f" $value }}%.
|
||||||
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodecpuhighusage
|
||||||
|
summary: High CPU usage.
|
||||||
|
expr: |
|
||||||
|
sum without(mode) (avg without (cpu) (rate(node_cpu_seconds_total{job="node-exporter", mode!="idle"}[2m]))) * 100 > 90
|
||||||
|
for: 15m
|
||||||
|
labels:
|
||||||
|
severity: info
|
||||||
|
- alert: NodeSystemSaturation
|
||||||
|
annotations:
|
||||||
|
description: |
|
||||||
|
System load per core at {{ $labels.instance }} has been above 2 for the last 15 minutes, is currently at {{ printf "%.2f" $value }}.
|
||||||
|
This might indicate this instance resources saturation and can cause it becoming unresponsive.
|
||||||
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodesystemsaturation
|
||||||
|
summary: System saturated, load per core is very high.
|
||||||
|
expr: |
|
||||||
|
node_load1{job="node-exporter"}
|
||||||
|
/ count without (cpu, mode) (node_cpu_seconds_total{job="node-exporter", mode="idle"}) > 2
|
||||||
|
for: 15m
|
||||||
|
labels:
|
||||||
|
severity: warning
|
||||||
|
- alert: NodeMemoryMajorPagesFaults
|
||||||
|
annotations:
|
||||||
|
description: |
|
||||||
|
Memory major pages are occurring at very high rate at {{ $labels.instance }}, 500 major page faults per second for the last 15 minutes, is currently at {{ printf "%.2f" $value }}.
|
||||||
|
Please check that there is enough memory available at this instance.
|
||||||
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodememorymajorpagesfaults
|
||||||
|
summary: Memory major page faults are occurring at very high rate.
|
||||||
|
expr: |
|
||||||
|
rate(node_vmstat_pgmajfault{job="node-exporter"}[5m]) > 500
|
||||||
|
for: 15m
|
||||||
|
labels:
|
||||||
|
severity: warning
|
||||||
|
- alert: NodeMemoryHighUtilization
|
||||||
|
annotations:
|
||||||
|
description: |
|
||||||
|
Memory is filling up at {{ $labels.instance }}, has been above 90% for the last 15 minutes, is currently at {{ printf "%.2f" $value }}%.
|
||||||
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodememoryhighutilization
|
||||||
|
summary: Host is running out of memory.
|
||||||
|
expr: |
|
||||||
|
100 - (node_memory_MemAvailable_bytes{job="node-exporter"} / node_memory_MemTotal_bytes{job="node-exporter"} * 100) > 90
|
||||||
|
for: 15m
|
||||||
|
labels:
|
||||||
|
severity: warning
|
||||||
|
- alert: NodeDiskIOSaturation
|
||||||
|
annotations:
|
||||||
|
description: |
|
||||||
|
Disk IO queue (aqu-sq) is high on {{ $labels.device }} at {{ $labels.instance }}, has been above 10 for the last 15 minutes, is currently at {{ printf "%.2f" $value }}.
|
||||||
|
This symptom might indicate disk saturation.
|
||||||
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodediskiosaturation
|
||||||
|
summary: Disk IO queue is high.
|
||||||
|
expr: |
|
||||||
|
rate(node_disk_io_time_weighted_seconds_total{job="node-exporter", device=~"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)"}[5m]) > 10
|
||||||
|
for: 30m
|
||||||
|
labels:
|
||||||
|
severity: warning
|
||||||
|
- alert: NodeSystemdServiceFailed
|
||||||
|
annotations:
|
||||||
|
description: Systemd service {{ $labels.name }} has entered failed state at {{ $labels.instance }}
|
||||||
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodesystemdservicefailed
|
||||||
|
summary: Systemd service has entered failed state.
|
||||||
|
expr: |
|
||||||
|
node_systemd_unit_state{job="node-exporter", state="failed"} == 1
|
||||||
|
for: 5m
|
||||||
|
labels:
|
||||||
|
severity: warning
|
||||||
- name: node-exporter.rules
|
- name: node-exporter.rules
|
||||||
rules:
|
rules:
|
||||||
- expr: |
|
- expr: |
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 1.5.0
|
app.kubernetes.io/version: 1.6.1
|
||||||
name: node-exporter
|
name: node-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 1.5.0
|
app.kubernetes.io/version: 1.6.1
|
||||||
name: node-exporter
|
name: node-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: exporter
|
app.kubernetes.io/component: exporter
|
||||||
app.kubernetes.io/name: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 1.5.0
|
app.kubernetes.io/version: 1.6.1
|
||||||
name: node-exporter
|
name: node-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ metadata:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: prometheus-k8s
|
name: prometheus-k8s
|
||||||
rules:
|
rules:
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ metadata:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: prometheus-k8s
|
name: prometheus-k8s
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ metadata:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: prometheus-k8s
|
name: prometheus-k8s
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
@@ -22,6 +22,13 @@ spec:
|
|||||||
protocol: TCP
|
protocol: TCP
|
||||||
- port: 8080
|
- port: 8080
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
|
- from:
|
||||||
|
- podSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: prometheus-adapter
|
||||||
|
ports:
|
||||||
|
- port: 9090
|
||||||
|
protocol: TCP
|
||||||
- from:
|
- from:
|
||||||
- podSelector:
|
- podSelector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ metadata:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: prometheus-k8s
|
name: prometheus-k8s
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ metadata:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: k8s
|
name: k8s
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
@@ -18,7 +18,7 @@ spec:
|
|||||||
port: web
|
port: web
|
||||||
enableFeatures: []
|
enableFeatures: []
|
||||||
externalLabels: {}
|
externalLabels: {}
|
||||||
image: quay.io/prometheus/prometheus:v2.41.0
|
image: quay.io/prometheus/prometheus:v2.45.0
|
||||||
nodeSelector:
|
nodeSelector:
|
||||||
kubernetes.io/os: linux
|
kubernetes.io/os: linux
|
||||||
podMetadata:
|
podMetadata:
|
||||||
@@ -27,7 +27,7 @@ spec:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
podMonitorNamespaceSelector: {}
|
podMonitorNamespaceSelector: {}
|
||||||
podMonitorSelector: {}
|
podMonitorSelector: {}
|
||||||
probeNamespaceSelector: {}
|
probeNamespaceSelector: {}
|
||||||
@@ -45,4 +45,4 @@ spec:
|
|||||||
serviceAccountName: prometheus-k8s
|
serviceAccountName: prometheus-k8s
|
||||||
serviceMonitorNamespaceSelector: {}
|
serviceMonitorNamespaceSelector: {}
|
||||||
serviceMonitorSelector: {}
|
serviceMonitorSelector: {}
|
||||||
version: 2.41.0
|
version: 2.45.0
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ metadata:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
prometheus: k8s
|
prometheus: k8s
|
||||||
role: alert-rules
|
role: alert-rules
|
||||||
name: prometheus-k8s-prometheus-rules
|
name: prometheus-k8s-prometheus-rules
|
||||||
@@ -17,8 +17,7 @@ spec:
|
|||||||
rules:
|
rules:
|
||||||
- alert: PrometheusBadConfig
|
- alert: PrometheusBadConfig
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed to
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed to reload its configuration.
|
||||||
reload its configuration.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusbadconfig
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusbadconfig
|
||||||
summary: Failed Prometheus configuration reload.
|
summary: Failed Prometheus configuration reload.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -28,13 +27,21 @@ spec:
|
|||||||
for: 10m
|
for: 10m
|
||||||
labels:
|
labels:
|
||||||
severity: critical
|
severity: critical
|
||||||
|
- alert: PrometheusSDRefreshFailure
|
||||||
|
annotations:
|
||||||
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed to refresh SD with mechanism {{$labels.mechanism}}.
|
||||||
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheussdrefreshfailure
|
||||||
|
summary: Failed Prometheus SD refresh.
|
||||||
|
expr: |
|
||||||
|
increase(prometheus_sd_refresh_failures_total{job="prometheus-k8s",namespace="monitoring"}[10m]) > 0
|
||||||
|
for: 20m
|
||||||
|
labels:
|
||||||
|
severity: warning
|
||||||
- alert: PrometheusNotificationQueueRunningFull
|
- alert: PrometheusNotificationQueueRunningFull
|
||||||
annotations:
|
annotations:
|
||||||
description: Alert notification queue of Prometheus {{$labels.namespace}}/{{$labels.pod}}
|
description: Alert notification queue of Prometheus {{$labels.namespace}}/{{$labels.pod}} is running full.
|
||||||
is running full.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusnotificationqueuerunningfull
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusnotificationqueuerunningfull
|
||||||
summary: Prometheus alert notification queue predicted to run full in less
|
summary: Prometheus alert notification queue predicted to run full in less than 30m.
|
||||||
than 30m.
|
|
||||||
expr: |
|
expr: |
|
||||||
# Without min_over_time, failed scrapes could create false negatives, see
|
# Without min_over_time, failed scrapes could create false negatives, see
|
||||||
# https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.
|
# https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.
|
||||||
@@ -48,11 +55,9 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusErrorSendingAlertsToSomeAlertmanagers
|
- alert: PrometheusErrorSendingAlertsToSomeAlertmanagers
|
||||||
annotations:
|
annotations:
|
||||||
description: '{{ printf "%.1f" $value }}% errors while sending alerts from
|
description: '{{ printf "%.1f" $value }}% errors while sending alerts from Prometheus {{$labels.namespace}}/{{$labels.pod}} to Alertmanager {{$labels.alertmanager}}.'
|
||||||
Prometheus {{$labels.namespace}}/{{$labels.pod}} to Alertmanager {{$labels.alertmanager}}.'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuserrorsendingalertstosomealertmanagers
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuserrorsendingalertstosomealertmanagers
|
||||||
summary: Prometheus has encountered more than 1% errors sending alerts to
|
summary: Prometheus has encountered more than 1% errors sending alerts to a specific Alertmanager.
|
||||||
a specific Alertmanager.
|
|
||||||
expr: |
|
expr: |
|
||||||
(
|
(
|
||||||
rate(prometheus_notifications_errors_total{job="prometheus-k8s",namespace="monitoring"}[5m])
|
rate(prometheus_notifications_errors_total{job="prometheus-k8s",namespace="monitoring"}[5m])
|
||||||
@@ -66,8 +71,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusNotConnectedToAlertmanagers
|
- alert: PrometheusNotConnectedToAlertmanagers
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is not connected
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is not connected to any Alertmanagers.
|
||||||
to any Alertmanagers.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusnotconnectedtoalertmanagers
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusnotconnectedtoalertmanagers
|
||||||
summary: Prometheus is not connected to any Alertmanagers.
|
summary: Prometheus is not connected to any Alertmanagers.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -79,8 +83,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusTSDBReloadsFailing
|
- alert: PrometheusTSDBReloadsFailing
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has detected
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has detected {{$value | humanize}} reload failures over the last 3h.
|
||||||
{{$value | humanize}} reload failures over the last 3h.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustsdbreloadsfailing
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustsdbreloadsfailing
|
||||||
summary: Prometheus has issues reloading blocks from disk.
|
summary: Prometheus has issues reloading blocks from disk.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -90,8 +93,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusTSDBCompactionsFailing
|
- alert: PrometheusTSDBCompactionsFailing
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has detected
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has detected {{$value | humanize}} compaction failures over the last 3h.
|
||||||
{{$value | humanize}} compaction failures over the last 3h.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustsdbcompactionsfailing
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustsdbcompactionsfailing
|
||||||
summary: Prometheus has issues compacting blocks.
|
summary: Prometheus has issues compacting blocks.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -101,8 +103,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusNotIngestingSamples
|
- alert: PrometheusNotIngestingSamples
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is not ingesting
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is not ingesting samples.
|
||||||
samples.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusnotingestingsamples
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusnotingestingsamples
|
||||||
summary: Prometheus is not ingesting samples.
|
summary: Prometheus is not ingesting samples.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -120,9 +121,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusDuplicateTimestamps
|
- alert: PrometheusDuplicateTimestamps
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is dropping
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is dropping {{ printf "%.4g" $value }} samples/s with different values but duplicated timestamp.
|
||||||
{{ printf "%.4g" $value }} samples/s with different values but duplicated
|
|
||||||
timestamp.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusduplicatetimestamps
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusduplicatetimestamps
|
||||||
summary: Prometheus is dropping samples with duplicate timestamps.
|
summary: Prometheus is dropping samples with duplicate timestamps.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -132,8 +131,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusOutOfOrderTimestamps
|
- alert: PrometheusOutOfOrderTimestamps
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is dropping
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is dropping {{ printf "%.4g" $value }} samples/s with timestamps arriving out of order.
|
||||||
{{ printf "%.4g" $value }} samples/s with timestamps arriving out of order.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusoutofordertimestamps
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusoutofordertimestamps
|
||||||
summary: Prometheus drops samples with out-of-order timestamps.
|
summary: Prometheus drops samples with out-of-order timestamps.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -143,9 +141,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- 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}}:{{ $labels.url }}
|
||||||
{{ printf "%.1f" $value }}% of the samples to {{ $labels.remote_name}}:{{
|
|
||||||
$labels.url }}
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusremotestoragefailures
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusremotestoragefailures
|
||||||
summary: Prometheus fails to send samples to remote storage.
|
summary: Prometheus fails to send samples to remote storage.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -165,9 +161,7 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- 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 {{ $labels.remote_name}}:{{ $labels.url
|
|
||||||
}}.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusremotewritebehind
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusremotewritebehind
|
||||||
summary: Prometheus remote write is behind.
|
summary: Prometheus remote write is behind.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -184,14 +178,9 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- 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 {{ $labels.remote_name}}:{{ $labels.url }}, which is more than the max of {{ printf `prometheus_remote_storage_shards_max{instance="%s",job="prometheus-k8s",namespace="monitoring"}` $labels.instance | query | first | value }}.
|
||||||
desired shards calculation wants to run {{ $value }} shards for queue {{
|
|
||||||
$labels.remote_name}}:{{ $labels.url }}, which is more than the max of {{
|
|
||||||
printf `prometheus_remote_storage_shards_max{instance="%s",job="prometheus-k8s",namespace="monitoring"}`
|
|
||||||
$labels.instance | query | first | value }}.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusremotewritedesiredshards
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusremotewritedesiredshards
|
||||||
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.
|
|
||||||
expr: |
|
expr: |
|
||||||
# Without max_over_time, failed scrapes could create false negatives, see
|
# Without max_over_time, failed scrapes could create false negatives, see
|
||||||
# https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.
|
# https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.
|
||||||
@@ -205,8 +194,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusRuleFailures
|
- alert: PrometheusRuleFailures
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed to
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed to evaluate {{ printf "%.0f" $value }} rules in the last 5m.
|
||||||
evaluate {{ printf "%.0f" $value }} rules in the last 5m.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusrulefailures
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusrulefailures
|
||||||
summary: Prometheus is failing rule evaluations.
|
summary: Prometheus is failing rule evaluations.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -216,8 +204,7 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- alert: PrometheusMissingRuleEvaluations
|
- alert: PrometheusMissingRuleEvaluations
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has missed {{
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has missed {{ printf "%.0f" $value }} rule group evaluations in the last 5m.
|
||||||
printf "%.0f" $value }} rule group evaluations in the last 5m.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusmissingruleevaluations
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusmissingruleevaluations
|
||||||
summary: Prometheus is missing rule evaluations due to slow rule group evaluation.
|
summary: Prometheus is missing rule evaluations due to slow rule group evaluation.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -227,12 +214,9 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusTargetLimitHit
|
- alert: PrometheusTargetLimitHit
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has dropped
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has dropped {{ printf "%.0f" $value }} targets because the number of targets exceeded the configured target_limit.
|
||||||
{{ printf "%.0f" $value }} targets because the number of targets exceeded
|
|
||||||
the configured target_limit.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustargetlimithit
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustargetlimithit
|
||||||
summary: Prometheus has dropped targets because some scrape configs have exceeded
|
summary: Prometheus has dropped targets because some scrape configs have exceeded the targets limit.
|
||||||
the targets limit.
|
|
||||||
expr: |
|
expr: |
|
||||||
increase(prometheus_target_scrape_pool_exceeded_target_limit_total{job="prometheus-k8s",namespace="monitoring"}[5m]) > 0
|
increase(prometheus_target_scrape_pool_exceeded_target_limit_total{job="prometheus-k8s",namespace="monitoring"}[5m]) > 0
|
||||||
for: 15m
|
for: 15m
|
||||||
@@ -240,12 +224,9 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusLabelLimitHit
|
- alert: PrometheusLabelLimitHit
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has dropped
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has dropped {{ printf "%.0f" $value }} targets because some samples exceeded the configured label_limit, label_name_length_limit or label_value_length_limit.
|
||||||
{{ printf "%.0f" $value }} targets because some samples exceeded the configured
|
|
||||||
label_limit, label_name_length_limit or label_value_length_limit.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuslabellimithit
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuslabellimithit
|
||||||
summary: Prometheus has dropped targets because some scrape configs have exceeded
|
summary: Prometheus has dropped targets because some scrape configs have exceeded the labels limit.
|
||||||
the labels limit.
|
|
||||||
expr: |
|
expr: |
|
||||||
increase(prometheus_target_scrape_pool_exceeded_label_limits_total{job="prometheus-k8s",namespace="monitoring"}[5m]) > 0
|
increase(prometheus_target_scrape_pool_exceeded_label_limits_total{job="prometheus-k8s",namespace="monitoring"}[5m]) > 0
|
||||||
for: 15m
|
for: 15m
|
||||||
@@ -253,9 +234,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusScrapeBodySizeLimitHit
|
- alert: PrometheusScrapeBodySizeLimitHit
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed {{
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed {{ printf "%.0f" $value }} scrapes in the last 5m because some targets exceeded the configured body_size_limit.
|
||||||
printf "%.0f" $value }} scrapes in the last 5m because some targets exceeded
|
|
||||||
the configured body_size_limit.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusscrapebodysizelimithit
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusscrapebodysizelimithit
|
||||||
summary: Prometheus has dropped some targets that exceeded body size limit.
|
summary: Prometheus has dropped some targets that exceeded body size limit.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -265,12 +244,9 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusScrapeSampleLimitHit
|
- alert: PrometheusScrapeSampleLimitHit
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed {{
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed {{ printf "%.0f" $value }} scrapes in the last 5m because some targets exceeded the configured sample_limit.
|
||||||
printf "%.0f" $value }} scrapes in the last 5m because some targets exceeded
|
|
||||||
the configured sample_limit.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusscrapesamplelimithit
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusscrapesamplelimithit
|
||||||
summary: Prometheus has failed scrapes that have exceeded the configured sample
|
summary: Prometheus has failed scrapes that have exceeded the configured sample limit.
|
||||||
limit.
|
|
||||||
expr: |
|
expr: |
|
||||||
increase(prometheus_target_scrapes_exceeded_sample_limit_total{job="prometheus-k8s",namespace="monitoring"}[5m]) > 0
|
increase(prometheus_target_scrapes_exceeded_sample_limit_total{job="prometheus-k8s",namespace="monitoring"}[5m]) > 0
|
||||||
for: 15m
|
for: 15m
|
||||||
@@ -278,8 +254,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusTargetSyncFailure
|
- alert: PrometheusTargetSyncFailure
|
||||||
annotations:
|
annotations:
|
||||||
description: '{{ printf "%.0f" $value }} targets in Prometheus {{$labels.namespace}}/{{$labels.pod}}
|
description: '{{ printf "%.0f" $value }} targets in Prometheus {{$labels.namespace}}/{{$labels.pod}} have failed to sync because invalid configuration was supplied.'
|
||||||
have failed to sync because invalid configuration was supplied.'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustargetsyncfailure
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustargetsyncfailure
|
||||||
summary: Prometheus has failed to sync targets.
|
summary: Prometheus has failed to sync targets.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -289,8 +264,7 @@ spec:
|
|||||||
severity: critical
|
severity: critical
|
||||||
- alert: PrometheusHighQueryLoad
|
- alert: PrometheusHighQueryLoad
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} query API has
|
description: Prometheus {{$labels.namespace}}/{{$labels.pod}} query API has less than 20% available capacity in its query engine for the last 15 minutes.
|
||||||
less than 20% available capacity in its query engine for the last 15 minutes.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheushighqueryload
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheushighqueryload
|
||||||
summary: Prometheus is reaching its maximum capacity serving concurrent requests.
|
summary: Prometheus is reaching its maximum capacity serving concurrent requests.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -300,8 +274,7 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusErrorSendingAlertsToAnyAlertmanager
|
- alert: PrometheusErrorSendingAlertsToAnyAlertmanager
|
||||||
annotations:
|
annotations:
|
||||||
description: '{{ printf "%.1f" $value }}% minimum errors while sending alerts
|
description: '{{ printf "%.1f" $value }}% minimum errors while sending alerts from Prometheus {{$labels.namespace}}/{{$labels.pod}} to any Alertmanager.'
|
||||||
from Prometheus {{$labels.namespace}}/{{$labels.pod}} to any Alertmanager.'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuserrorsendingalertstoanyalertmanager
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuserrorsendingalertstoanyalertmanager
|
||||||
summary: Prometheus encounters more than 3% errors sending alerts to any Alertmanager.
|
summary: Prometheus encounters more than 3% errors sending alerts to any Alertmanager.
|
||||||
expr: |
|
expr: |
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ metadata:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: prometheus-k8s-config
|
name: prometheus-k8s-config
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
roleRef:
|
roleRef:
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ items:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: prometheus-k8s
|
name: prometheus-k8s
|
||||||
namespace: default
|
namespace: default
|
||||||
roleRef:
|
roleRef:
|
||||||
@@ -27,7 +27,7 @@ items:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: prometheus-k8s
|
name: prometheus-k8s
|
||||||
namespace: kube-system
|
namespace: kube-system
|
||||||
roleRef:
|
roleRef:
|
||||||
@@ -46,7 +46,7 @@ items:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: prometheus-k8s
|
name: prometheus-k8s
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
roleRef:
|
roleRef:
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ metadata:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: prometheus-k8s-config
|
name: prometheus-k8s-config
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
rules:
|
rules:
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ items:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: prometheus-k8s
|
name: prometheus-k8s
|
||||||
namespace: default
|
namespace: default
|
||||||
rules:
|
rules:
|
||||||
@@ -46,7 +46,7 @@ items:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: prometheus-k8s
|
name: prometheus-k8s
|
||||||
namespace: kube-system
|
namespace: kube-system
|
||||||
rules:
|
rules:
|
||||||
@@ -84,7 +84,7 @@ items:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: prometheus-k8s
|
name: prometheus-k8s
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
rules:
|
rules:
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ metadata:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: prometheus-k8s
|
name: prometheus-k8s
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -7,6 +7,6 @@ metadata:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: prometheus-k8s
|
name: prometheus-k8s
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ metadata:
|
|||||||
app.kubernetes.io/instance: k8s
|
app.kubernetes.io/instance: k8s
|
||||||
app.kubernetes.io/name: prometheus
|
app.kubernetes.io/name: prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 2.41.0
|
app.kubernetes.io/version: 2.45.0
|
||||||
name: prometheus-k8s
|
name: prometheus-k8s
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ metadata:
|
|||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.10.0
|
app.kubernetes.io/version: 0.10.0
|
||||||
name: prometheus-adapter
|
name: prometheus-adapter
|
||||||
namespace: monitoring
|
|
||||||
rules:
|
rules:
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- ""
|
- ""
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ metadata:
|
|||||||
rbac.authorization.k8s.io/aggregate-to-edit: "true"
|
rbac.authorization.k8s.io/aggregate-to-edit: "true"
|
||||||
rbac.authorization.k8s.io/aggregate-to-view: "true"
|
rbac.authorization.k8s.io/aggregate-to-view: "true"
|
||||||
name: system:aggregated-metrics-reader
|
name: system:aggregated-metrics-reader
|
||||||
namespace: monitoring
|
|
||||||
rules:
|
rules:
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- metrics.k8s.io
|
- metrics.k8s.io
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ metadata:
|
|||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.10.0
|
app.kubernetes.io/version: 0.10.0
|
||||||
name: prometheus-adapter
|
name: prometheus-adapter
|
||||||
namespace: monitoring
|
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
kind: ClusterRole
|
kind: ClusterRole
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ metadata:
|
|||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.10.0
|
app.kubernetes.io/version: 0.10.0
|
||||||
name: resource-metrics:system:auth-delegator
|
name: resource-metrics:system:auth-delegator
|
||||||
namespace: monitoring
|
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
kind: ClusterRole
|
kind: ClusterRole
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ metadata:
|
|||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.10.0
|
app.kubernetes.io/version: 0.10.0
|
||||||
name: resource-metrics-server-resources
|
name: resource-metrics-server-resources
|
||||||
namespace: monitoring
|
|
||||||
rules:
|
rules:
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- metrics.k8s.io
|
- metrics.k8s.io
|
||||||
|
|||||||
@@ -44,7 +44,6 @@ spec:
|
|||||||
path: /livez
|
path: /livez
|
||||||
port: https
|
port: https
|
||||||
scheme: HTTPS
|
scheme: HTTPS
|
||||||
initialDelaySeconds: 30
|
|
||||||
periodSeconds: 5
|
periodSeconds: 5
|
||||||
name: prometheus-adapter
|
name: prometheus-adapter
|
||||||
ports:
|
ports:
|
||||||
@@ -56,7 +55,6 @@ spec:
|
|||||||
path: /readyz
|
path: /readyz
|
||||||
port: https
|
port: https
|
||||||
scheme: HTTPS
|
scheme: HTTPS
|
||||||
initialDelaySeconds: 30
|
|
||||||
periodSeconds: 5
|
periodSeconds: 5
|
||||||
resources:
|
resources:
|
||||||
limits:
|
limits:
|
||||||
@@ -71,6 +69,13 @@ spec:
|
|||||||
drop:
|
drop:
|
||||||
- ALL
|
- ALL
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
|
startupProbe:
|
||||||
|
failureThreshold: 18
|
||||||
|
httpGet:
|
||||||
|
path: /livez
|
||||||
|
port: https
|
||||||
|
scheme: HTTPS
|
||||||
|
periodSeconds: 10
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- mountPath: /tmp
|
- mountPath: /tmp
|
||||||
name: tmpfs
|
name: tmpfs
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.62.0
|
app.kubernetes.io/version: 0.66.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
rules:
|
rules:
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
@@ -13,12 +13,18 @@ rules:
|
|||||||
resources:
|
resources:
|
||||||
- alertmanagers
|
- alertmanagers
|
||||||
- alertmanagers/finalizers
|
- alertmanagers/finalizers
|
||||||
|
- alertmanagers/status
|
||||||
- alertmanagerconfigs
|
- alertmanagerconfigs
|
||||||
- prometheuses
|
- prometheuses
|
||||||
- prometheuses/finalizers
|
- prometheuses/finalizers
|
||||||
- prometheuses/status
|
- prometheuses/status
|
||||||
|
- prometheusagents
|
||||||
|
- prometheusagents/finalizers
|
||||||
|
- prometheusagents/status
|
||||||
- thanosrulers
|
- thanosrulers
|
||||||
- thanosrulers/finalizers
|
- thanosrulers/finalizers
|
||||||
|
- thanosrulers/status
|
||||||
|
- scrapeconfigs
|
||||||
- servicemonitors
|
- servicemonitors
|
||||||
- podmonitors
|
- podmonitors
|
||||||
- probes
|
- probes
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.62.0
|
app.kubernetes.io/version: 0.66.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.62.0
|
app.kubernetes.io/version: 0.66.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
@@ -23,14 +23,14 @@ spec:
|
|||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.62.0
|
app.kubernetes.io/version: 0.66.0
|
||||||
spec:
|
spec:
|
||||||
automountServiceAccountToken: true
|
automountServiceAccountToken: true
|
||||||
containers:
|
containers:
|
||||||
- args:
|
- args:
|
||||||
- --kubelet-service=kube-system/kubelet
|
- --kubelet-service=kube-system/kubelet
|
||||||
- --prometheus-config-reloader=quay.io/prometheus-operator/prometheus-config-reloader:v0.62.0
|
- --prometheus-config-reloader=quay.io/prometheus-operator/prometheus-config-reloader:v0.66.0
|
||||||
image: quay.io/prometheus-operator/prometheus-operator:v0.62.0
|
image: quay.io/prometheus-operator/prometheus-operator:v0.66.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 8080
|
- containerPort: 8080
|
||||||
@@ -53,7 +53,7 @@ spec:
|
|||||||
- --secure-listen-address=:8443
|
- --secure-listen-address=:8443
|
||||||
- --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
|
- --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
|
||||||
- --upstream=http://127.0.0.1:8080/
|
- --upstream=http://127.0.0.1:8080/
|
||||||
image: quay.io/brancz/kube-rbac-proxy:v0.14.0
|
image: quay.io/brancz/kube-rbac-proxy:v0.14.2
|
||||||
name: kube-rbac-proxy
|
name: kube-rbac-proxy
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 8443
|
- containerPort: 8443
|
||||||
@@ -79,4 +79,6 @@ spec:
|
|||||||
securityContext:
|
securityContext:
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
runAsUser: 65534
|
runAsUser: 65534
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
serviceAccountName: prometheus-operator
|
serviceAccountName: prometheus-operator
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.62.0
|
app.kubernetes.io/version: 0.66.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.62.0
|
app.kubernetes.io/version: 0.66.0
|
||||||
prometheus: k8s
|
prometheus: k8s
|
||||||
role: alert-rules
|
role: alert-rules
|
||||||
name: prometheus-operator-rules
|
name: prometheus-operator-rules
|
||||||
@@ -16,30 +16,27 @@ spec:
|
|||||||
rules:
|
rules:
|
||||||
- alert: PrometheusOperatorListErrors
|
- alert: PrometheusOperatorListErrors
|
||||||
annotations:
|
annotations:
|
||||||
description: Errors while performing List operations in controller {{$labels.controller}}
|
description: Errors while performing List operations in controller {{$labels.controller}} in {{$labels.namespace}} namespace.
|
||||||
in {{$labels.namespace}} namespace.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorlisterrors
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorlisterrors
|
||||||
summary: Errors while performing list operations in controller.
|
summary: Errors while performing list operations in controller.
|
||||||
expr: |
|
expr: |
|
||||||
(sum by (controller,namespace) (rate(prometheus_operator_list_operations_failed_total{job="prometheus-operator",namespace="monitoring"}[10m])) / sum by (controller,namespace) (rate(prometheus_operator_list_operations_total{job="prometheus-operator",namespace="monitoring"}[10m]))) > 0.4
|
(sum by (cluster,controller,namespace) (rate(prometheus_operator_list_operations_failed_total{job="prometheus-operator",namespace="monitoring"}[10m])) / sum by (cluster,controller,namespace) (rate(prometheus_operator_list_operations_total{job="prometheus-operator",namespace="monitoring"}[10m]))) > 0.4
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusOperatorWatchErrors
|
- alert: PrometheusOperatorWatchErrors
|
||||||
annotations:
|
annotations:
|
||||||
description: Errors while performing watch operations in controller {{$labels.controller}}
|
description: Errors while performing watch operations in controller {{$labels.controller}} in {{$labels.namespace}} namespace.
|
||||||
in {{$labels.namespace}} namespace.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorwatcherrors
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorwatcherrors
|
||||||
summary: Errors while performing watch operations in controller.
|
summary: Errors while performing watch operations in controller.
|
||||||
expr: |
|
expr: |
|
||||||
(sum by (controller,namespace) (rate(prometheus_operator_watch_operations_failed_total{job="prometheus-operator",namespace="monitoring"}[5m])) / sum by (controller,namespace) (rate(prometheus_operator_watch_operations_total{job="prometheus-operator",namespace="monitoring"}[5m]))) > 0.4
|
(sum by (cluster,controller,namespace) (rate(prometheus_operator_watch_operations_failed_total{job="prometheus-operator",namespace="monitoring"}[5m])) / sum by (cluster,controller,namespace) (rate(prometheus_operator_watch_operations_total{job="prometheus-operator",namespace="monitoring"}[5m]))) > 0.4
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusOperatorSyncFailed
|
- alert: PrometheusOperatorSyncFailed
|
||||||
annotations:
|
annotations:
|
||||||
description: Controller {{ $labels.controller }} in {{ $labels.namespace }}
|
description: Controller {{ $labels.controller }} in {{ $labels.namespace }} namespace fails to reconcile {{ $value }} objects.
|
||||||
namespace fails to reconcile {{ $value }} objects.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorsyncfailed
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorsyncfailed
|
||||||
summary: Last controller reconciliation failed
|
summary: Last controller reconciliation failed
|
||||||
expr: |
|
expr: |
|
||||||
@@ -49,20 +46,17 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusOperatorReconcileErrors
|
- alert: PrometheusOperatorReconcileErrors
|
||||||
annotations:
|
annotations:
|
||||||
description: '{{ $value | humanizePercentage }} of reconciling operations
|
description: '{{ $value | humanizePercentage }} of reconciling operations failed for {{ $labels.controller }} controller in {{ $labels.namespace }} namespace.'
|
||||||
failed for {{ $labels.controller }} controller in {{ $labels.namespace }}
|
|
||||||
namespace.'
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorreconcileerrors
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorreconcileerrors
|
||||||
summary: Errors while reconciling controller.
|
summary: Errors while reconciling controller.
|
||||||
expr: |
|
expr: |
|
||||||
(sum by (controller,namespace) (rate(prometheus_operator_reconcile_errors_total{job="prometheus-operator",namespace="monitoring"}[5m]))) / (sum by (controller,namespace) (rate(prometheus_operator_reconcile_operations_total{job="prometheus-operator",namespace="monitoring"}[5m]))) > 0.1
|
(sum by (cluster,controller,namespace) (rate(prometheus_operator_reconcile_errors_total{job="prometheus-operator",namespace="monitoring"}[5m]))) / (sum by (cluster,controller,namespace) (rate(prometheus_operator_reconcile_operations_total{job="prometheus-operator",namespace="monitoring"}[5m]))) > 0.1
|
||||||
for: 10m
|
for: 10m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusOperatorNodeLookupErrors
|
- alert: PrometheusOperatorNodeLookupErrors
|
||||||
annotations:
|
annotations:
|
||||||
description: Errors while reconciling Prometheus in {{ $labels.namespace }}
|
description: Errors while reconciling Prometheus in {{ $labels.namespace }} Namespace.
|
||||||
Namespace.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatornodelookuperrors
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatornodelookuperrors
|
||||||
summary: Errors while reconciling Prometheus.
|
summary: Errors while reconciling Prometheus.
|
||||||
expr: |
|
expr: |
|
||||||
@@ -72,20 +66,17 @@ spec:
|
|||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusOperatorNotReady
|
- alert: PrometheusOperatorNotReady
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus operator in {{ $labels.namespace }} namespace isn't
|
description: Prometheus operator in {{ $labels.namespace }} namespace isn't ready to reconcile {{ $labels.controller }} resources.
|
||||||
ready to reconcile {{ $labels.controller }} resources.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatornotready
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatornotready
|
||||||
summary: Prometheus operator not ready
|
summary: Prometheus operator not ready
|
||||||
expr: |
|
expr: |
|
||||||
min by (controller,namespace) (max_over_time(prometheus_operator_ready{job="prometheus-operator",namespace="monitoring"}[5m]) == 0)
|
min by (cluster,controller,namespace) (max_over_time(prometheus_operator_ready{job="prometheus-operator",namespace="monitoring"}[5m]) == 0)
|
||||||
for: 5m
|
for: 5m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: PrometheusOperatorRejectedResources
|
- alert: PrometheusOperatorRejectedResources
|
||||||
annotations:
|
annotations:
|
||||||
description: Prometheus operator in {{ $labels.namespace }} namespace rejected
|
description: Prometheus operator in {{ $labels.namespace }} namespace rejected {{ printf "%0.0f" $value }} {{ $labels.controller }}/{{ $labels.resource }} resources.
|
||||||
{{ printf "%0.0f" $value }} {{ $labels.controller }}/{{ $labels.resource
|
|
||||||
}} resources.
|
|
||||||
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorrejectedresources
|
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorrejectedresources
|
||||||
summary: Resources rejected by Prometheus operator
|
summary: Resources rejected by Prometheus operator
|
||||||
expr: |
|
expr: |
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.62.0
|
app.kubernetes.io/version: 0.66.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ metadata:
|
|||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.62.0
|
app.kubernetes.io/version: 0.66.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.62.0
|
app.kubernetes.io/version: 0.66.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
@@ -21,4 +21,4 @@ spec:
|
|||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: 0.62.0
|
app.kubernetes.io/version: 0.66.0
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.9.2
|
controller-gen.kubebuilder.io/version: v0.11.1
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
name: podmonitors.monitoring.coreos.com
|
name: podmonitors.monitoring.coreos.com
|
||||||
spec:
|
spec:
|
||||||
@@ -24,57 +24,43 @@ spec:
|
|||||||
description: PodMonitor defines monitoring for a set of pods.
|
description: PodMonitor defines monitoring for a set of pods.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
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'
|
||||||
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
|
type: string
|
||||||
kind:
|
kind:
|
||||||
description: 'Kind is a string value representing the REST resource this
|
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'
|
||||||
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
|
type: string
|
||||||
metadata:
|
metadata:
|
||||||
type: object
|
type: object
|
||||||
spec:
|
spec:
|
||||||
description: Specification of desired Pod selection for target discovery
|
description: Specification of desired Pod selection for target discovery by Prometheus.
|
||||||
by Prometheus.
|
|
||||||
properties:
|
properties:
|
||||||
attachMetadata:
|
attachMetadata:
|
||||||
description: Attaches node metadata to discovered targets. Requires
|
description: Attaches node metadata to discovered targets. Requires Prometheus v2.35.0 and above.
|
||||||
Prometheus v2.35.0 and above.
|
|
||||||
properties:
|
properties:
|
||||||
node:
|
node:
|
||||||
description: When set to true, Prometheus must have permissions
|
description: When set to true, Prometheus must have permissions to get Nodes.
|
||||||
to get Nodes.
|
|
||||||
type: boolean
|
type: boolean
|
||||||
type: object
|
type: object
|
||||||
jobLabel:
|
jobLabel:
|
||||||
description: The label to use to retrieve the job name from.
|
description: The label to use to retrieve the job name from.
|
||||||
type: string
|
type: string
|
||||||
labelLimit:
|
labelLimit:
|
||||||
description: Per-scrape limit on number of labels that will be accepted
|
description: Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
labelNameLengthLimit:
|
labelNameLengthLimit:
|
||||||
description: Per-scrape limit on length of labels name that will be
|
description: Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
accepted for a sample. Only valid in Prometheus versions 2.27.0
|
|
||||||
and newer.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
labelValueLengthLimit:
|
labelValueLengthLimit:
|
||||||
description: Per-scrape limit on length of labels value that will
|
description: Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
be accepted for a sample. Only valid in Prometheus versions 2.27.0
|
|
||||||
and newer.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
namespaceSelector:
|
namespaceSelector:
|
||||||
description: Selector to select which namespaces the Endpoints objects
|
description: Selector to select which namespaces the Endpoints objects are discovered from.
|
||||||
are discovered from.
|
|
||||||
properties:
|
properties:
|
||||||
any:
|
any:
|
||||||
description: Boolean describing whether all namespaces are selected
|
description: Boolean describing whether all namespaces are selected in contrast to a list restricting them.
|
||||||
in contrast to a list restricting them.
|
|
||||||
type: boolean
|
type: boolean
|
||||||
matchNames:
|
matchNames:
|
||||||
description: List of namespace names to select from.
|
description: List of namespace names to select from.
|
||||||
@@ -85,76 +71,61 @@ spec:
|
|||||||
podMetricsEndpoints:
|
podMetricsEndpoints:
|
||||||
description: A list of endpoints allowed as part of this PodMonitor.
|
description: A list of endpoints allowed as part of this PodMonitor.
|
||||||
items:
|
items:
|
||||||
description: PodMetricsEndpoint defines a scrapeable endpoint of
|
description: PodMetricsEndpoint defines a scrapeable endpoint of a Kubernetes Pod serving Prometheus metrics.
|
||||||
a Kubernetes Pod serving Prometheus metrics.
|
|
||||||
properties:
|
properties:
|
||||||
authorization:
|
authorization:
|
||||||
description: Authorization section for this endpoint
|
description: Authorization section for this endpoint
|
||||||
properties:
|
properties:
|
||||||
credentials:
|
credentials:
|
||||||
description: The secret's key that contains the credentials
|
description: Selects a key of a Secret in the namespace that contains the credentials for authentication.
|
||||||
of the request
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must
|
description: Specify whether the Secret or its key must be defined
|
||||||
be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
type: object
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
type:
|
type:
|
||||||
description: Set the authentication type. Defaults to Bearer,
|
description: "Defines the authentication type. The value is case-insensitive. \n \"Basic\" is not a supported value. \n Default: \"Bearer\""
|
||||||
Basic will cause an error
|
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
basicAuth:
|
basicAuth:
|
||||||
description: 'BasicAuth allow an endpoint to authenticate over
|
description: 'BasicAuth allow an endpoint to authenticate over basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint'
|
||||||
basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint'
|
|
||||||
properties:
|
properties:
|
||||||
password:
|
password:
|
||||||
description: The secret in the service monitor namespace
|
description: The secret in the service monitor namespace that contains the password for authentication.
|
||||||
that contains the password for authentication.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must
|
description: Specify whether the Secret or its key must be defined
|
||||||
be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
type: object
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
username:
|
username:
|
||||||
description: The secret in the service monitor namespace
|
description: The secret in the service monitor namespace that contains the username for authentication.
|
||||||
that contains the username for authentication.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must
|
description: Specify whether the Secret or its key must be defined
|
||||||
be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -162,21 +133,16 @@ spec:
|
|||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
type: object
|
type: object
|
||||||
bearerTokenSecret:
|
bearerTokenSecret:
|
||||||
description: Secret to mount to read bearer token for scraping
|
description: Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the pod monitor and accessible by the Prometheus Operator.
|
||||||
targets. The secret needs to be in the same namespace as the
|
|
||||||
pod monitor and accessible by the Prometheus Operator.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must
|
description: Specify whether the Secret or its key must be defined
|
||||||
be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -186,40 +152,29 @@ spec:
|
|||||||
description: Whether to enable HTTP2.
|
description: Whether to enable HTTP2.
|
||||||
type: boolean
|
type: boolean
|
||||||
filterRunning:
|
filterRunning:
|
||||||
description: 'Drop pods that are not running. (Failed, Succeeded).
|
description: 'Drop pods that are not running. (Failed, Succeeded). Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase'
|
||||||
Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase'
|
|
||||||
type: boolean
|
type: boolean
|
||||||
followRedirects:
|
followRedirects:
|
||||||
description: FollowRedirects configures whether scrape requests
|
description: FollowRedirects configures whether scrape requests follow HTTP 3xx redirects.
|
||||||
follow HTTP 3xx redirects.
|
|
||||||
type: boolean
|
type: boolean
|
||||||
honorLabels:
|
honorLabels:
|
||||||
description: HonorLabels chooses the metric's labels on collisions
|
description: HonorLabels chooses the metric's labels on collisions with target labels.
|
||||||
with target labels.
|
|
||||||
type: boolean
|
type: boolean
|
||||||
honorTimestamps:
|
honorTimestamps:
|
||||||
description: HonorTimestamps controls whether Prometheus respects
|
description: HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.
|
||||||
the timestamps present in scraped data.
|
|
||||||
type: boolean
|
type: boolean
|
||||||
interval:
|
interval:
|
||||||
description: Interval at which metrics should be scraped If
|
description: Interval at which metrics should be scraped If not specified Prometheus' global scrape interval is used.
|
||||||
not specified Prometheus' global scrape interval is used.
|
|
||||||
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||||
type: string
|
type: string
|
||||||
metricRelabelings:
|
metricRelabelings:
|
||||||
description: MetricRelabelConfigs to apply to samples before
|
description: MetricRelabelConfigs to apply to samples before ingestion.
|
||||||
ingestion.
|
|
||||||
items:
|
items:
|
||||||
description: 'RelabelConfig allows dynamic rewriting of the
|
description: "RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config"
|
||||||
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:
|
properties:
|
||||||
action:
|
action:
|
||||||
default: replace
|
default: replace
|
||||||
description: Action to perform based on regex matching.
|
description: "Action to perform based on the regex matching. \n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \n Default: \"Replace\""
|
||||||
Default is 'replace'. uppercase and lowercase actions
|
|
||||||
require Prometheus >= 2.36.
|
|
||||||
enum:
|
enum:
|
||||||
- replace
|
- replace
|
||||||
- Replace
|
- Replace
|
||||||
@@ -239,67 +194,53 @@ spec:
|
|||||||
- Lowercase
|
- Lowercase
|
||||||
- uppercase
|
- uppercase
|
||||||
- Uppercase
|
- Uppercase
|
||||||
|
- keepequal
|
||||||
|
- KeepEqual
|
||||||
|
- dropequal
|
||||||
|
- DropEqual
|
||||||
type: string
|
type: string
|
||||||
modulus:
|
modulus:
|
||||||
description: Modulus to take of the hash of the source
|
description: "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`."
|
||||||
label values.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
regex:
|
regex:
|
||||||
description: Regular expression against which the extracted
|
description: Regular expression against which the extracted value is matched.
|
||||||
value is matched. Default is '(.*)'
|
|
||||||
type: string
|
type: string
|
||||||
replacement:
|
replacement:
|
||||||
description: Replacement value against which a regex replace
|
description: "Replacement value against which a Replace action is performed if the regular expression matches. \n Regex capture groups are available."
|
||||||
is performed if the regular expression matches. Regex
|
|
||||||
capture groups are available. Default is '$1'
|
|
||||||
type: string
|
type: string
|
||||||
separator:
|
separator:
|
||||||
description: Separator placed between concatenated source
|
description: Separator is the string between concatenated SourceLabels.
|
||||||
label values. default is ';'.
|
|
||||||
type: string
|
type: string
|
||||||
sourceLabels:
|
sourceLabels:
|
||||||
description: The source labels select values from existing
|
description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.
|
||||||
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:
|
||||||
description: LabelName is a valid Prometheus label name
|
description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.
|
||||||
which may only contain ASCII letters, numbers, as
|
|
||||||
well as underscores.
|
|
||||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
targetLabel:
|
targetLabel:
|
||||||
description: Label to which the resulting value is written
|
description: "Label to which the resulting string is written in a replacement. \n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \n Regex capture groups are available."
|
||||||
in a replace action. It is mandatory for replace actions.
|
|
||||||
Regex capture groups are available.
|
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
oauth2:
|
oauth2:
|
||||||
description: OAuth2 for the URL. Only valid in Prometheus versions
|
description: OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
2.27.0 and newer.
|
|
||||||
properties:
|
properties:
|
||||||
clientId:
|
clientId:
|
||||||
description: The secret or configmap containing the OAuth2
|
description: The secret or configmap containing the OAuth2 client id
|
||||||
client id
|
|
||||||
properties:
|
properties:
|
||||||
configMap:
|
configMap:
|
||||||
description: ConfigMap containing data to use for the
|
description: ConfigMap containing data to use for the targets.
|
||||||
targets.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key to select.
|
description: The key to select.
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind,
|
|
||||||
uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the ConfigMap or its
|
description: Specify whether the ConfigMap or its key must be defined
|
||||||
key must be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -309,17 +250,13 @@ spec:
|
|||||||
description: Secret containing data to use for the targets.
|
description: Secret containing data to use for the targets.
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind,
|
|
||||||
uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key
|
description: Specify whether the Secret or its key must be defined
|
||||||
must be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -330,16 +267,13 @@ spec:
|
|||||||
description: The secret containing the OAuth2 client secret
|
description: The secret containing the OAuth2 client secret
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must
|
description: Specify whether the Secret or its key must be defined
|
||||||
be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -372,34 +306,22 @@ spec:
|
|||||||
description: Optional HTTP URL parameters
|
description: Optional HTTP URL parameters
|
||||||
type: object
|
type: object
|
||||||
path:
|
path:
|
||||||
description: HTTP path to scrape for metrics. If empty, Prometheus
|
description: HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. `/metrics`).
|
||||||
uses the default value (e.g. `/metrics`).
|
|
||||||
type: string
|
type: string
|
||||||
port:
|
port:
|
||||||
description: Name of the pod port this endpoint refers to. Mutually
|
description: Name of the pod port this endpoint refers to. Mutually exclusive with targetPort.
|
||||||
exclusive with targetPort.
|
|
||||||
type: string
|
type: string
|
||||||
proxyUrl:
|
proxyUrl:
|
||||||
description: ProxyURL eg http://proxyserver:2195 Directs scrapes
|
description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.
|
||||||
to proxy through this endpoint.
|
|
||||||
type: string
|
type: string
|
||||||
relabelings:
|
relabelings:
|
||||||
description: 'RelabelConfigs to apply to samples before scraping.
|
description: 'RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. The original scrape job''s name is available via the `__tmp_prometheus_job_name` label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'
|
||||||
Prometheus Operator automatically adds relabelings for a few
|
|
||||||
standard Kubernetes fields. The original scrape job''s name
|
|
||||||
is available via the `__tmp_prometheus_job_name` label. More
|
|
||||||
info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'
|
|
||||||
items:
|
items:
|
||||||
description: 'RelabelConfig allows dynamic rewriting of the
|
description: "RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config"
|
||||||
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:
|
properties:
|
||||||
action:
|
action:
|
||||||
default: replace
|
default: replace
|
||||||
description: Action to perform based on regex matching.
|
description: "Action to perform based on the regex matching. \n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \n Default: \"Replace\""
|
||||||
Default is 'replace'. uppercase and lowercase actions
|
|
||||||
require Prometheus >= 2.36.
|
|
||||||
enum:
|
enum:
|
||||||
- replace
|
- replace
|
||||||
- Replace
|
- Replace
|
||||||
@@ -419,50 +341,44 @@ spec:
|
|||||||
- Lowercase
|
- Lowercase
|
||||||
- uppercase
|
- uppercase
|
||||||
- Uppercase
|
- Uppercase
|
||||||
|
- keepequal
|
||||||
|
- KeepEqual
|
||||||
|
- dropequal
|
||||||
|
- DropEqual
|
||||||
type: string
|
type: string
|
||||||
modulus:
|
modulus:
|
||||||
description: Modulus to take of the hash of the source
|
description: "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`."
|
||||||
label values.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
regex:
|
regex:
|
||||||
description: Regular expression against which the extracted
|
description: Regular expression against which the extracted value is matched.
|
||||||
value is matched. Default is '(.*)'
|
|
||||||
type: string
|
type: string
|
||||||
replacement:
|
replacement:
|
||||||
description: Replacement value against which a regex replace
|
description: "Replacement value against which a Replace action is performed if the regular expression matches. \n Regex capture groups are available."
|
||||||
is performed if the regular expression matches. Regex
|
|
||||||
capture groups are available. Default is '$1'
|
|
||||||
type: string
|
type: string
|
||||||
separator:
|
separator:
|
||||||
description: Separator placed between concatenated source
|
description: Separator is the string between concatenated SourceLabels.
|
||||||
label values. default is ';'.
|
|
||||||
type: string
|
type: string
|
||||||
sourceLabels:
|
sourceLabels:
|
||||||
description: The source labels select values from existing
|
description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.
|
||||||
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:
|
||||||
description: LabelName is a valid Prometheus label name
|
description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.
|
||||||
which may only contain ASCII letters, numbers, as
|
|
||||||
well as underscores.
|
|
||||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
targetLabel:
|
targetLabel:
|
||||||
description: Label to which the resulting value is written
|
description: "Label to which the resulting string is written in a replacement. \n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \n Regex capture groups are available."
|
||||||
in a replace action. It is mandatory for replace actions.
|
|
||||||
Regex capture groups are available.
|
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
scheme:
|
scheme:
|
||||||
description: HTTP scheme to use for scraping.
|
description: HTTP scheme to use for scraping. `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. If empty, Prometheus uses the default value `http`.
|
||||||
|
enum:
|
||||||
|
- http
|
||||||
|
- https
|
||||||
type: string
|
type: string
|
||||||
scrapeTimeout:
|
scrapeTimeout:
|
||||||
description: Timeout after which the scrape is ended If not
|
description: Timeout after which the scrape is ended If not specified, the Prometheus global scrape interval is used.
|
||||||
specified, the Prometheus global scrape interval is used.
|
|
||||||
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||||
type: string
|
type: string
|
||||||
targetPort:
|
targetPort:
|
||||||
@@ -475,24 +391,19 @@ spec:
|
|||||||
description: TLS configuration to use when scraping the endpoint.
|
description: TLS configuration to use when scraping the endpoint.
|
||||||
properties:
|
properties:
|
||||||
ca:
|
ca:
|
||||||
description: Certificate authority used when verifying server
|
description: Certificate authority used when verifying server certificates.
|
||||||
certificates.
|
|
||||||
properties:
|
properties:
|
||||||
configMap:
|
configMap:
|
||||||
description: ConfigMap containing data to use for the
|
description: ConfigMap containing data to use for the targets.
|
||||||
targets.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key to select.
|
description: The key to select.
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind,
|
|
||||||
uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the ConfigMap or its
|
description: Specify whether the ConfigMap or its key must be defined
|
||||||
key must be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -502,17 +413,13 @@ spec:
|
|||||||
description: Secret containing data to use for the targets.
|
description: Secret containing data to use for the targets.
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind,
|
|
||||||
uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key
|
description: Specify whether the Secret or its key must be defined
|
||||||
must be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -523,20 +430,16 @@ spec:
|
|||||||
description: Client certificate to present when doing client-authentication.
|
description: Client certificate to present when doing client-authentication.
|
||||||
properties:
|
properties:
|
||||||
configMap:
|
configMap:
|
||||||
description: ConfigMap containing data to use for the
|
description: ConfigMap containing data to use for the targets.
|
||||||
targets.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key to select.
|
description: The key to select.
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind,
|
|
||||||
uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the ConfigMap or its
|
description: Specify whether the ConfigMap or its key must be defined
|
||||||
key must be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -546,17 +449,13 @@ spec:
|
|||||||
description: Secret containing data to use for the targets.
|
description: Secret containing data to use for the targets.
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind,
|
|
||||||
uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key
|
description: Specify whether the Secret or its key must be defined
|
||||||
must be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -567,20 +466,16 @@ spec:
|
|||||||
description: Disable target certificate validation.
|
description: Disable target certificate validation.
|
||||||
type: boolean
|
type: boolean
|
||||||
keySecret:
|
keySecret:
|
||||||
description: Secret containing the client key file for the
|
description: Secret containing the client key file for the targets.
|
||||||
targets.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must
|
description: Specify whether the Secret or its key must be defined
|
||||||
be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -593,42 +488,30 @@ spec:
|
|||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
podTargetLabels:
|
podTargetLabels:
|
||||||
description: PodTargetLabels transfers labels on the Kubernetes Pod
|
description: PodTargetLabels transfers labels on the Kubernetes Pod onto the target.
|
||||||
onto the target.
|
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
sampleLimit:
|
sampleLimit:
|
||||||
description: SampleLimit defines per-scrape limit on number of scraped
|
description: SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
|
||||||
samples that will be accepted.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
selector:
|
selector:
|
||||||
description: Selector to select Pod objects.
|
description: Selector to select Pod objects.
|
||||||
properties:
|
properties:
|
||||||
matchExpressions:
|
matchExpressions:
|
||||||
description: matchExpressions is a list of label selector requirements.
|
description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
|
||||||
The requirements are ANDed.
|
|
||||||
items:
|
items:
|
||||||
description: A label selector requirement is a selector that
|
description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
|
||||||
contains values, a key, and an operator that relates the key
|
|
||||||
and values.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: key is the label key that the selector applies
|
description: key is the label key that the selector applies to.
|
||||||
to.
|
|
||||||
type: string
|
type: string
|
||||||
operator:
|
operator:
|
||||||
description: operator represents a key's relationship to
|
description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
|
||||||
a set of values. Valid operators are In, NotIn, Exists
|
|
||||||
and DoesNotExist.
|
|
||||||
type: string
|
type: string
|
||||||
values:
|
values:
|
||||||
description: values is an array of string values. If the
|
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.
|
||||||
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:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
@@ -640,17 +523,12 @@ spec:
|
|||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
description: matchLabels is a map of {key,value} pairs. A single
|
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.
|
||||||
{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
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
targetLimit:
|
targetLimit:
|
||||||
description: TargetLimit defines a limit on the number of scraped
|
description: TargetLimit defines a limit on the number of scraped targets that will be accepted.
|
||||||
targets that will be accepted.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
required:
|
required:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.9.2
|
controller-gen.kubebuilder.io/version: v0.11.1
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
name: probes.monitoring.coreos.com
|
name: probes.monitoring.coreos.com
|
||||||
spec:
|
spec:
|
||||||
@@ -24,88 +24,69 @@ spec:
|
|||||||
description: Probe defines monitoring for a set of static targets or ingresses.
|
description: Probe defines monitoring for a set of static targets or ingresses.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
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'
|
||||||
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
|
type: string
|
||||||
kind:
|
kind:
|
||||||
description: 'Kind is a string value representing the REST resource this
|
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'
|
||||||
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
|
type: string
|
||||||
metadata:
|
metadata:
|
||||||
type: object
|
type: object
|
||||||
spec:
|
spec:
|
||||||
description: Specification of desired Ingress selection for target discovery
|
description: Specification of desired Ingress selection for target discovery by Prometheus.
|
||||||
by Prometheus.
|
|
||||||
properties:
|
properties:
|
||||||
authorization:
|
authorization:
|
||||||
description: Authorization section for this endpoint
|
description: Authorization section for this endpoint
|
||||||
properties:
|
properties:
|
||||||
credentials:
|
credentials:
|
||||||
description: The secret's key that contains the credentials of
|
description: Selects a key of a Secret in the namespace that contains the credentials for authentication.
|
||||||
the request
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must be
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must be
|
description: Specify whether the Secret or its key must be defined
|
||||||
defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
type: object
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
type:
|
type:
|
||||||
description: Set the authentication type. Defaults to Bearer,
|
description: "Defines the authentication type. The value is case-insensitive. \n \"Basic\" is not a supported value. \n Default: \"Bearer\""
|
||||||
Basic will cause an error
|
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
basicAuth:
|
basicAuth:
|
||||||
description: 'BasicAuth allow an endpoint to authenticate over basic
|
description: 'BasicAuth allow an endpoint to authenticate over basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint'
|
||||||
authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint'
|
|
||||||
properties:
|
properties:
|
||||||
password:
|
password:
|
||||||
description: The secret in the service monitor namespace that
|
description: The secret in the service monitor namespace that contains the password for authentication.
|
||||||
contains the password for authentication.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must be
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must be
|
description: Specify whether the Secret or its key must be defined
|
||||||
defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
type: object
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
username:
|
username:
|
||||||
description: The secret in the service monitor namespace that
|
description: The secret in the service monitor namespace that contains the username for authentication.
|
||||||
contains the username for authentication.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must be
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must be
|
description: Specify whether the Secret or its key must be defined
|
||||||
defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -113,17 +94,13 @@ spec:
|
|||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
type: object
|
type: object
|
||||||
bearerTokenSecret:
|
bearerTokenSecret:
|
||||||
description: Secret to mount to read bearer token for scraping targets.
|
description: Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the probe and accessible by the Prometheus Operator.
|
||||||
The secret needs to be in the same namespace as the probe and accessible
|
|
||||||
by the Prometheus Operator.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must be a
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must be defined
|
description: Specify whether the Secret or its key must be defined
|
||||||
@@ -133,42 +110,32 @@ spec:
|
|||||||
type: object
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
interval:
|
interval:
|
||||||
description: Interval at which targets are probed using the configured
|
description: Interval at which targets are probed using the configured prober. If not specified Prometheus' global scrape interval is used.
|
||||||
prober. If not specified Prometheus' global scrape interval is used.
|
|
||||||
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||||
type: string
|
type: string
|
||||||
jobName:
|
jobName:
|
||||||
description: The job name assigned to scraped metrics by default.
|
description: The job name assigned to scraped metrics by default.
|
||||||
type: string
|
type: string
|
||||||
labelLimit:
|
labelLimit:
|
||||||
description: Per-scrape limit on number of labels that will be accepted
|
description: Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
labelNameLengthLimit:
|
labelNameLengthLimit:
|
||||||
description: Per-scrape limit on length of labels name that will be
|
description: Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
accepted for a sample. Only valid in Prometheus versions 2.27.0
|
|
||||||
and newer.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
labelValueLengthLimit:
|
labelValueLengthLimit:
|
||||||
description: Per-scrape limit on length of labels value that will
|
description: Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
be accepted for a sample. Only valid in Prometheus versions 2.27.0
|
|
||||||
and newer.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
metricRelabelings:
|
metricRelabelings:
|
||||||
description: MetricRelabelConfigs to apply to samples before ingestion.
|
description: MetricRelabelConfigs to apply to samples before ingestion.
|
||||||
items:
|
items:
|
||||||
description: 'RelabelConfig allows dynamic rewriting of the label
|
description: "RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config"
|
||||||
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:
|
properties:
|
||||||
action:
|
action:
|
||||||
default: replace
|
default: replace
|
||||||
description: Action to perform based on regex matching. Default
|
description: "Action to perform based on the regex matching. \n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \n Default: \"Replace\""
|
||||||
is 'replace'. uppercase and lowercase actions require Prometheus
|
|
||||||
>= 2.36.
|
|
||||||
enum:
|
enum:
|
||||||
- replace
|
- replace
|
||||||
- Replace
|
- Replace
|
||||||
@@ -188,55 +155,44 @@ spec:
|
|||||||
- Lowercase
|
- Lowercase
|
||||||
- uppercase
|
- uppercase
|
||||||
- Uppercase
|
- Uppercase
|
||||||
|
- keepequal
|
||||||
|
- KeepEqual
|
||||||
|
- dropequal
|
||||||
|
- DropEqual
|
||||||
type: string
|
type: string
|
||||||
modulus:
|
modulus:
|
||||||
description: Modulus to take of the hash of the source label
|
description: "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`."
|
||||||
values.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
regex:
|
regex:
|
||||||
description: Regular expression against which the extracted
|
description: Regular expression against which the extracted value is matched.
|
||||||
value is matched. Default is '(.*)'
|
|
||||||
type: string
|
type: string
|
||||||
replacement:
|
replacement:
|
||||||
description: Replacement value against which a regex replace
|
description: "Replacement value against which a Replace action is performed if the regular expression matches. \n Regex capture groups are available."
|
||||||
is performed if the regular expression matches. Regex capture
|
|
||||||
groups are available. Default is '$1'
|
|
||||||
type: string
|
type: string
|
||||||
separator:
|
separator:
|
||||||
description: Separator placed between concatenated source label
|
description: Separator is the string between concatenated SourceLabels.
|
||||||
values. default is ';'.
|
|
||||||
type: string
|
type: string
|
||||||
sourceLabels:
|
sourceLabels:
|
||||||
description: The source labels select values from existing labels.
|
description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.
|
||||||
Their content is concatenated using the configured separator
|
|
||||||
and matched against the configured regular expression for
|
|
||||||
the replace, keep, and drop actions.
|
|
||||||
items:
|
items:
|
||||||
description: LabelName is a valid Prometheus label name which
|
description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.
|
||||||
may only contain ASCII letters, numbers, as well as underscores.
|
|
||||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
targetLabel:
|
targetLabel:
|
||||||
description: Label to which the resulting value is written in
|
description: "Label to which the resulting string is written in a replacement. \n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \n Regex capture groups are available."
|
||||||
a replace action. It is mandatory for replace actions. Regex
|
|
||||||
capture groups are available.
|
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
module:
|
module:
|
||||||
description: 'The module to use for probing specifying how to probe
|
description: 'The module to use for probing specifying how to probe the target. Example module configuring in the blackbox exporter: https://github.com/prometheus/blackbox_exporter/blob/master/example.yml'
|
||||||
the target. Example module configuring in the blackbox exporter:
|
|
||||||
https://github.com/prometheus/blackbox_exporter/blob/master/example.yml'
|
|
||||||
type: string
|
type: string
|
||||||
oauth2:
|
oauth2:
|
||||||
description: OAuth2 for the URL. Only valid in Prometheus versions
|
description: OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
2.27.0 and newer.
|
|
||||||
properties:
|
properties:
|
||||||
clientId:
|
clientId:
|
||||||
description: The secret or configmap containing the OAuth2 client
|
description: The secret or configmap containing the OAuth2 client id
|
||||||
id
|
|
||||||
properties:
|
properties:
|
||||||
configMap:
|
configMap:
|
||||||
description: ConfigMap containing data to use for the targets.
|
description: ConfigMap containing data to use for the targets.
|
||||||
@@ -245,12 +201,10 @@ spec:
|
|||||||
description: The key to select.
|
description: The key to select.
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the ConfigMap or its key
|
description: Specify whether the ConfigMap or its key must be defined
|
||||||
must be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -260,16 +214,13 @@ spec:
|
|||||||
description: Secret containing data to use for the targets.
|
description: Secret containing data to use for the targets.
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must
|
description: Specify whether the Secret or its key must be defined
|
||||||
be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -280,16 +231,13 @@ spec:
|
|||||||
description: The secret containing the OAuth2 client secret
|
description: The secret containing the OAuth2 client secret
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must be
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must be
|
description: Specify whether the Secret or its key must be defined
|
||||||
defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -315,9 +263,7 @@ spec:
|
|||||||
- tokenUrl
|
- tokenUrl
|
||||||
type: object
|
type: object
|
||||||
prober:
|
prober:
|
||||||
description: Specification for the prober to use for probing targets.
|
description: Specification for the prober to use for probing targets. The prober.URL parameter is required. Targets cannot be probed if left empty.
|
||||||
The prober.URL parameter is required. Targets cannot be probed if
|
|
||||||
left empty.
|
|
||||||
properties:
|
properties:
|
||||||
path:
|
path:
|
||||||
default: /probe
|
default: /probe
|
||||||
@@ -327,7 +273,10 @@ spec:
|
|||||||
description: Optional ProxyURL.
|
description: Optional ProxyURL.
|
||||||
type: string
|
type: string
|
||||||
scheme:
|
scheme:
|
||||||
description: HTTP scheme to use for scraping. Defaults to `http`.
|
description: HTTP scheme to use for scraping. `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. If empty, Prometheus uses the default value `http`.
|
||||||
|
enum:
|
||||||
|
- http
|
||||||
|
- https
|
||||||
type: string
|
type: string
|
||||||
url:
|
url:
|
||||||
description: Mandatory URL of the prober.
|
description: Mandatory URL of the prober.
|
||||||
@@ -336,35 +285,28 @@ spec:
|
|||||||
- url
|
- url
|
||||||
type: object
|
type: object
|
||||||
sampleLimit:
|
sampleLimit:
|
||||||
description: SampleLimit defines per-scrape limit on number of scraped
|
description: SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
|
||||||
samples that will be accepted.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
scrapeTimeout:
|
scrapeTimeout:
|
||||||
description: Timeout for scraping metrics from the Prometheus exporter.
|
description: Timeout for scraping metrics from the Prometheus exporter. If not specified, the Prometheus global scrape timeout is used.
|
||||||
If not specified, the Prometheus global scrape interval is used.
|
|
||||||
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||||
type: string
|
type: string
|
||||||
targetLimit:
|
targetLimit:
|
||||||
description: TargetLimit defines a limit on the number of scraped
|
description: TargetLimit defines a limit on the number of scraped targets that will be accepted.
|
||||||
targets that will be accepted.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
targets:
|
targets:
|
||||||
description: Targets defines a set of static or dynamically discovered
|
description: Targets defines a set of static or dynamically discovered targets to probe.
|
||||||
targets to probe.
|
|
||||||
properties:
|
properties:
|
||||||
ingress:
|
ingress:
|
||||||
description: ingress defines the Ingress objects to probe and
|
description: ingress defines the Ingress objects to probe and the relabeling configuration. If `staticConfig` is also defined, `staticConfig` takes precedence.
|
||||||
the relabeling configuration. If `staticConfig` is also defined,
|
|
||||||
`staticConfig` takes precedence.
|
|
||||||
properties:
|
properties:
|
||||||
namespaceSelector:
|
namespaceSelector:
|
||||||
description: From which namespaces to select Ingress objects.
|
description: From which namespaces to select Ingress objects.
|
||||||
properties:
|
properties:
|
||||||
any:
|
any:
|
||||||
description: Boolean describing whether all namespaces
|
description: Boolean describing whether all namespaces are selected in contrast to a list restricting them.
|
||||||
are selected in contrast to a list restricting them.
|
|
||||||
type: boolean
|
type: boolean
|
||||||
matchNames:
|
matchNames:
|
||||||
description: List of namespace names to select from.
|
description: List of namespace names to select from.
|
||||||
@@ -373,23 +315,13 @@ spec:
|
|||||||
type: array
|
type: array
|
||||||
type: object
|
type: object
|
||||||
relabelingConfigs:
|
relabelingConfigs:
|
||||||
description: 'RelabelConfigs to apply to the label set of
|
description: 'RelabelConfigs to apply to the label set of the target before it gets scraped. The original ingress address is available via the `__tmp_prometheus_ingress_address` label. It can be used to customize the probed URL. The original scrape job''s name is available via the `__tmp_prometheus_job_name` label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'
|
||||||
the target before it gets scraped. The original ingress
|
|
||||||
address is available via the `__tmp_prometheus_ingress_address`
|
|
||||||
label. It can be used to customize the probed URL. The original
|
|
||||||
scrape job''s name is available via the `__tmp_prometheus_job_name`
|
|
||||||
label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'
|
|
||||||
items:
|
items:
|
||||||
description: 'RelabelConfig allows dynamic rewriting of
|
description: "RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config"
|
||||||
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:
|
properties:
|
||||||
action:
|
action:
|
||||||
default: replace
|
default: replace
|
||||||
description: Action to perform based on regex matching.
|
description: "Action to perform based on the regex matching. \n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \n Default: \"Replace\""
|
||||||
Default is 'replace'. uppercase and lowercase actions
|
|
||||||
require Prometheus >= 2.36.
|
|
||||||
enum:
|
enum:
|
||||||
- replace
|
- replace
|
||||||
- Replace
|
- Replace
|
||||||
@@ -409,41 +341,33 @@ spec:
|
|||||||
- Lowercase
|
- Lowercase
|
||||||
- uppercase
|
- uppercase
|
||||||
- Uppercase
|
- Uppercase
|
||||||
|
- keepequal
|
||||||
|
- KeepEqual
|
||||||
|
- dropequal
|
||||||
|
- DropEqual
|
||||||
type: string
|
type: string
|
||||||
modulus:
|
modulus:
|
||||||
description: Modulus to take of the hash of the source
|
description: "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`."
|
||||||
label values.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
regex:
|
regex:
|
||||||
description: Regular expression against which the extracted
|
description: Regular expression against which the extracted value is matched.
|
||||||
value is matched. Default is '(.*)'
|
|
||||||
type: string
|
type: string
|
||||||
replacement:
|
replacement:
|
||||||
description: Replacement value against which a regex
|
description: "Replacement value against which a Replace action is performed if the regular expression matches. \n Regex capture groups are available."
|
||||||
replace is performed if the regular expression matches.
|
|
||||||
Regex capture groups are available. Default is '$1'
|
|
||||||
type: string
|
type: string
|
||||||
separator:
|
separator:
|
||||||
description: Separator placed between concatenated source
|
description: Separator is the string between concatenated SourceLabels.
|
||||||
label values. default is ';'.
|
|
||||||
type: string
|
type: string
|
||||||
sourceLabels:
|
sourceLabels:
|
||||||
description: The source labels select values from existing
|
description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.
|
||||||
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:
|
||||||
description: LabelName is a valid Prometheus label
|
description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.
|
||||||
name which may only contain ASCII letters, numbers,
|
|
||||||
as well as underscores.
|
|
||||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
targetLabel:
|
targetLabel:
|
||||||
description: Label to which the resulting value is written
|
description: "Label to which the resulting string is written in a replacement. \n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \n Regex capture groups are available."
|
||||||
in a replace action. It is mandatory for replace actions.
|
|
||||||
Regex capture groups are available.
|
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
@@ -451,29 +375,18 @@ spec:
|
|||||||
description: Selector to select the Ingress objects.
|
description: Selector to select the Ingress objects.
|
||||||
properties:
|
properties:
|
||||||
matchExpressions:
|
matchExpressions:
|
||||||
description: matchExpressions is a list of label selector
|
description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
|
||||||
requirements. The requirements are ANDed.
|
|
||||||
items:
|
items:
|
||||||
description: A label selector requirement is a selector
|
description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
|
||||||
that contains values, a key, and an operator that
|
|
||||||
relates the key and values.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: key is the label key that the selector
|
description: key is the label key that the selector applies to.
|
||||||
applies to.
|
|
||||||
type: string
|
type: string
|
||||||
operator:
|
operator:
|
||||||
description: operator represents a key's relationship
|
description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
|
||||||
to a set of values. Valid operators are In, NotIn,
|
|
||||||
Exists and DoesNotExist.
|
|
||||||
type: string
|
type: string
|
||||||
values:
|
values:
|
||||||
description: values is an array of 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.
|
||||||
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:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
@@ -485,40 +398,27 @@ spec:
|
|||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
description: matchLabels is a map of {key,value} pairs.
|
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.
|
||||||
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
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
type: object
|
type: object
|
||||||
staticConfig:
|
staticConfig:
|
||||||
description: 'staticConfig defines the static list of targets
|
description: 'staticConfig defines the static list of targets to probe and the relabeling configuration. If `ingress` is also defined, `staticConfig` takes precedence. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config.'
|
||||||
to probe and the relabeling configuration. If `ingress` is also
|
|
||||||
defined, `staticConfig` takes precedence. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config.'
|
|
||||||
properties:
|
properties:
|
||||||
labels:
|
labels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
description: Labels assigned to all metrics scraped from the
|
description: Labels assigned to all metrics scraped from the targets.
|
||||||
targets.
|
|
||||||
type: object
|
type: object
|
||||||
relabelingConfigs:
|
relabelingConfigs:
|
||||||
description: 'RelabelConfigs to apply to the label set of
|
description: 'RelabelConfigs to apply to the label set of the targets before it gets scraped. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'
|
||||||
the targets before it gets scraped. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'
|
|
||||||
items:
|
items:
|
||||||
description: 'RelabelConfig allows dynamic rewriting of
|
description: "RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config"
|
||||||
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:
|
properties:
|
||||||
action:
|
action:
|
||||||
default: replace
|
default: replace
|
||||||
description: Action to perform based on regex matching.
|
description: "Action to perform based on the regex matching. \n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \n Default: \"Replace\""
|
||||||
Default is 'replace'. uppercase and lowercase actions
|
|
||||||
require Prometheus >= 2.36.
|
|
||||||
enum:
|
enum:
|
||||||
- replace
|
- replace
|
||||||
- Replace
|
- Replace
|
||||||
@@ -538,41 +438,33 @@ spec:
|
|||||||
- Lowercase
|
- Lowercase
|
||||||
- uppercase
|
- uppercase
|
||||||
- Uppercase
|
- Uppercase
|
||||||
|
- keepequal
|
||||||
|
- KeepEqual
|
||||||
|
- dropequal
|
||||||
|
- DropEqual
|
||||||
type: string
|
type: string
|
||||||
modulus:
|
modulus:
|
||||||
description: Modulus to take of the hash of the source
|
description: "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`."
|
||||||
label values.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
regex:
|
regex:
|
||||||
description: Regular expression against which the extracted
|
description: Regular expression against which the extracted value is matched.
|
||||||
value is matched. Default is '(.*)'
|
|
||||||
type: string
|
type: string
|
||||||
replacement:
|
replacement:
|
||||||
description: Replacement value against which a regex
|
description: "Replacement value against which a Replace action is performed if the regular expression matches. \n Regex capture groups are available."
|
||||||
replace is performed if the regular expression matches.
|
|
||||||
Regex capture groups are available. Default is '$1'
|
|
||||||
type: string
|
type: string
|
||||||
separator:
|
separator:
|
||||||
description: Separator placed between concatenated source
|
description: Separator is the string between concatenated SourceLabels.
|
||||||
label values. default is ';'.
|
|
||||||
type: string
|
type: string
|
||||||
sourceLabels:
|
sourceLabels:
|
||||||
description: The source labels select values from existing
|
description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.
|
||||||
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:
|
||||||
description: LabelName is a valid Prometheus label
|
description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.
|
||||||
name which may only contain ASCII letters, numbers,
|
|
||||||
as well as underscores.
|
|
||||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
targetLabel:
|
targetLabel:
|
||||||
description: Label to which the resulting value is written
|
description: "Label to which the resulting string is written in a replacement. \n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \n Regex capture groups are available."
|
||||||
in a replace action. It is mandatory for replace actions.
|
|
||||||
Regex capture groups are available.
|
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
@@ -587,8 +479,7 @@ spec:
|
|||||||
description: TLS configuration to use when scraping the endpoint.
|
description: TLS configuration to use when scraping the endpoint.
|
||||||
properties:
|
properties:
|
||||||
ca:
|
ca:
|
||||||
description: Certificate authority used when verifying server
|
description: Certificate authority used when verifying server certificates.
|
||||||
certificates.
|
|
||||||
properties:
|
properties:
|
||||||
configMap:
|
configMap:
|
||||||
description: ConfigMap containing data to use for the targets.
|
description: ConfigMap containing data to use for the targets.
|
||||||
@@ -597,12 +488,10 @@ spec:
|
|||||||
description: The key to select.
|
description: The key to select.
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the ConfigMap or its key
|
description: Specify whether the ConfigMap or its key must be defined
|
||||||
must be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -612,16 +501,13 @@ spec:
|
|||||||
description: Secret containing data to use for the targets.
|
description: Secret containing data to use for the targets.
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must
|
description: Specify whether the Secret or its key must be defined
|
||||||
be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -638,12 +524,10 @@ spec:
|
|||||||
description: The key to select.
|
description: The key to select.
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the ConfigMap or its key
|
description: Specify whether the ConfigMap or its key must be defined
|
||||||
must be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -653,16 +537,13 @@ spec:
|
|||||||
description: Secret containing data to use for the targets.
|
description: Secret containing data to use for the targets.
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must
|
description: Specify whether the Secret or its key must be defined
|
||||||
be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -676,16 +557,13 @@ spec:
|
|||||||
description: Secret containing the client key file for the targets.
|
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
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must be
|
description: Specify whether the Secret or its key must be defined
|
||||||
defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
5301
manifests/setup/0prometheusagentCustomResourceDefinition.yaml
Normal file
5301
manifests/setup/0prometheusagentCustomResourceDefinition.yaml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.9.2
|
controller-gen.kubebuilder.io/version: v0.11.1
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
name: prometheusrules.monitoring.coreos.com
|
name: prometheusrules.monitoring.coreos.com
|
||||||
spec:
|
spec:
|
||||||
@@ -21,18 +21,13 @@ spec:
|
|||||||
- name: v1
|
- name: v1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: PrometheusRule defines recording and alerting rules for a Prometheus
|
description: PrometheusRule defines recording and alerting rules for a Prometheus instance
|
||||||
instance
|
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
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'
|
||||||
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
|
type: string
|
||||||
kind:
|
kind:
|
||||||
description: 'Kind is a string value representing the REST resource this
|
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'
|
||||||
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
|
type: string
|
||||||
metadata:
|
metadata:
|
||||||
type: object
|
type: object
|
||||||
@@ -42,40 +37,35 @@ spec:
|
|||||||
groups:
|
groups:
|
||||||
description: Content of Prometheus rule file
|
description: Content of Prometheus rule file
|
||||||
items:
|
items:
|
||||||
description: RuleGroup is a list of sequentially evaluated recording
|
description: RuleGroup is a list of sequentially evaluated recording and alerting rules.
|
||||||
and alerting rules.
|
|
||||||
properties:
|
properties:
|
||||||
interval:
|
interval:
|
||||||
description: Interval determines how often rules in the group
|
description: Interval determines how often rules in the group are evaluated.
|
||||||
are evaluated.
|
|
||||||
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||||
type: string
|
type: string
|
||||||
|
limit:
|
||||||
|
description: Limit the number of alerts an alerting rule and series a recording rule can produce. Limit is supported starting with Prometheus >= 2.31 and Thanos Ruler >= 0.24.
|
||||||
|
type: integer
|
||||||
name:
|
name:
|
||||||
description: Name of the rule group.
|
description: Name of the rule group.
|
||||||
minLength: 1
|
minLength: 1
|
||||||
type: string
|
type: string
|
||||||
partial_response_strategy:
|
partial_response_strategy:
|
||||||
description: 'PartialResponseStrategy is only used by ThanosRuler
|
description: 'PartialResponseStrategy is only used by ThanosRuler and will be ignored by Prometheus instances. More info: https://github.com/thanos-io/thanos/blob/main/docs/components/rule.md#partial-response'
|
||||||
and will be ignored by Prometheus instances. More info: https://github.com/thanos-io/thanos/blob/main/docs/components/rule.md#partial-response'
|
|
||||||
pattern: ^(?i)(abort|warn)?$
|
pattern: ^(?i)(abort|warn)?$
|
||||||
type: string
|
type: string
|
||||||
rules:
|
rules:
|
||||||
description: List of alerting and recording rules.
|
description: List of alerting and recording rules.
|
||||||
items:
|
items:
|
||||||
description: 'Rule describes an alerting or recording rule
|
description: 'Rule describes an alerting or recording rule See Prometheus documentation: [alerting](https://www.prometheus.io/docs/prometheus/latest/configuration/alerting_rules/) or [recording](https://www.prometheus.io/docs/prometheus/latest/configuration/recording_rules/#recording-rules) rule'
|
||||||
See Prometheus documentation: [alerting](https://www.prometheus.io/docs/prometheus/latest/configuration/alerting_rules/)
|
|
||||||
or [recording](https://www.prometheus.io/docs/prometheus/latest/configuration/recording_rules/#recording-rules)
|
|
||||||
rule'
|
|
||||||
properties:
|
properties:
|
||||||
alert:
|
alert:
|
||||||
description: Name of the alert. Must be a valid label
|
description: Name of the alert. Must be a valid label value. Only one of `record` and `alert` must be set.
|
||||||
value. Only one of `record` and `alert` must be set.
|
|
||||||
type: string
|
type: string
|
||||||
annotations:
|
annotations:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
description: Annotations to add to each alert. Only valid
|
description: Annotations to add to each alert. Only valid for alerting rules.
|
||||||
for alerting rules.
|
|
||||||
type: object
|
type: object
|
||||||
expr:
|
expr:
|
||||||
anyOf:
|
anyOf:
|
||||||
@@ -84,8 +74,12 @@ spec:
|
|||||||
description: PromQL expression to evaluate.
|
description: PromQL expression to evaluate.
|
||||||
x-kubernetes-int-or-string: true
|
x-kubernetes-int-or-string: true
|
||||||
for:
|
for:
|
||||||
description: Alerts are considered firing once they have
|
description: Alerts are considered firing once they have been returned for this long.
|
||||||
been returned for this long.
|
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||||
|
type: string
|
||||||
|
keep_firing_for:
|
||||||
|
description: KeepFiringFor defines how long an alert will continue firing after the condition that triggered it has cleared.
|
||||||
|
minLength: 1
|
||||||
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||||
type: string
|
type: string
|
||||||
labels:
|
labels:
|
||||||
@@ -94,9 +88,7 @@ spec:
|
|||||||
description: Labels to add or overwrite.
|
description: Labels to add or overwrite.
|
||||||
type: object
|
type: object
|
||||||
record:
|
record:
|
||||||
description: Name of the time series to output to. Must
|
description: Name of the time series to output to. Must be a valid metric name. Only one of `record` and `alert` must be set.
|
||||||
be a valid metric name. Only one of `record` and `alert`
|
|
||||||
must be set.
|
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- expr
|
- expr
|
||||||
@@ -104,7 +96,6 @@ spec:
|
|||||||
type: array
|
type: array
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
- rules
|
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
x-kubernetes-list-map-keys:
|
x-kubernetes-list-map-keys:
|
||||||
|
|||||||
856
manifests/setup/0scrapeconfigCustomResourceDefinition.yaml
Normal file
856
manifests/setup/0scrapeconfigCustomResourceDefinition.yaml
Normal file
@@ -0,0 +1,856 @@
|
|||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.11.1
|
||||||
|
creationTimestamp: null
|
||||||
|
name: scrapeconfigs.monitoring.coreos.com
|
||||||
|
spec:
|
||||||
|
group: monitoring.coreos.com
|
||||||
|
names:
|
||||||
|
categories:
|
||||||
|
- prometheus-operator
|
||||||
|
kind: ScrapeConfig
|
||||||
|
listKind: ScrapeConfigList
|
||||||
|
plural: scrapeconfigs
|
||||||
|
shortNames:
|
||||||
|
- scfg
|
||||||
|
singular: scrapeconfig
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: ScrapeConfig defines a namespaced Prometheus scrape_config to be aggregated across multiple namespaces into the Prometheus configuration.
|
||||||
|
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: ScrapeConfigSpec is a specification of the desired configuration for a scrape configuration.
|
||||||
|
properties:
|
||||||
|
authorization:
|
||||||
|
description: Authorization header to use on every scrape request.
|
||||||
|
properties:
|
||||||
|
credentials:
|
||||||
|
description: Selects a key of a Secret in the namespace that contains the credentials 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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type:
|
||||||
|
description: "Defines the authentication type. The value is case-insensitive. \n \"Basic\" is not a supported value. \n Default: \"Bearer\""
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
basicAuth:
|
||||||
|
description: BasicAuth information to use on every scrape request.
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: object
|
||||||
|
consulSDConfigs:
|
||||||
|
description: ConsulSDConfigs defines a list of Consul service discovery configurations.
|
||||||
|
items:
|
||||||
|
description: ConsulSDConfig defines a Consul service discovery configuration See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#consul_sd_config
|
||||||
|
properties:
|
||||||
|
allow_stale:
|
||||||
|
description: Allow stale Consul results (see https://www.consul.io/api/features/consistency.html). Will reduce load on Consul. If unset, Prometheus uses its default value.
|
||||||
|
type: boolean
|
||||||
|
authorization:
|
||||||
|
description: Authorization header configuration to authenticate against the Consul Server.
|
||||||
|
properties:
|
||||||
|
credentials:
|
||||||
|
description: Selects a key of a Secret in the namespace that contains the credentials 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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type:
|
||||||
|
description: "Defines the authentication type. The value is case-insensitive. \n \"Basic\" is not a supported value. \n Default: \"Bearer\""
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
basicAuth:
|
||||||
|
description: 'BasicAuth information to authenticate against the Consul Server. 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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: object
|
||||||
|
datacenter:
|
||||||
|
description: Consul Datacenter name, if not provided it will use the local Consul Agent Datacenter.
|
||||||
|
type: string
|
||||||
|
enable_http2:
|
||||||
|
description: Whether to enable HTTP2. If unset, Prometheus uses its default value.
|
||||||
|
type: boolean
|
||||||
|
follow_redirects:
|
||||||
|
description: Configure whether HTTP requests follow HTTP 3xx redirects. If unset, Prometheus uses its default value.
|
||||||
|
type: boolean
|
||||||
|
namespace:
|
||||||
|
description: Namespaces are only supported in Consul Enterprise.
|
||||||
|
type: string
|
||||||
|
no_proxy:
|
||||||
|
description: Comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.
|
||||||
|
type: string
|
||||||
|
node_meta:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: Node metadata key/value pairs to filter nodes for a given service.
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
oauth2:
|
||||||
|
description: Optional OAuth 2.0 configuration.
|
||||||
|
properties:
|
||||||
|
clientId:
|
||||||
|
description: The secret or configmap containing the OAuth2 client id
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: object
|
||||||
|
clientSecret:
|
||||||
|
description: The secret containing the OAuth2 client secret
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
endpointParams:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: Parameters to append to the token URL
|
||||||
|
type: object
|
||||||
|
scopes:
|
||||||
|
description: OAuth2 scopes used for the token request
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
tokenUrl:
|
||||||
|
description: The URL to fetch the token from
|
||||||
|
minLength: 1
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- clientId
|
||||||
|
- clientSecret
|
||||||
|
- tokenUrl
|
||||||
|
type: object
|
||||||
|
partition:
|
||||||
|
description: Admin Partitions are only supported in Consul Enterprise.
|
||||||
|
type: string
|
||||||
|
proxy_connect_header:
|
||||||
|
additionalProperties:
|
||||||
|
description: SecretKeySelector selects a key of a Secret.
|
||||||
|
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
|
||||||
|
description: Specifies headers to send to proxies during CONNECT requests.
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
proxy_from_environment:
|
||||||
|
description: Use proxy URL indicated by environment variables (HTTP_PROXY, https_proxy, HTTPs_PROXY, https_proxy, and no_proxy) If unset, Prometheus uses its default value.
|
||||||
|
type: boolean
|
||||||
|
proxy_url:
|
||||||
|
description: Optional proxy URL.
|
||||||
|
type: string
|
||||||
|
refresh_interval:
|
||||||
|
description: The time after which the provided names are refreshed. On large setup it might be a good idea to increase this value because the catalog will change all the time. If unset, Prometheus uses its default value.
|
||||||
|
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||||
|
type: string
|
||||||
|
scheme:
|
||||||
|
description: HTTP Scheme default "http"
|
||||||
|
enum:
|
||||||
|
- HTTP
|
||||||
|
- HTTPS
|
||||||
|
type: string
|
||||||
|
server:
|
||||||
|
description: A valid string consisting of a hostname or IP followed by an optional port number.
|
||||||
|
minLength: 1
|
||||||
|
type: string
|
||||||
|
services:
|
||||||
|
description: A list of services for which targets are retrieved. If omitted, all services are scraped.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
tag_separator:
|
||||||
|
description: The string by which Consul tags are joined into the tag label. If unset, Prometheus uses its default value.
|
||||||
|
type: string
|
||||||
|
tags:
|
||||||
|
description: An optional list of tags used to filter nodes for a given service. Services must contain all tags in the list.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
tlsConfig:
|
||||||
|
description: TLS Config
|
||||||
|
properties:
|
||||||
|
ca:
|
||||||
|
description: Certificate authority used when verifying server certificates.
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: object
|
||||||
|
cert:
|
||||||
|
description: Client certificate to present when doing client-authentication.
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: object
|
||||||
|
insecureSkipVerify:
|
||||||
|
description: Disable target certificate validation.
|
||||||
|
type: boolean
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
serverName:
|
||||||
|
description: Used to verify the hostname for the targets.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
tokenRef:
|
||||||
|
description: Consul ACL TokenRef, if not provided it will use the ACL from the local Consul Agent.
|
||||||
|
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
|
||||||
|
required:
|
||||||
|
- server
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
fileSDConfigs:
|
||||||
|
description: FileSDConfigs defines a list of file service discovery configurations.
|
||||||
|
items:
|
||||||
|
description: FileSDConfig defines a Prometheus file service discovery configuration See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config
|
||||||
|
properties:
|
||||||
|
files:
|
||||||
|
description: 'List of files to be used for file discovery. Recommendation: use absolute paths. While relative paths work, the prometheus-operator project makes no guarantees about the working directory where the configuration file is stored. Files must be mounted using Prometheus.ConfigMaps or Prometheus.Secrets.'
|
||||||
|
items:
|
||||||
|
description: SDFile represents a file used for service discovery
|
||||||
|
pattern: ^[^*]*(\*[^/]*)?\.(json|yml|yaml|JSON|YML|YAML)$
|
||||||
|
type: string
|
||||||
|
minItems: 1
|
||||||
|
type: array
|
||||||
|
refreshInterval:
|
||||||
|
description: RefreshInterval configures the refresh interval at which Prometheus will reload the content of the files.
|
||||||
|
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- files
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
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
|
||||||
|
httpSDConfigs:
|
||||||
|
description: HTTPSDConfigs defines a list of HTTP service discovery configurations.
|
||||||
|
items:
|
||||||
|
description: HTTPSDConfig defines a prometheus HTTP service discovery configuration See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#http_sd_config
|
||||||
|
properties:
|
||||||
|
authorization:
|
||||||
|
description: Authorization header configuration to authenticate against the target HTTP endpoint.
|
||||||
|
properties:
|
||||||
|
credentials:
|
||||||
|
description: Selects a key of a Secret in the namespace that contains the credentials 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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type:
|
||||||
|
description: "Defines the authentication type. The value is case-insensitive. \n \"Basic\" is not a supported value. \n Default: \"Bearer\""
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
basicAuth:
|
||||||
|
description: 'BasicAuth information to authenticate against the target HTTP endpoint. 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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: object
|
||||||
|
refreshInterval:
|
||||||
|
description: RefreshInterval configures the refresh interval at which Prometheus will re-query the endpoint to update the target list.
|
||||||
|
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||||
|
type: string
|
||||||
|
tlsConfig:
|
||||||
|
description: TLS configuration applying to the target HTTP endpoint.
|
||||||
|
properties:
|
||||||
|
ca:
|
||||||
|
description: Certificate authority used when verifying server certificates.
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: object
|
||||||
|
cert:
|
||||||
|
description: Client certificate to present when doing client-authentication.
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: object
|
||||||
|
insecureSkipVerify:
|
||||||
|
description: Disable target certificate validation.
|
||||||
|
type: boolean
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
serverName:
|
||||||
|
description: Used to verify the hostname for the targets.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
url:
|
||||||
|
description: URL from which the targets are fetched.
|
||||||
|
minLength: 1
|
||||||
|
pattern: ^http(s)?://.+$
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- url
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
kubernetesSDConfigs:
|
||||||
|
description: KubernetesSDConfigs defines a list of Kubernetes service discovery configurations.
|
||||||
|
items:
|
||||||
|
description: KubernetesSDConfig allows retrieving scrape targets from Kubernetes' REST API. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config
|
||||||
|
properties:
|
||||||
|
role:
|
||||||
|
description: Role of the Kubernetes entities that should be discovered. Currently the only supported role is "Node".
|
||||||
|
enum:
|
||||||
|
- Node
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- role
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
labelLimit:
|
||||||
|
description: Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
labelNameLengthLimit:
|
||||||
|
description: Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
labelValueLengthLimit:
|
||||||
|
description: Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
metricsPath:
|
||||||
|
description: MetricsPath HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. /metrics).
|
||||||
|
type: string
|
||||||
|
relabelings:
|
||||||
|
description: 'RelabelConfigs defines how to rewrite the target''s labels before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. The original scrape job''s name is available via the `__tmp_prometheus_job_name` label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'
|
||||||
|
items:
|
||||||
|
description: "RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config"
|
||||||
|
properties:
|
||||||
|
action:
|
||||||
|
default: replace
|
||||||
|
description: "Action to perform based on the regex matching. \n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \n Default: \"Replace\""
|
||||||
|
enum:
|
||||||
|
- replace
|
||||||
|
- Replace
|
||||||
|
- keep
|
||||||
|
- Keep
|
||||||
|
- drop
|
||||||
|
- Drop
|
||||||
|
- hashmod
|
||||||
|
- HashMod
|
||||||
|
- labelmap
|
||||||
|
- LabelMap
|
||||||
|
- labeldrop
|
||||||
|
- LabelDrop
|
||||||
|
- labelkeep
|
||||||
|
- LabelKeep
|
||||||
|
- lowercase
|
||||||
|
- Lowercase
|
||||||
|
- uppercase
|
||||||
|
- Uppercase
|
||||||
|
- keepequal
|
||||||
|
- KeepEqual
|
||||||
|
- dropequal
|
||||||
|
- DropEqual
|
||||||
|
type: string
|
||||||
|
modulus:
|
||||||
|
description: "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`."
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
regex:
|
||||||
|
description: Regular expression against which the extracted value is matched.
|
||||||
|
type: string
|
||||||
|
replacement:
|
||||||
|
description: "Replacement value against which a Replace action is performed if the regular expression matches. \n Regex capture groups are available."
|
||||||
|
type: string
|
||||||
|
separator:
|
||||||
|
description: Separator is the string between concatenated SourceLabels.
|
||||||
|
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.
|
||||||
|
items:
|
||||||
|
description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.
|
||||||
|
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
targetLabel:
|
||||||
|
description: "Label to which the resulting string is written in a replacement. \n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \n Regex capture groups are available."
|
||||||
|
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
|
||||||
|
scheme:
|
||||||
|
description: Configures the protocol scheme used for requests. If empty, Prometheus uses HTTP by default.
|
||||||
|
enum:
|
||||||
|
- HTTP
|
||||||
|
- HTTPS
|
||||||
|
type: string
|
||||||
|
staticConfigs:
|
||||||
|
description: StaticConfigs defines a list of static targets with a common label set.
|
||||||
|
items:
|
||||||
|
description: StaticConfig defines a Prometheus static configuration. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config
|
||||||
|
properties:
|
||||||
|
labels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: Labels assigned to all metrics scraped from the targets.
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
targets:
|
||||||
|
description: List of targets for this static configuration.
|
||||||
|
items:
|
||||||
|
description: Target represents a target for Prometheus to scrape
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
targetLimit:
|
||||||
|
description: TargetLimit defines a limit on the number of scraped targets that will be accepted.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
tlsConfig:
|
||||||
|
description: TLS configuration to use on every scrape request
|
||||||
|
properties:
|
||||||
|
ca:
|
||||||
|
description: Certificate authority used when verifying server certificates.
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: object
|
||||||
|
cert:
|
||||||
|
description: Client certificate to present when doing client-authentication.
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: object
|
||||||
|
insecureSkipVerify:
|
||||||
|
description: Disable target certificate validation.
|
||||||
|
type: boolean
|
||||||
|
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
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
serverName:
|
||||||
|
description: Used to verify the hostname for the targets.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.9.2
|
controller-gen.kubebuilder.io/version: v0.11.1
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
name: servicemonitors.monitoring.coreos.com
|
name: servicemonitors.monitoring.coreos.com
|
||||||
spec:
|
spec:
|
||||||
@@ -24,103 +24,81 @@ spec:
|
|||||||
description: ServiceMonitor defines monitoring for a set of services.
|
description: ServiceMonitor defines monitoring for a set of services.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
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'
|
||||||
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
|
type: string
|
||||||
kind:
|
kind:
|
||||||
description: 'Kind is a string value representing the REST resource this
|
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'
|
||||||
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
|
type: string
|
||||||
metadata:
|
metadata:
|
||||||
type: object
|
type: object
|
||||||
spec:
|
spec:
|
||||||
description: Specification of desired Service selection for target discovery
|
description: Specification of desired Service selection for target discovery by Prometheus.
|
||||||
by Prometheus.
|
|
||||||
properties:
|
properties:
|
||||||
attachMetadata:
|
attachMetadata:
|
||||||
description: Attaches node metadata to discovered targets. Requires
|
description: Attaches node metadata to discovered targets. Requires Prometheus v2.37.0 and above.
|
||||||
Prometheus v2.37.0 and above.
|
|
||||||
properties:
|
properties:
|
||||||
node:
|
node:
|
||||||
description: When set to true, Prometheus must have permissions
|
description: When set to true, Prometheus must have permissions to get Nodes.
|
||||||
to get Nodes.
|
|
||||||
type: boolean
|
type: boolean
|
||||||
type: object
|
type: object
|
||||||
endpoints:
|
endpoints:
|
||||||
description: A list of endpoints allowed as part of this ServiceMonitor.
|
description: A list of endpoints allowed as part of this ServiceMonitor.
|
||||||
items:
|
items:
|
||||||
description: Endpoint defines a scrapeable endpoint serving Prometheus
|
description: Endpoint defines a scrapeable endpoint serving Prometheus metrics.
|
||||||
metrics.
|
|
||||||
properties:
|
properties:
|
||||||
authorization:
|
authorization:
|
||||||
description: Authorization section for this endpoint
|
description: Authorization section for this endpoint
|
||||||
properties:
|
properties:
|
||||||
credentials:
|
credentials:
|
||||||
description: The secret's key that contains the credentials
|
description: Selects a key of a Secret in the namespace that contains the credentials for authentication.
|
||||||
of the request
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must
|
description: Specify whether the Secret or its key must be defined
|
||||||
be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
type: object
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
type:
|
type:
|
||||||
description: Set the authentication type. Defaults to Bearer,
|
description: "Defines the authentication type. The value is case-insensitive. \n \"Basic\" is not a supported value. \n Default: \"Bearer\""
|
||||||
Basic will cause an error
|
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
basicAuth:
|
basicAuth:
|
||||||
description: 'BasicAuth allow an endpoint to authenticate over
|
description: 'BasicAuth allow an endpoint to authenticate over basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints'
|
||||||
basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints'
|
|
||||||
properties:
|
properties:
|
||||||
password:
|
password:
|
||||||
description: The secret in the service monitor namespace
|
description: The secret in the service monitor namespace that contains the password for authentication.
|
||||||
that contains the password for authentication.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must
|
description: Specify whether the Secret or its key must be defined
|
||||||
be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
type: object
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
username:
|
username:
|
||||||
description: The secret in the service monitor namespace
|
description: The secret in the service monitor namespace that contains the username for authentication.
|
||||||
that contains the username for authentication.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must
|
description: Specify whether the Secret or its key must be defined
|
||||||
be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -131,21 +109,16 @@ spec:
|
|||||||
description: File to read bearer token for scraping targets.
|
description: File to read bearer token for scraping targets.
|
||||||
type: string
|
type: string
|
||||||
bearerTokenSecret:
|
bearerTokenSecret:
|
||||||
description: Secret to mount to read bearer token for scraping
|
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.
|
||||||
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
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must
|
description: Specify whether the Secret or its key must be defined
|
||||||
be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -155,40 +128,29 @@ spec:
|
|||||||
description: Whether to enable HTTP2.
|
description: Whether to enable HTTP2.
|
||||||
type: boolean
|
type: boolean
|
||||||
filterRunning:
|
filterRunning:
|
||||||
description: 'Drop pods that are not running. (Failed, Succeeded).
|
description: 'Drop pods that are not running. (Failed, Succeeded). Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase'
|
||||||
Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase'
|
|
||||||
type: boolean
|
type: boolean
|
||||||
followRedirects:
|
followRedirects:
|
||||||
description: FollowRedirects configures whether scrape requests
|
description: FollowRedirects configures whether scrape requests follow HTTP 3xx redirects.
|
||||||
follow HTTP 3xx redirects.
|
|
||||||
type: boolean
|
type: boolean
|
||||||
honorLabels:
|
honorLabels:
|
||||||
description: HonorLabels chooses the metric's labels on collisions
|
description: HonorLabels chooses the metric's labels on collisions with target labels.
|
||||||
with target labels.
|
|
||||||
type: boolean
|
type: boolean
|
||||||
honorTimestamps:
|
honorTimestamps:
|
||||||
description: HonorTimestamps controls whether Prometheus respects
|
description: HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.
|
||||||
the timestamps present in scraped data.
|
|
||||||
type: boolean
|
type: boolean
|
||||||
interval:
|
interval:
|
||||||
description: Interval at which metrics should be scraped If
|
description: Interval at which metrics should be scraped If not specified Prometheus' global scrape interval is used.
|
||||||
not specified Prometheus' global scrape interval is used.
|
|
||||||
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||||
type: string
|
type: string
|
||||||
metricRelabelings:
|
metricRelabelings:
|
||||||
description: MetricRelabelConfigs to apply to samples before
|
description: MetricRelabelConfigs to apply to samples before ingestion.
|
||||||
ingestion.
|
|
||||||
items:
|
items:
|
||||||
description: 'RelabelConfig allows dynamic rewriting of the
|
description: "RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config"
|
||||||
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:
|
properties:
|
||||||
action:
|
action:
|
||||||
default: replace
|
default: replace
|
||||||
description: Action to perform based on regex matching.
|
description: "Action to perform based on the regex matching. \n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \n Default: \"Replace\""
|
||||||
Default is 'replace'. uppercase and lowercase actions
|
|
||||||
require Prometheus >= 2.36.
|
|
||||||
enum:
|
enum:
|
||||||
- replace
|
- replace
|
||||||
- Replace
|
- Replace
|
||||||
@@ -208,67 +170,53 @@ spec:
|
|||||||
- Lowercase
|
- Lowercase
|
||||||
- uppercase
|
- uppercase
|
||||||
- Uppercase
|
- Uppercase
|
||||||
|
- keepequal
|
||||||
|
- KeepEqual
|
||||||
|
- dropequal
|
||||||
|
- DropEqual
|
||||||
type: string
|
type: string
|
||||||
modulus:
|
modulus:
|
||||||
description: Modulus to take of the hash of the source
|
description: "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`."
|
||||||
label values.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
regex:
|
regex:
|
||||||
description: Regular expression against which the extracted
|
description: Regular expression against which the extracted value is matched.
|
||||||
value is matched. Default is '(.*)'
|
|
||||||
type: string
|
type: string
|
||||||
replacement:
|
replacement:
|
||||||
description: Replacement value against which a regex replace
|
description: "Replacement value against which a Replace action is performed if the regular expression matches. \n Regex capture groups are available."
|
||||||
is performed if the regular expression matches. Regex
|
|
||||||
capture groups are available. Default is '$1'
|
|
||||||
type: string
|
type: string
|
||||||
separator:
|
separator:
|
||||||
description: Separator placed between concatenated source
|
description: Separator is the string between concatenated SourceLabels.
|
||||||
label values. default is ';'.
|
|
||||||
type: string
|
type: string
|
||||||
sourceLabels:
|
sourceLabels:
|
||||||
description: The source labels select values from existing
|
description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.
|
||||||
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:
|
||||||
description: LabelName is a valid Prometheus label name
|
description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.
|
||||||
which may only contain ASCII letters, numbers, as
|
|
||||||
well as underscores.
|
|
||||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
targetLabel:
|
targetLabel:
|
||||||
description: Label to which the resulting value is written
|
description: "Label to which the resulting string is written in a replacement. \n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \n Regex capture groups are available."
|
||||||
in a replace action. It is mandatory for replace actions.
|
|
||||||
Regex capture groups are available.
|
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
oauth2:
|
oauth2:
|
||||||
description: OAuth2 for the URL. Only valid in Prometheus versions
|
description: OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
2.27.0 and newer.
|
|
||||||
properties:
|
properties:
|
||||||
clientId:
|
clientId:
|
||||||
description: The secret or configmap containing the OAuth2
|
description: The secret or configmap containing the OAuth2 client id
|
||||||
client id
|
|
||||||
properties:
|
properties:
|
||||||
configMap:
|
configMap:
|
||||||
description: ConfigMap containing data to use for the
|
description: ConfigMap containing data to use for the targets.
|
||||||
targets.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key to select.
|
description: The key to select.
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind,
|
|
||||||
uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the ConfigMap or its
|
description: Specify whether the ConfigMap or its key must be defined
|
||||||
key must be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -278,17 +226,13 @@ spec:
|
|||||||
description: Secret containing data to use for the targets.
|
description: Secret containing data to use for the targets.
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind,
|
|
||||||
uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key
|
description: Specify whether the Secret or its key must be defined
|
||||||
must be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -299,16 +243,13 @@ spec:
|
|||||||
description: The secret containing the OAuth2 client secret
|
description: The secret containing the OAuth2 client secret
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must
|
description: Specify whether the Secret or its key must be defined
|
||||||
be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -341,34 +282,22 @@ spec:
|
|||||||
description: Optional HTTP URL parameters
|
description: Optional HTTP URL parameters
|
||||||
type: object
|
type: object
|
||||||
path:
|
path:
|
||||||
description: HTTP path to scrape for metrics. If empty, Prometheus
|
description: HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. `/metrics`).
|
||||||
uses the default value (e.g. `/metrics`).
|
|
||||||
type: string
|
type: string
|
||||||
port:
|
port:
|
||||||
description: Name of the service port this endpoint refers to.
|
description: Name of the service port this endpoint refers to. Mutually exclusive with targetPort.
|
||||||
Mutually exclusive with targetPort.
|
|
||||||
type: string
|
type: string
|
||||||
proxyUrl:
|
proxyUrl:
|
||||||
description: ProxyURL eg http://proxyserver:2195 Directs scrapes
|
description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.
|
||||||
to proxy through this endpoint.
|
|
||||||
type: string
|
type: string
|
||||||
relabelings:
|
relabelings:
|
||||||
description: 'RelabelConfigs to apply to samples before scraping.
|
description: 'RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. The original scrape job''s name is available via the `__tmp_prometheus_job_name` label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'
|
||||||
Prometheus Operator automatically adds relabelings for a few
|
|
||||||
standard Kubernetes fields. The original scrape job''s name
|
|
||||||
is available via the `__tmp_prometheus_job_name` label. More
|
|
||||||
info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'
|
|
||||||
items:
|
items:
|
||||||
description: 'RelabelConfig allows dynamic rewriting of the
|
description: "RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config"
|
||||||
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:
|
properties:
|
||||||
action:
|
action:
|
||||||
default: replace
|
default: replace
|
||||||
description: Action to perform based on regex matching.
|
description: "Action to perform based on the regex matching. \n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \n Default: \"Replace\""
|
||||||
Default is 'replace'. uppercase and lowercase actions
|
|
||||||
require Prometheus >= 2.36.
|
|
||||||
enum:
|
enum:
|
||||||
- replace
|
- replace
|
||||||
- Replace
|
- Replace
|
||||||
@@ -388,83 +317,69 @@ spec:
|
|||||||
- Lowercase
|
- Lowercase
|
||||||
- uppercase
|
- uppercase
|
||||||
- Uppercase
|
- Uppercase
|
||||||
|
- keepequal
|
||||||
|
- KeepEqual
|
||||||
|
- dropequal
|
||||||
|
- DropEqual
|
||||||
type: string
|
type: string
|
||||||
modulus:
|
modulus:
|
||||||
description: Modulus to take of the hash of the source
|
description: "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`."
|
||||||
label values.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
regex:
|
regex:
|
||||||
description: Regular expression against which the extracted
|
description: Regular expression against which the extracted value is matched.
|
||||||
value is matched. Default is '(.*)'
|
|
||||||
type: string
|
type: string
|
||||||
replacement:
|
replacement:
|
||||||
description: Replacement value against which a regex replace
|
description: "Replacement value against which a Replace action is performed if the regular expression matches. \n Regex capture groups are available."
|
||||||
is performed if the regular expression matches. Regex
|
|
||||||
capture groups are available. Default is '$1'
|
|
||||||
type: string
|
type: string
|
||||||
separator:
|
separator:
|
||||||
description: Separator placed between concatenated source
|
description: Separator is the string between concatenated SourceLabels.
|
||||||
label values. default is ';'.
|
|
||||||
type: string
|
type: string
|
||||||
sourceLabels:
|
sourceLabels:
|
||||||
description: The source labels select values from existing
|
description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.
|
||||||
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:
|
||||||
description: LabelName is a valid Prometheus label name
|
description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.
|
||||||
which may only contain ASCII letters, numbers, as
|
|
||||||
well as underscores.
|
|
||||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
targetLabel:
|
targetLabel:
|
||||||
description: Label to which the resulting value is written
|
description: "Label to which the resulting string is written in a replacement. \n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \n Regex capture groups are available."
|
||||||
in a replace action. It is mandatory for replace actions.
|
|
||||||
Regex capture groups are available.
|
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
scheme:
|
scheme:
|
||||||
description: HTTP scheme to use for scraping.
|
description: HTTP scheme to use for scraping. `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. If empty, Prometheus uses the default value `http`.
|
||||||
|
enum:
|
||||||
|
- http
|
||||||
|
- https
|
||||||
type: string
|
type: string
|
||||||
scrapeTimeout:
|
scrapeTimeout:
|
||||||
description: Timeout after which the scrape is ended If not
|
description: Timeout after which the scrape is ended If not specified, the Prometheus global scrape timeout is used unless it is less than `Interval` in which the latter is used.
|
||||||
specified, the Prometheus global scrape timeout is used unless
|
|
||||||
it is less than `Interval` in which the latter is used.
|
|
||||||
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||||
type: string
|
type: string
|
||||||
targetPort:
|
targetPort:
|
||||||
anyOf:
|
anyOf:
|
||||||
- type: integer
|
- type: integer
|
||||||
- type: string
|
- type: string
|
||||||
description: Name or number of the target port of the Pod behind
|
description: Name or number of the target port of the Pod behind the Service, the port must be specified with container port property. Mutually exclusive with port.
|
||||||
the Service, the port must be specified with container port
|
|
||||||
property. Mutually exclusive with port.
|
|
||||||
x-kubernetes-int-or-string: true
|
x-kubernetes-int-or-string: true
|
||||||
tlsConfig:
|
tlsConfig:
|
||||||
description: TLS configuration to use when scraping the endpoint
|
description: TLS configuration to use when scraping the endpoint
|
||||||
properties:
|
properties:
|
||||||
ca:
|
ca:
|
||||||
description: Certificate authority used when verifying server
|
description: Certificate authority used when verifying server certificates.
|
||||||
certificates.
|
|
||||||
properties:
|
properties:
|
||||||
configMap:
|
configMap:
|
||||||
description: ConfigMap containing data to use for the
|
description: ConfigMap containing data to use for the targets.
|
||||||
targets.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key to select.
|
description: The key to select.
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind,
|
|
||||||
uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the ConfigMap or its
|
description: Specify whether the ConfigMap or its key must be defined
|
||||||
key must be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -474,17 +389,13 @@ spec:
|
|||||||
description: Secret containing data to use for the targets.
|
description: Secret containing data to use for the targets.
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind,
|
|
||||||
uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key
|
description: Specify whether the Secret or its key must be defined
|
||||||
must be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -492,27 +403,22 @@ spec:
|
|||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
type: object
|
type: object
|
||||||
caFile:
|
caFile:
|
||||||
description: Path to the CA cert in the Prometheus container
|
description: Path to the CA cert in the Prometheus container to use for the targets.
|
||||||
to use for the targets.
|
|
||||||
type: string
|
type: string
|
||||||
cert:
|
cert:
|
||||||
description: Client certificate to present when doing client-authentication.
|
description: Client certificate to present when doing client-authentication.
|
||||||
properties:
|
properties:
|
||||||
configMap:
|
configMap:
|
||||||
description: ConfigMap containing data to use for the
|
description: ConfigMap containing data to use for the targets.
|
||||||
targets.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key to select.
|
description: The key to select.
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind,
|
|
||||||
uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the ConfigMap or its
|
description: Specify whether the ConfigMap or its key must be defined
|
||||||
key must be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -522,17 +428,13 @@ spec:
|
|||||||
description: Secret containing data to use for the targets.
|
description: Secret containing data to use for the targets.
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind,
|
|
||||||
uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key
|
description: Specify whether the Secret or its key must be defined
|
||||||
must be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -540,31 +442,25 @@ spec:
|
|||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
type: object
|
type: object
|
||||||
certFile:
|
certFile:
|
||||||
description: Path to the client cert file in the Prometheus
|
description: Path to the client cert file in the Prometheus container for the targets.
|
||||||
container for the targets.
|
|
||||||
type: string
|
type: string
|
||||||
insecureSkipVerify:
|
insecureSkipVerify:
|
||||||
description: Disable target certificate validation.
|
description: Disable target certificate validation.
|
||||||
type: boolean
|
type: boolean
|
||||||
keyFile:
|
keyFile:
|
||||||
description: Path to the client key file in the Prometheus
|
description: Path to the client key file in the Prometheus container for the targets.
|
||||||
container for the targets.
|
|
||||||
type: string
|
type: string
|
||||||
keySecret:
|
keySecret:
|
||||||
description: Secret containing the client key file for the
|
description: Secret containing the client key file for the targets.
|
||||||
targets.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key of the secret to select from. Must
|
description: The key of the secret to select from. Must be a valid secret key.
|
||||||
be a valid secret key.
|
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
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?'
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
type: string
|
||||||
optional:
|
optional:
|
||||||
description: Specify whether the Secret or its key must
|
description: Specify whether the Secret or its key must be defined
|
||||||
be defined
|
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
@@ -577,38 +473,25 @@ spec:
|
|||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
jobLabel:
|
jobLabel:
|
||||||
description: "JobLabel selects the label from the associated Kubernetes
|
description: "JobLabel selects the label from the associated Kubernetes service which will be used as the `job` label for all metrics. \n For example: If in `ServiceMonitor.spec.jobLabel: foo` and in `Service.metadata.labels.foo: bar`, then the `job=\"bar\"` label is added to all metrics. \n If the value of this field is empty or if the label doesn't exist for the given Service, the `job` label of the metrics defaults to the name of the Kubernetes Service."
|
||||||
service which will be used as the `job` label for all metrics. \n
|
|
||||||
For example: If in `ServiceMonitor.spec.jobLabel: foo` and in `Service.metadata.labels.foo:
|
|
||||||
bar`, then the `job=\"bar\"` label is added to all metrics. \n If
|
|
||||||
the value of this field is empty or if the label doesn't exist for
|
|
||||||
the given Service, the `job` label of the metrics defaults to the
|
|
||||||
name of the Kubernetes Service."
|
|
||||||
type: string
|
type: string
|
||||||
labelLimit:
|
labelLimit:
|
||||||
description: Per-scrape limit on number of labels that will be accepted
|
description: Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
labelNameLengthLimit:
|
labelNameLengthLimit:
|
||||||
description: Per-scrape limit on length of labels name that will be
|
description: Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
accepted for a sample. Only valid in Prometheus versions 2.27.0
|
|
||||||
and newer.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
labelValueLengthLimit:
|
labelValueLengthLimit:
|
||||||
description: Per-scrape limit on length of labels value that will
|
description: Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
be accepted for a sample. Only valid in Prometheus versions 2.27.0
|
|
||||||
and newer.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
namespaceSelector:
|
namespaceSelector:
|
||||||
description: Selector to select which namespaces the Kubernetes Endpoints
|
description: Selector to select which namespaces the Kubernetes Endpoints objects are discovered from.
|
||||||
objects are discovered from.
|
|
||||||
properties:
|
properties:
|
||||||
any:
|
any:
|
||||||
description: Boolean describing whether all namespaces are selected
|
description: Boolean describing whether all namespaces are selected in contrast to a list restricting them.
|
||||||
in contrast to a list restricting them.
|
|
||||||
type: boolean
|
type: boolean
|
||||||
matchNames:
|
matchNames:
|
||||||
description: List of namespace names to select from.
|
description: List of namespace names to select from.
|
||||||
@@ -617,42 +500,30 @@ spec:
|
|||||||
type: array
|
type: array
|
||||||
type: object
|
type: object
|
||||||
podTargetLabels:
|
podTargetLabels:
|
||||||
description: PodTargetLabels transfers labels on the Kubernetes `Pod`
|
description: PodTargetLabels transfers labels on the Kubernetes `Pod` onto the created metrics.
|
||||||
onto the created metrics.
|
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
sampleLimit:
|
sampleLimit:
|
||||||
description: SampleLimit defines per-scrape limit on number of scraped
|
description: SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
|
||||||
samples that will be accepted.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
selector:
|
selector:
|
||||||
description: Selector to select Endpoints objects.
|
description: Selector to select Endpoints objects.
|
||||||
properties:
|
properties:
|
||||||
matchExpressions:
|
matchExpressions:
|
||||||
description: matchExpressions is a list of label selector requirements.
|
description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
|
||||||
The requirements are ANDed.
|
|
||||||
items:
|
items:
|
||||||
description: A label selector requirement is a selector that
|
description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
|
||||||
contains values, a key, and an operator that relates the key
|
|
||||||
and values.
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: key is the label key that the selector applies
|
description: key is the label key that the selector applies to.
|
||||||
to.
|
|
||||||
type: string
|
type: string
|
||||||
operator:
|
operator:
|
||||||
description: operator represents a key's relationship to
|
description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
|
||||||
a set of values. Valid operators are In, NotIn, Exists
|
|
||||||
and DoesNotExist.
|
|
||||||
type: string
|
type: string
|
||||||
values:
|
values:
|
||||||
description: values is an array of string values. If the
|
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.
|
||||||
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:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
@@ -664,23 +535,17 @@ spec:
|
|||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
description: matchLabels is a map of {key,value} pairs. A single
|
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.
|
||||||
{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
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
targetLabels:
|
targetLabels:
|
||||||
description: TargetLabels transfers labels from the Kubernetes `Service`
|
description: TargetLabels transfers labels from the Kubernetes `Service` onto the created metrics.
|
||||||
onto the created metrics.
|
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
targetLimit:
|
targetLimit:
|
||||||
description: TargetLimit defines a limit on the number of scraped
|
description: TargetLimit defines a limit on the number of scraped targets that will be accepted.
|
||||||
targets that will be accepted.
|
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
required:
|
required:
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user