{ "description": "The `PrometheusRule` custom resource definition (CRD) defines [alerting](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/) and [recording](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/) rules to be evaluated by `Prometheus` or `ThanosRuler` objects.\n\n`Prometheus` and `ThanosRuler` objects select `PrometheusRule` objects using label and namespace selectors.", "properties": { "apiVersion": { "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "type": "object" }, "spec": { "description": "spec defines the specification of desired alerting rule definitions for Prometheus.", "properties": { "groups": { "description": "groups defines the content of Prometheus rule file", "items": { "description": "RuleGroup is a list of sequentially evaluated recording and alerting rules.", "properties": { "interval": { "description": "interval defines how often rules in the group 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)?)$", "type": "string" }, "labels": { "additionalProperties": { "type": "string" }, "description": "labels define the labels to add or overwrite before storing the result for its rules.\nThe labels defined at the rule level take precedence.\n\nIt requires Prometheus >= 3.0.0.\nThe field is ignored for Thanos Ruler.", "type": "object" }, "limit": { "description": "limit defines the number of alerts an alerting rule and series a recording\nrule can produce.\nLimit is supported starting with Prometheus >= 2.31 and Thanos Ruler >= 0.24.", "type": "integer" }, "name": { "description": "name defines the name of the rule group.", "minLength": 1, "type": "string" }, "partial_response_strategy": { "description": "partial_response_strategy is only used by ThanosRuler and will\nbe ignored by Prometheus instances.\nMore info: https://github.com/thanos-io/thanos/blob/main/docs/components/rule.md#partial-response", "pattern": "^(?i)(abort|warn)?$", "type": "string" }, "query_offset": { "description": "query_offset defines the offset the rule evaluation timestamp of this particular group by the specified duration into the past.\n\nIt requires Prometheus >= v2.53.0.\nIt is not supported for ThanosRuler.", "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" }, "rules": { "description": "rules defines the list of alerting and recording rules.", "items": { "description": "Rule describes an alerting or recording rule\nSee 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": { "alert": { "description": "alert defines the name of the alert. Must be a valid label value.\nOnly one of `record` and `alert` must be set.", "type": "string" }, "annotations": { "additionalProperties": { "type": "string" }, "description": "annotations defines annotations to add to each alert.\nOnly valid for alerting rules.", "type": "object" }, "expr": { "anyOf": [ { "type": "integer" }, { "type": "string" } ], "description": "expr defines the PromQL expression to evaluate.", "x-kubernetes-int-or-string": true }, "for": { "description": "for defines how alerts are considered firing once they have 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": "keep_firing_for 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)?)$", "type": "string" }, "labels": { "additionalProperties": { "type": "string" }, "description": "labels defines labels to add or overwrite.", "type": "object" }, "record": { "description": "record defines the name of the time series to output to. Must be a valid metric name.\nOnly one of `record` and `alert` must be set.", "type": "string" } }, "required": [ "expr" ], "type": "object", "additionalProperties": false }, "type": "array" } }, "required": [ "name" ], "type": "object", "additionalProperties": false }, "type": "array", "x-kubernetes-list-map-keys": [ "name" ], "x-kubernetes-list-type": "map" } }, "type": "object", "additionalProperties": false }, "status": { "description": "status defines the status subresource. It is under active development and is updated only when the\n\"StatusForConfigurationResources\" feature gate is enabled.\n\nMost recent observed status of the PrometheusRule. Read-only.\nMore info:\nhttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "properties": { "bindings": { "description": "bindings defines the list of workload resources (Prometheus, PrometheusAgent, ThanosRuler or Alertmanager) which select the configuration resource.", "items": { "description": "WorkloadBinding is a link between a configuration resource and a workload resource.", "properties": { "conditions": { "description": "conditions defines the current state of the configuration resource when bound to the referenced Workload object.", "items": { "description": "ConfigResourceCondition describes the status of configuration resources linked to Prometheus, PrometheusAgent, Alertmanager or ThanosRuler.", "properties": { "lastTransitionTime": { "description": "lastTransitionTime defines the time of the last update to the current status property.", "format": "date-time", "type": "string" }, "message": { "description": "message defines the human-readable message indicating details for the condition's last transition.", "type": "string" }, "observedGeneration": { "description": "observedGeneration defines the .metadata.generation that the\ncondition was set based upon. For instance, if `.metadata.generation` is\ncurrently 12, but the `.status.conditions[].observedGeneration` is 9, the\ncondition is out of date with respect to the current state of the object.", "format": "int64", "type": "integer" }, "reason": { "description": "reason for the condition's last transition.", "type": "string" }, "status": { "description": "status of the condition.", "minLength": 1, "type": "string" }, "type": { "description": "type of the condition being reported.\nCurrently, only \"Accepted\" is supported.", "enum": [ "Accepted" ], "minLength": 1, "type": "string" } }, "required": [ "lastTransitionTime", "status", "type" ], "type": "object", "additionalProperties": false }, "type": "array", "x-kubernetes-list-map-keys": [ "type" ], "x-kubernetes-list-type": "map" }, "group": { "description": "group defines the group of the referenced resource.", "enum": [ "monitoring.coreos.com" ], "type": "string" }, "name": { "description": "name defines the name of the referenced object.", "minLength": 1, "type": "string" }, "namespace": { "description": "namespace defines the namespace of the referenced object.", "minLength": 1, "type": "string" }, "resource": { "description": "resource defines the type of resource being referenced (e.g. Prometheus, PrometheusAgent, ThanosRuler or Alertmanager).", "enum": [ "prometheuses", "prometheusagents", "thanosrulers", "alertmanagers" ], "type": "string" } }, "required": [ "group", "name", "namespace", "resource" ], "type": "object", "additionalProperties": false }, "type": "array", "x-kubernetes-list-map-keys": [ "group", "resource", "name", "namespace" ], "x-kubernetes-list-type": "map" } }, "type": "object", "additionalProperties": false } }, "required": [ "spec" ], "type": "object" }