--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: (devel) name: prometheusservicelevels.sloth.slok.dev spec: group: sloth.slok.dev names: categories: - slo - slos - sli - slis kind: PrometheusServiceLevel listKind: PrometheusServiceLevelList plural: prometheusservicelevels shortNames: - psl - pslo singular: prometheusservicelevel scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .spec.service name: SERVICE type: string - jsonPath: .status.processedSLOs name: DESIRED SLOs type: integer - jsonPath: .status.promOpRulesGeneratedSLOs name: READY SLOs type: integer - jsonPath: .status.promOpRulesGenerated name: GEN OK type: boolean - jsonPath: .status.lastPromOpRulesSuccessfulGenerated name: GEN AGE type: date - jsonPath: .metadata.creationTimestamp name: AGE type: date name: v1 schema: openAPIV3Schema: description: |- PrometheusServiceLevel is the expected service quality level using Prometheus as the backend used by Sloth. 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: ServiceLevelSpec is the spec for a PrometheusServiceLevel. properties: labels: additionalProperties: type: string description: |- Labels are the Prometheus labels that will have all the recording and alerting rules generated for the service SLOs. type: object service: description: Service is the application of the SLOs. type: string sloPlugins: description: SLOPlugins will be added to the SLO generation plugin chain of all SLOs. properties: chain: description: chain ths the list of plugin chain to add to the SLO generation. items: description: SLOPlugin is a plugin that will be used on the chain of plugins for the SLO generation. properties: config: description: Config is the configuration used on the plugin instance creation. type: object x-kubernetes-preserve-unknown-fields: true id: description: ID is the ID of the plugin to load . type: string priority: description: |- Priority is the priority of the plugin in the chain. The lower the number the higher the priority. The first plugin will be the one with the lowest priority. The default plugins loaded by Sloth use `0` priority. If you want to execute plugins before the default ones, you can use negative priority. It is recommended to use round gaps of numbers like 10, 100, 1000, -200, -1000... type: integer required: - id type: object type: array overridePrevious: description: |- OverridePrevious will override the previous SLO plugins declared. Depending on where is this SLO plugins block declared will override: - If declared at SLO group level: Overrides the default plugins. - If declared at SLO level: Overrides the default + SLO group plugins. The declaration order is default plugins -> SLO Group plugins -> SLO plugins. type: boolean required: - chain type: object slos: description: SLOs are the SLOs of the service. items: description: |- SLO is the configuration/declaration of the service level objective of a service. properties: alerting: description: |- Alerting is the configuration with all the things related with the SLO alerts. properties: annotations: additionalProperties: type: string description: |- Annotations are the Prometheus annotations that will have all the alerts generated by this SLO. type: object labels: additionalProperties: type: string description: Labels are the Prometheus labels that will have all the alerts generated by this SLO. type: object name: description: Name is the name used by the alerts generated for this SLO. type: string pageAlert: description: Page alert refers to the critical alert (check multiwindow-multiburn alerts). properties: annotations: additionalProperties: type: string description: Annotations are the Prometheus annotations for the specific alert. type: object disable: description: |- Disable disables the alert and makes Sloth not generating this alert. This can be helpful for example to disable ticket(warning) alerts. type: boolean labels: additionalProperties: type: string description: |- Labels are the Prometheus labels for the specific alert. For example can be useful to route the Page alert to specific Slack channel. type: object type: object ticketAlert: description: TicketAlert alert refers to the warning alert (check multiwindow-multiburn alerts). properties: annotations: additionalProperties: type: string description: Annotations are the Prometheus annotations for the specific alert. type: object disable: description: |- Disable disables the alert and makes Sloth not generating this alert. This can be helpful for example to disable ticket(warning) alerts. type: boolean labels: additionalProperties: type: string description: |- Labels are the Prometheus labels for the specific alert. For example can be useful to route the Page alert to specific Slack channel. type: object type: object type: object description: description: Description is the description of the SLO. type: string labels: additionalProperties: type: string description: |- Labels are the Prometheus labels that will have all the recording and alerting rules for this specific SLO. These labels are merged with the previous level labels. type: object name: description: Name is the name of the SLO. maxLength: 128 type: string objective: description: Objective is target of the SLO the percentage (0, 100] (e.g 99.9). type: number plugins: description: |- Plugins will be added along the group SLO plugins declared in the spec root level and Sloth default plugins. properties: chain: description: chain ths the list of plugin chain to add to the SLO generation. items: description: SLOPlugin is a plugin that will be used on the chain of plugins for the SLO generation. properties: config: description: Config is the configuration used on the plugin instance creation. type: object x-kubernetes-preserve-unknown-fields: true id: description: ID is the ID of the plugin to load . type: string priority: description: |- Priority is the priority of the plugin in the chain. The lower the number the higher the priority. The first plugin will be the one with the lowest priority. The default plugins loaded by Sloth use `0` priority. If you want to execute plugins before the default ones, you can use negative priority. It is recommended to use round gaps of numbers like 10, 100, 1000, -200, -1000... type: integer required: - id type: object type: array overridePrevious: description: |- OverridePrevious will override the previous SLO plugins declared. Depending on where is this SLO plugins block declared will override: - If declared at SLO group level: Overrides the default plugins. - If declared at SLO level: Overrides the default + SLO group plugins. The declaration order is default plugins -> SLO Group plugins -> SLO plugins. type: boolean required: - chain type: object sli: description: SLI is the indicator (service level indicator) for this specific SLO. properties: events: description: Events is the events SLI type. properties: errorQuery: description: |- ErrorQuery is a Prometheus query that will get the number/count of events that we consider that are bad for the SLO (e.g "http 5xx", "latency > 250ms"...). Requires the usage of `{{.window}}` template variable. type: string totalQuery: description: |- TotalQuery is a Prometheus query that will get the total number/count of events for the SLO (e.g "all http requests"...). Requires the usage of `{{.window}}` template variable. type: string required: - errorQuery - totalQuery type: object plugin: description: Plugin is the pluggable SLI type. properties: id: description: Name is the name of the plugin that needs to load. type: string options: additionalProperties: type: string description: Options are the options used for the plugin. type: object required: - id type: object raw: description: Raw is the raw SLI type. properties: errorRatioQuery: description: ErrorRatioQuery is a Prometheus query that will get the raw error ratio (0-1) for the SLO. type: string required: - errorRatioQuery type: object type: object required: - alerting - name - objective - sli type: object minItems: 1 type: array required: - service type: object status: properties: lastPromOpRulesSuccessfulGenerated: description: LastPromOpRulesGeneration tells the last atemp made for a successful SLO rules generate. format: date-time type: string observedGeneration: description: |- ObservedGeneration tells the generation was acted on, normally this is required to stop an infinite loop when the status is updated because it sends a watch updated event to the watchers of the K8s object. format: int64 type: integer processedSLOs: description: ProcessedSLOs tells how many SLOs haven been processed for Prometheus operator. type: integer promOpRulesGenerated: description: PromOpRulesGenerated tells if the rules for prometheus operator CRD have been generated. type: boolean promOpRulesGeneratedSLOs: description: PromOpRulesGeneratedSLOs tells how many SLOs have been processed and generated for Prometheus operator successfully. type: integer required: - observedGeneration - processedSLOs - promOpRulesGenerated - promOpRulesGeneratedSLOs type: object type: object served: true storage: true subresources: status: {}