--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: (devel) creationTimestamp: null 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 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 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: {}