mirror of
https://github.com/prometheus-operator/prometheus-operator.git
synced 2025-04-16 01:06:27 +00:00
feat: Support OutOfOrderTimeWindow
field for PrometheusAgent (#6851)
* update PrometheusAgent Signed-off-by: dongjiang1989 <dongjiang1989@126.com> --------- Signed-off-by: dongjiang1989 <dongjiang1989@126.com>
This commit is contained in:
parent
fabf336014
commit
50d94c0e2e
19 changed files with 290 additions and 60 deletions
107
Documentation/api.md
generated
107
Documentation/api.md
generated
|
@ -2826,6 +2826,21 @@ If unset, the operator assumes the “Endpoints” role.</p>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
|
<code>tsdb</code><br/>
|
||||||
|
<em>
|
||||||
|
<a href="#monitoring.coreos.com/v1.TSDBSpec">
|
||||||
|
TSDBSpec
|
||||||
|
</a>
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<em>(Optional)</em>
|
||||||
|
<p>Defines the runtime reloadable configuration of the timeseries database(TSDB).
|
||||||
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<code>baseImage</code><br/>
|
<code>baseImage</code><br/>
|
||||||
<em>
|
<em>
|
||||||
string
|
string
|
||||||
|
@ -3140,20 +3155,6 @@ ensure only clients authorized to perform these actions can do so.</p>
|
||||||
<a href="https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis">https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis</a></p>
|
<a href="https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis">https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis</a></p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<code>tsdb</code><br/>
|
|
||||||
<em>
|
|
||||||
<a href="#monitoring.coreos.com/v1.TSDBSpec">
|
|
||||||
TSDBSpec
|
|
||||||
</a>
|
|
||||||
</em>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<p>Defines the runtime reloadable configuration of the timeseries database
|
|
||||||
(TSDB).</p>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -7573,6 +7574,21 @@ ServiceDiscoveryRole
|
||||||
If unset, the operator assumes the “Endpoints” role.</p>
|
If unset, the operator assumes the “Endpoints” role.</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>tsdb</code><br/>
|
||||||
|
<em>
|
||||||
|
<a href="#monitoring.coreos.com/v1.TSDBSpec">
|
||||||
|
TSDBSpec
|
||||||
|
</a>
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<em>(Optional)</em>
|
||||||
|
<p>Defines the runtime reloadable configuration of the timeseries database(TSDB).
|
||||||
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<h3 id="monitoring.coreos.com/v1.Condition">Condition
|
<h3 id="monitoring.coreos.com/v1.Condition">Condition
|
||||||
|
@ -11883,6 +11899,21 @@ If unset, the operator assumes the “Endpoints” role.</p>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
|
<code>tsdb</code><br/>
|
||||||
|
<em>
|
||||||
|
<a href="#monitoring.coreos.com/v1.TSDBSpec">
|
||||||
|
TSDBSpec
|
||||||
|
</a>
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<em>(Optional)</em>
|
||||||
|
<p>Defines the runtime reloadable configuration of the timeseries database(TSDB).
|
||||||
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<code>baseImage</code><br/>
|
<code>baseImage</code><br/>
|
||||||
<em>
|
<em>
|
||||||
string
|
string
|
||||||
|
@ -12197,20 +12228,6 @@ ensure only clients authorized to perform these actions can do so.</p>
|
||||||
<a href="https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis">https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis</a></p>
|
<a href="https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis">https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis</a></p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<code>tsdb</code><br/>
|
|
||||||
<em>
|
|
||||||
<a href="#monitoring.coreos.com/v1.TSDBSpec">
|
|
||||||
TSDBSpec
|
|
||||||
</a>
|
|
||||||
</em>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<p>Defines the runtime reloadable configuration of the timeseries database
|
|
||||||
(TSDB).</p>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<h3 id="monitoring.coreos.com/v1.PrometheusStatus">PrometheusStatus
|
<h3 id="monitoring.coreos.com/v1.PrometheusStatus">PrometheusStatus
|
||||||
|
@ -14829,7 +14846,7 @@ string
|
||||||
<h3 id="monitoring.coreos.com/v1.TSDBSpec">TSDBSpec
|
<h3 id="monitoring.coreos.com/v1.TSDBSpec">TSDBSpec
|
||||||
</h3>
|
</h3>
|
||||||
<p>
|
<p>
|
||||||
(<em>Appears on:</em><a href="#monitoring.coreos.com/v1.PrometheusSpec">PrometheusSpec</a>)
|
(<em>Appears on:</em><a href="#monitoring.coreos.com/v1.CommonPrometheusFields">CommonPrometheusFields</a>)
|
||||||
</p>
|
</p>
|
||||||
<div>
|
<div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -14857,7 +14874,7 @@ respect to the TSDB max time.</p>
|
||||||
the timestamp of the sample is >= (TSDB.MaxTime - outOfOrderTimeWindow).</p>
|
the timestamp of the sample is >= (TSDB.MaxTime - outOfOrderTimeWindow).</p>
|
||||||
<p>This is an <em>experimental feature</em>, it may change in any upcoming release
|
<p>This is an <em>experimental feature</em>, it may change in any upcoming release
|
||||||
in a breaking way.</p>
|
in a breaking way.</p>
|
||||||
<p>It requires Prometheus >= v2.39.0.</p>
|
<p>It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@ -18144,6 +18161,21 @@ ServiceDiscoveryRole
|
||||||
If unset, the operator assumes the “Endpoints” role.</p>
|
If unset, the operator assumes the “Endpoints” role.</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>tsdb</code><br/>
|
||||||
|
<em>
|
||||||
|
<a href="#monitoring.coreos.com/v1.TSDBSpec">
|
||||||
|
TSDBSpec
|
||||||
|
</a>
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<em>(Optional)</em>
|
||||||
|
<p>Defines the runtime reloadable configuration of the timeseries database(TSDB).
|
||||||
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -25606,6 +25638,21 @@ ServiceDiscoveryRole
|
||||||
If unset, the operator assumes the “Endpoints” role.</p>
|
If unset, the operator assumes the “Endpoints” role.</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>tsdb</code><br/>
|
||||||
|
<em>
|
||||||
|
<a href="#monitoring.coreos.com/v1.TSDBSpec">
|
||||||
|
TSDBSpec
|
||||||
|
</a>
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<em>(Optional)</em>
|
||||||
|
<p>Defines the runtime reloadable configuration of the timeseries database(TSDB).
|
||||||
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<h3 id="monitoring.coreos.com/v1alpha1.PuppetDBSDConfig">PuppetDBSDConfig
|
<h3 id="monitoring.coreos.com/v1alpha1.PuppetDBSDConfig">PuppetDBSDConfig
|
||||||
|
|
26
bundle.yaml
generated
26
bundle.yaml
generated
|
@ -28422,6 +28422,26 @@ spec:
|
||||||
required:
|
required:
|
||||||
- endpoint
|
- endpoint
|
||||||
type: object
|
type: object
|
||||||
|
tsdb:
|
||||||
|
description: |-
|
||||||
|
Defines the runtime reloadable configuration of the timeseries database(TSDB).
|
||||||
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.
|
||||||
|
properties:
|
||||||
|
outOfOrderTimeWindow:
|
||||||
|
description: |-
|
||||||
|
Configures how old an out-of-order/out-of-bounds sample can be with
|
||||||
|
respect to the TSDB max time.
|
||||||
|
|
||||||
|
An out-of-order/out-of-bounds sample is ingested into the TSDB as long as
|
||||||
|
the timestamp of the sample is >= (TSDB.MaxTime - outOfOrderTimeWindow).
|
||||||
|
|
||||||
|
This is an *experimental feature*, it may change in any upcoming release
|
||||||
|
in a breaking way.
|
||||||
|
|
||||||
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.
|
||||||
|
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: object
|
||||||
version:
|
version:
|
||||||
description: |-
|
description: |-
|
||||||
Version of Prometheus being deployed. The operator uses this information
|
Version of Prometheus being deployed. The operator uses this information
|
||||||
|
@ -41074,8 +41094,8 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
tsdb:
|
tsdb:
|
||||||
description: |-
|
description: |-
|
||||||
Defines the runtime reloadable configuration of the timeseries database
|
Defines the runtime reloadable configuration of the timeseries database(TSDB).
|
||||||
(TSDB).
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.
|
||||||
properties:
|
properties:
|
||||||
outOfOrderTimeWindow:
|
outOfOrderTimeWindow:
|
||||||
description: |-
|
description: |-
|
||||||
|
@ -41088,7 +41108,7 @@ spec:
|
||||||
This is an *experimental feature*, it may change in any upcoming release
|
This is an *experimental feature*, it may change in any upcoming release
|
||||||
in a breaking way.
|
in a breaking way.
|
||||||
|
|
||||||
It requires Prometheus >= v2.39.0.
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.
|
||||||
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
|
||||||
type: object
|
type: object
|
||||||
|
|
|
@ -8249,6 +8249,26 @@ spec:
|
||||||
required:
|
required:
|
||||||
- endpoint
|
- endpoint
|
||||||
type: object
|
type: object
|
||||||
|
tsdb:
|
||||||
|
description: |-
|
||||||
|
Defines the runtime reloadable configuration of the timeseries database(TSDB).
|
||||||
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.
|
||||||
|
properties:
|
||||||
|
outOfOrderTimeWindow:
|
||||||
|
description: |-
|
||||||
|
Configures how old an out-of-order/out-of-bounds sample can be with
|
||||||
|
respect to the TSDB max time.
|
||||||
|
|
||||||
|
An out-of-order/out-of-bounds sample is ingested into the TSDB as long as
|
||||||
|
the timestamp of the sample is >= (TSDB.MaxTime - outOfOrderTimeWindow).
|
||||||
|
|
||||||
|
This is an *experimental feature*, it may change in any upcoming release
|
||||||
|
in a breaking way.
|
||||||
|
|
||||||
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.
|
||||||
|
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: object
|
||||||
version:
|
version:
|
||||||
description: |-
|
description: |-
|
||||||
Version of Prometheus being deployed. The operator uses this information
|
Version of Prometheus being deployed. The operator uses this information
|
||||||
|
|
|
@ -10414,8 +10414,8 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
tsdb:
|
tsdb:
|
||||||
description: |-
|
description: |-
|
||||||
Defines the runtime reloadable configuration of the timeseries database
|
Defines the runtime reloadable configuration of the timeseries database(TSDB).
|
||||||
(TSDB).
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.
|
||||||
properties:
|
properties:
|
||||||
outOfOrderTimeWindow:
|
outOfOrderTimeWindow:
|
||||||
description: |-
|
description: |-
|
||||||
|
@ -10428,7 +10428,7 @@ spec:
|
||||||
This is an *experimental feature*, it may change in any upcoming release
|
This is an *experimental feature*, it may change in any upcoming release
|
||||||
in a breaking way.
|
in a breaking way.
|
||||||
|
|
||||||
It requires Prometheus >= v2.39.0.
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.
|
||||||
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
|
||||||
type: object
|
type: object
|
||||||
|
|
|
@ -8250,6 +8250,26 @@ spec:
|
||||||
required:
|
required:
|
||||||
- endpoint
|
- endpoint
|
||||||
type: object
|
type: object
|
||||||
|
tsdb:
|
||||||
|
description: |-
|
||||||
|
Defines the runtime reloadable configuration of the timeseries database(TSDB).
|
||||||
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.
|
||||||
|
properties:
|
||||||
|
outOfOrderTimeWindow:
|
||||||
|
description: |-
|
||||||
|
Configures how old an out-of-order/out-of-bounds sample can be with
|
||||||
|
respect to the TSDB max time.
|
||||||
|
|
||||||
|
An out-of-order/out-of-bounds sample is ingested into the TSDB as long as
|
||||||
|
the timestamp of the sample is >= (TSDB.MaxTime - outOfOrderTimeWindow).
|
||||||
|
|
||||||
|
This is an *experimental feature*, it may change in any upcoming release
|
||||||
|
in a breaking way.
|
||||||
|
|
||||||
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.
|
||||||
|
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: object
|
||||||
version:
|
version:
|
||||||
description: |-
|
description: |-
|
||||||
Version of Prometheus being deployed. The operator uses this information
|
Version of Prometheus being deployed. The operator uses this information
|
||||||
|
|
|
@ -10415,8 +10415,8 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
tsdb:
|
tsdb:
|
||||||
description: |-
|
description: |-
|
||||||
Defines the runtime reloadable configuration of the timeseries database
|
Defines the runtime reloadable configuration of the timeseries database(TSDB).
|
||||||
(TSDB).
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.
|
||||||
properties:
|
properties:
|
||||||
outOfOrderTimeWindow:
|
outOfOrderTimeWindow:
|
||||||
description: |-
|
description: |-
|
||||||
|
@ -10429,7 +10429,7 @@ spec:
|
||||||
This is an *experimental feature*, it may change in any upcoming release
|
This is an *experimental feature*, it may change in any upcoming release
|
||||||
in a breaking way.
|
in a breaking way.
|
||||||
|
|
||||||
It requires Prometheus >= v2.39.0.
|
It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.
|
||||||
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
|
||||||
type: object
|
type: object
|
||||||
|
|
|
@ -6901,6 +6901,17 @@
|
||||||
],
|
],
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
},
|
||||||
|
"tsdb": {
|
||||||
|
"description": "Defines the runtime reloadable configuration of the timeseries database(TSDB).\nIt requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.",
|
||||||
|
"properties": {
|
||||||
|
"outOfOrderTimeWindow": {
|
||||||
|
"description": "Configures how old an out-of-order/out-of-bounds sample can be with\nrespect to the TSDB max time.\n\nAn out-of-order/out-of-bounds sample is ingested into the TSDB as long as\nthe timestamp of the sample is >= (TSDB.MaxTime - outOfOrderTimeWindow).\n\nThis is an *experimental feature*, it may change in any upcoming release\nin a breaking way.\n\nIt requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.",
|
||||||
|
"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": "object"
|
||||||
|
},
|
||||||
"version": {
|
"version": {
|
||||||
"description": "Version of Prometheus being deployed. The operator uses this information\nto generate the Prometheus StatefulSet + configuration files.\n\nIf not specified, the operator assumes the latest upstream version of\nPrometheus available at the time when the version of the operator was\nreleased.",
|
"description": "Version of Prometheus being deployed. The operator uses this information\nto generate the Prometheus StatefulSet + configuration files.\n\nIf not specified, the operator assumes the latest upstream version of\nPrometheus available at the time when the version of the operator was\nreleased.",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
|
|
@ -8800,10 +8800,10 @@
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
},
|
||||||
"tsdb": {
|
"tsdb": {
|
||||||
"description": "Defines the runtime reloadable configuration of the timeseries database\n(TSDB).",
|
"description": "Defines the runtime reloadable configuration of the timeseries database(TSDB).\nIt requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.",
|
||||||
"properties": {
|
"properties": {
|
||||||
"outOfOrderTimeWindow": {
|
"outOfOrderTimeWindow": {
|
||||||
"description": "Configures how old an out-of-order/out-of-bounds sample can be with\nrespect to the TSDB max time.\n\nAn out-of-order/out-of-bounds sample is ingested into the TSDB as long as\nthe timestamp of the sample is >= (TSDB.MaxTime - outOfOrderTimeWindow).\n\nThis is an *experimental feature*, it may change in any upcoming release\nin a breaking way.\n\nIt requires Prometheus >= v2.39.0.",
|
"description": "Configures how old an out-of-order/out-of-bounds sample can be with\nrespect to the TSDB max time.\n\nAn out-of-order/out-of-bounds sample is ingested into the TSDB as long as\nthe timestamp of the sample is >= (TSDB.MaxTime - outOfOrderTimeWindow).\n\nThis is an *experimental feature*, it may change in any upcoming release\nin a breaking way.\n\nIt requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.",
|
||||||
"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"
|
||||||
}
|
}
|
||||||
|
|
|
@ -787,6 +787,12 @@ type CommonPrometheusFields struct {
|
||||||
//
|
//
|
||||||
// +optional
|
// +optional
|
||||||
ServiceDiscoveryRole *ServiceDiscoveryRole `json:"serviceDiscoveryRole,omitempty"`
|
ServiceDiscoveryRole *ServiceDiscoveryRole `json:"serviceDiscoveryRole,omitempty"`
|
||||||
|
|
||||||
|
// Defines the runtime reloadable configuration of the timeseries database(TSDB).
|
||||||
|
// It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.
|
||||||
|
//
|
||||||
|
// +optional
|
||||||
|
TSDB *TSDBSpec `json:"tsdb,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// +kubebuilder:validation:Enum=HTTP;ProcessSignal
|
// +kubebuilder:validation:Enum=HTTP;ProcessSignal
|
||||||
|
@ -1009,10 +1015,6 @@ type PrometheusSpec struct {
|
||||||
// For more information:
|
// For more information:
|
||||||
// https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis
|
// https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis
|
||||||
EnableAdminAPI bool `json:"enableAdminAPI,omitempty"`
|
EnableAdminAPI bool `json:"enableAdminAPI,omitempty"`
|
||||||
|
|
||||||
// Defines the runtime reloadable configuration of the timeseries database
|
|
||||||
// (TSDB).
|
|
||||||
TSDB TSDBSpec `json:"tsdb,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type PrometheusTracingConfig struct {
|
type PrometheusTracingConfig struct {
|
||||||
|
@ -1881,7 +1883,7 @@ type TSDBSpec struct {
|
||||||
// This is an *experimental feature*, it may change in any upcoming release
|
// This is an *experimental feature*, it may change in any upcoming release
|
||||||
// in a breaking way.
|
// in a breaking way.
|
||||||
//
|
//
|
||||||
// It requires Prometheus >= v2.39.0.
|
// It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.
|
||||||
OutOfOrderTimeWindow Duration `json:"outOfOrderTimeWindow,omitempty"`
|
OutOfOrderTimeWindow Duration `json:"outOfOrderTimeWindow,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
6
pkg/apis/monitoring/v1/zz_generated.deepcopy.go
generated
6
pkg/apis/monitoring/v1/zz_generated.deepcopy.go
generated
|
@ -984,6 +984,11 @@ func (in *CommonPrometheusFields) DeepCopyInto(out *CommonPrometheusFields) {
|
||||||
*out = new(ServiceDiscoveryRole)
|
*out = new(ServiceDiscoveryRole)
|
||||||
**out = **in
|
**out = **in
|
||||||
}
|
}
|
||||||
|
if in.TSDB != nil {
|
||||||
|
in, out := &in.TSDB, &out.TSDB
|
||||||
|
*out = new(TSDBSpec)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CommonPrometheusFields.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CommonPrometheusFields.
|
||||||
|
@ -2152,7 +2157,6 @@ func (in *PrometheusSpec) DeepCopyInto(out *PrometheusSpec) {
|
||||||
*out = new(Exemplars)
|
*out = new(Exemplars)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
out.TSDB = in.TSDB
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrometheusSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrometheusSpec.
|
||||||
|
|
|
@ -109,6 +109,7 @@ type CommonPrometheusFieldsApplyConfiguration struct {
|
||||||
MaximumStartupDurationSeconds *int32 `json:"maximumStartupDurationSeconds,omitempty"`
|
MaximumStartupDurationSeconds *int32 `json:"maximumStartupDurationSeconds,omitempty"`
|
||||||
ScrapeClasses []ScrapeClassApplyConfiguration `json:"scrapeClasses,omitempty"`
|
ScrapeClasses []ScrapeClassApplyConfiguration `json:"scrapeClasses,omitempty"`
|
||||||
ServiceDiscoveryRole *monitoringv1.ServiceDiscoveryRole `json:"serviceDiscoveryRole,omitempty"`
|
ServiceDiscoveryRole *monitoringv1.ServiceDiscoveryRole `json:"serviceDiscoveryRole,omitempty"`
|
||||||
|
TSDB *TSDBSpecApplyConfiguration `json:"tsdb,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CommonPrometheusFieldsApplyConfiguration constructs a declarative configuration of the CommonPrometheusFields type for use with
|
// CommonPrometheusFieldsApplyConfiguration constructs a declarative configuration of the CommonPrometheusFields type for use with
|
||||||
|
@ -844,3 +845,11 @@ func (b *CommonPrometheusFieldsApplyConfiguration) WithServiceDiscoveryRole(valu
|
||||||
b.ServiceDiscoveryRole = &value
|
b.ServiceDiscoveryRole = &value
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithTSDB sets the TSDB field in the declarative configuration to the given value
|
||||||
|
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
|
||||||
|
// If called multiple times, the TSDB field is set to the value of the last call.
|
||||||
|
func (b *CommonPrometheusFieldsApplyConfiguration) WithTSDB(value *TSDBSpecApplyConfiguration) *CommonPrometheusFieldsApplyConfiguration {
|
||||||
|
b.TSDB = value
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
|
@ -48,7 +48,6 @@ type PrometheusSpecApplyConfiguration struct {
|
||||||
Exemplars *ExemplarsApplyConfiguration `json:"exemplars,omitempty"`
|
Exemplars *ExemplarsApplyConfiguration `json:"exemplars,omitempty"`
|
||||||
EvaluationInterval *monitoringv1.Duration `json:"evaluationInterval,omitempty"`
|
EvaluationInterval *monitoringv1.Duration `json:"evaluationInterval,omitempty"`
|
||||||
EnableAdminAPI *bool `json:"enableAdminAPI,omitempty"`
|
EnableAdminAPI *bool `json:"enableAdminAPI,omitempty"`
|
||||||
TSDB *TSDBSpecApplyConfiguration `json:"tsdb,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PrometheusSpecApplyConfiguration constructs a declarative configuration of the PrometheusSpec type for use with
|
// PrometheusSpecApplyConfiguration constructs a declarative configuration of the PrometheusSpec type for use with
|
||||||
|
@ -785,6 +784,14 @@ func (b *PrometheusSpecApplyConfiguration) WithServiceDiscoveryRole(value monito
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithTSDB sets the TSDB field in the declarative configuration to the given value
|
||||||
|
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
|
||||||
|
// If called multiple times, the TSDB field is set to the value of the last call.
|
||||||
|
func (b *PrometheusSpecApplyConfiguration) WithTSDB(value *TSDBSpecApplyConfiguration) *PrometheusSpecApplyConfiguration {
|
||||||
|
b.TSDB = value
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
// WithBaseImage sets the BaseImage field in the declarative configuration to the given value
|
// WithBaseImage sets the BaseImage field in the declarative configuration to the given value
|
||||||
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
|
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
|
||||||
// If called multiple times, the BaseImage field is set to the value of the last call.
|
// If called multiple times, the BaseImage field is set to the value of the last call.
|
||||||
|
@ -962,11 +969,3 @@ func (b *PrometheusSpecApplyConfiguration) WithEnableAdminAPI(value bool) *Prome
|
||||||
b.EnableAdminAPI = &value
|
b.EnableAdminAPI = &value
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithTSDB sets the TSDB field in the declarative configuration to the given value
|
|
||||||
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
|
|
||||||
// If called multiple times, the TSDB field is set to the value of the last call.
|
|
||||||
func (b *PrometheusSpecApplyConfiguration) WithTSDB(value *TSDBSpecApplyConfiguration) *PrometheusSpecApplyConfiguration {
|
|
||||||
b.TSDB = value
|
|
||||||
return b
|
|
||||||
}
|
|
||||||
|
|
|
@ -772,3 +772,11 @@ func (b *PrometheusAgentSpecApplyConfiguration) WithServiceDiscoveryRole(value m
|
||||||
b.ServiceDiscoveryRole = &value
|
b.ServiceDiscoveryRole = &value
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithTSDB sets the TSDB field in the declarative configuration to the given value
|
||||||
|
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
|
||||||
|
// If called multiple times, the TSDB field is set to the value of the last call.
|
||||||
|
func (b *PrometheusAgentSpecApplyConfiguration) WithTSDB(value *v1.TSDBSpecApplyConfiguration) *PrometheusAgentSpecApplyConfiguration {
|
||||||
|
b.TSDB = value
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
|
@ -909,6 +909,7 @@ func (c *Operator) createOrUpdateConfigurationSecret(ctx context.Context, p *mon
|
||||||
pmons,
|
pmons,
|
||||||
bmons,
|
bmons,
|
||||||
scrapeConfigs,
|
scrapeConfigs,
|
||||||
|
p.Spec.TSDB,
|
||||||
store,
|
store,
|
||||||
additionalScrapeConfigs,
|
additionalScrapeConfigs,
|
||||||
)
|
)
|
||||||
|
|
|
@ -704,7 +704,7 @@ func (cg *ConfigGenerator) GenerateServerConfiguration(
|
||||||
queryLogFile string,
|
queryLogFile string,
|
||||||
ruleSelector *metav1.LabelSelector,
|
ruleSelector *metav1.LabelSelector,
|
||||||
exemplars *monitoringv1.Exemplars,
|
exemplars *monitoringv1.Exemplars,
|
||||||
tsdb monitoringv1.TSDBSpec,
|
tsdb *monitoringv1.TSDBSpec,
|
||||||
alerting *monitoringv1.AlertingSpec,
|
alerting *monitoringv1.AlertingSpec,
|
||||||
remoteRead []monitoringv1.RemoteReadSpec,
|
remoteRead []monitoringv1.RemoteReadSpec,
|
||||||
sMons map[string]*monitoringv1.ServiceMonitor,
|
sMons map[string]*monitoringv1.ServiceMonitor,
|
||||||
|
@ -808,7 +808,7 @@ func (cg *ConfigGenerator) GenerateServerConfiguration(
|
||||||
return yaml.Marshal(cfg)
|
return yaml.Marshal(cfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cg *ConfigGenerator) appendStorageSettingsConfig(cfg yaml.MapSlice, exemplars *monitoringv1.Exemplars, tsdb monitoringv1.TSDBSpec) (yaml.MapSlice, error) {
|
func (cg *ConfigGenerator) appendStorageSettingsConfig(cfg yaml.MapSlice, exemplars *monitoringv1.Exemplars, tsdb *monitoringv1.TSDBSpec) (yaml.MapSlice, error) {
|
||||||
var (
|
var (
|
||||||
storage yaml.MapSlice
|
storage yaml.MapSlice
|
||||||
cgStorage = cg.WithMinimumVersion("2.29.0")
|
cgStorage = cg.WithMinimumVersion("2.29.0")
|
||||||
|
@ -823,7 +823,7 @@ func (cg *ConfigGenerator) appendStorageSettingsConfig(cfg yaml.MapSlice, exempl
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if tsdb.OutOfOrderTimeWindow != "" {
|
if tsdb != nil && tsdb.OutOfOrderTimeWindow != "" {
|
||||||
storage = cg.WithMinimumVersion("2.39.0").AppendMapItem(storage, "tsdb", yaml.MapSlice{
|
storage = cg.WithMinimumVersion("2.39.0").AppendMapItem(storage, "tsdb", yaml.MapSlice{
|
||||||
{
|
{
|
||||||
Key: "out_of_order_time_window",
|
Key: "out_of_order_time_window",
|
||||||
|
@ -2519,6 +2519,7 @@ func (cg *ConfigGenerator) GenerateAgentConfiguration(
|
||||||
pMons map[string]*monitoringv1.PodMonitor,
|
pMons map[string]*monitoringv1.PodMonitor,
|
||||||
probes map[string]*monitoringv1.Probe,
|
probes map[string]*monitoringv1.Probe,
|
||||||
sCons map[string]*monitoringv1alpha1.ScrapeConfig,
|
sCons map[string]*monitoringv1alpha1.ScrapeConfig,
|
||||||
|
tsdb *monitoringv1.TSDBSpec,
|
||||||
store *assets.StoreBuilder,
|
store *assets.StoreBuilder,
|
||||||
additionalScrapeConfigs []byte,
|
additionalScrapeConfigs []byte,
|
||||||
) ([]byte, error) {
|
) ([]byte, error) {
|
||||||
|
@ -2564,6 +2565,18 @@ func (cg *ConfigGenerator) GenerateAgentConfiguration(
|
||||||
Value: scrapeConfigs,
|
Value: scrapeConfigs,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// TSDB
|
||||||
|
if tsdb != nil && tsdb.OutOfOrderTimeWindow != "" {
|
||||||
|
var storage yaml.MapSlice
|
||||||
|
storage = cg.AppendMapItem(storage, "tsdb", yaml.MapSlice{
|
||||||
|
{
|
||||||
|
Key: "out_of_order_time_window",
|
||||||
|
Value: tsdb.OutOfOrderTimeWindow,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
cfg = cg.WithMinimumVersion("2.54.0").AppendMapItem(cfg, "storage", storage)
|
||||||
|
}
|
||||||
|
|
||||||
// Remote write config
|
// Remote write config
|
||||||
if len(cpf.RemoteWrite) > 0 {
|
if len(cpf.RemoteWrite) > 0 {
|
||||||
cfg = append(cfg, cg.generateRemoteWriteConfig(store))
|
cfg = append(cfg, cg.generateRemoteWriteConfig(store))
|
||||||
|
|
|
@ -5396,7 +5396,7 @@ func TestTSDBConfig(t *testing.T) {
|
||||||
p.Spec.CommonPrometheusFields.Version = tc.version
|
p.Spec.CommonPrometheusFields.Version = tc.version
|
||||||
}
|
}
|
||||||
if tc.tsdb != nil {
|
if tc.tsdb != nil {
|
||||||
p.Spec.TSDB = *tc.tsdb
|
p.Spec.TSDB = tc.tsdb
|
||||||
}
|
}
|
||||||
|
|
||||||
cg := mustNewConfigGenerator(t, p)
|
cg := mustNewConfigGenerator(t, p)
|
||||||
|
@ -5424,6 +5424,61 @@ func TestTSDBConfig(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestTSDBConfigPrometheusAgent(t *testing.T) {
|
||||||
|
for _, tc := range []struct {
|
||||||
|
name string
|
||||||
|
p *monitoringv1.Prometheus
|
||||||
|
version string
|
||||||
|
tsdb *monitoringv1.TSDBSpec
|
||||||
|
golden string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "PrometheusAgent no TSDB config",
|
||||||
|
golden: "PrometheusAgent_no_TSDB_config.golden",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "PrometheusAgent TSDB config < v2.54.0",
|
||||||
|
version: "v2.53.0",
|
||||||
|
tsdb: &monitoringv1.TSDBSpec{
|
||||||
|
OutOfOrderTimeWindow: monitoringv1.Duration("10m"),
|
||||||
|
},
|
||||||
|
golden: "PrometheusAgent_TSDB_config_less_than_v2.53.0.golden",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
name: "PrometheusAgent TSDB config >= v2.54.0",
|
||||||
|
version: "v2.54.0",
|
||||||
|
tsdb: &monitoringv1.TSDBSpec{
|
||||||
|
OutOfOrderTimeWindow: monitoringv1.Duration("10m"),
|
||||||
|
},
|
||||||
|
golden: "PrometheusAgent_TSDB_config_greater_than_or_equal_to_v2.54.0.golden",
|
||||||
|
},
|
||||||
|
} {
|
||||||
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
p := defaultPrometheus()
|
||||||
|
if tc.version != "" {
|
||||||
|
p.Spec.CommonPrometheusFields.Version = tc.version
|
||||||
|
}
|
||||||
|
if tc.tsdb != nil {
|
||||||
|
p.Spec.TSDB = tc.tsdb
|
||||||
|
}
|
||||||
|
|
||||||
|
cg := mustNewConfigGenerator(t, p)
|
||||||
|
cfg, err := cg.GenerateAgentConfiguration(
|
||||||
|
nil,
|
||||||
|
nil,
|
||||||
|
nil,
|
||||||
|
nil,
|
||||||
|
tc.tsdb,
|
||||||
|
&assets.StoreBuilder{},
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
require.NoError(t, err)
|
||||||
|
golden.Assert(t, string(cfg), tc.golden)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestGenerateRelabelConfig(t *testing.T) {
|
func TestGenerateRelabelConfig(t *testing.T) {
|
||||||
p := defaultPrometheus()
|
p := defaultPrometheus()
|
||||||
|
|
||||||
|
|
9
pkg/prometheus/testdata/PrometheusAgent_TSDB_config_greater_than_or_equal_to_v2.54.0.golden
generated
vendored
Normal file
9
pkg/prometheus/testdata/PrometheusAgent_TSDB_config_greater_than_or_equal_to_v2.54.0.golden
generated
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
global:
|
||||||
|
scrape_interval: 30s
|
||||||
|
external_labels:
|
||||||
|
prometheus: default/test
|
||||||
|
prometheus_replica: $(POD_NAME)
|
||||||
|
scrape_configs: []
|
||||||
|
storage:
|
||||||
|
tsdb:
|
||||||
|
out_of_order_time_window: 10m
|
6
pkg/prometheus/testdata/PrometheusAgent_TSDB_config_less_than_v2.53.0.golden
generated
vendored
Normal file
6
pkg/prometheus/testdata/PrometheusAgent_TSDB_config_less_than_v2.53.0.golden
generated
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
global:
|
||||||
|
scrape_interval: 30s
|
||||||
|
external_labels:
|
||||||
|
prometheus: default/test
|
||||||
|
prometheus_replica: $(POD_NAME)
|
||||||
|
scrape_configs: []
|
6
pkg/prometheus/testdata/PrometheusAgent_no_TSDB_config.golden
generated
vendored
Normal file
6
pkg/prometheus/testdata/PrometheusAgent_no_TSDB_config.golden
generated
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
global:
|
||||||
|
scrape_interval: 30s
|
||||||
|
external_labels:
|
||||||
|
prometheus: default/test
|
||||||
|
prometheus_replica: $(POD_NAME)
|
||||||
|
scrape_configs: []
|
Loading…
Add table
Reference in a new issue