Skip to content

Commit

Permalink
Add sloth.slok.dev CRDs (#123)
Browse files Browse the repository at this point in the history
  • Loading branch information
vladimir-babichev authored Mar 2, 2023
1 parent c522e37 commit 5a0574f
Showing 1 changed file with 246 additions and 0 deletions.
246 changes: 246 additions & 0 deletions sloth.slok.dev/prometheusservicelevel_v1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
{
"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",
"additionalProperties": false
},
"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",
"additionalProperties": false
}
},
"type": "object",
"additionalProperties": false
},
"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",
"additionalProperties": false
},
"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",
"additionalProperties": false
},
"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",
"additionalProperties": false
}
},
"type": "object",
"additionalProperties": false
}
},
"required": [
"alerting",
"name",
"objective",
"sli"
],
"type": "object",
"additionalProperties": false
},
"minItems": 1,
"type": "array"
}
},
"required": [
"service"
],
"type": "object",
"additionalProperties": false
},
"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",
"additionalProperties": false
}
},
"type": "object"
}

0 comments on commit 5a0574f

Please sign in to comment.