Service-Level Objectives offers a set of pre-configured service-level objective (SLO) templates for some of the primary monitoring domains, which you can use to create your own SLOs.
We also offer a list of SLO examples. For more information on SLO examples, see Service-level objective examples.
See the SLO configuration templates to understand better the service-level indicators (SLIs).
This SLI measures the CPU usage of selected hosts over time.
Data source: metrics (timeseries)
Entity scope: hosts
SLI DQL query:
timeseries sli=avg(dt.host.cpu.usage), by: { dt.entity.host }, filter: in(dt.entity.host, {HOST-IDs })| fieldsAdd entityName(dt.entity.host)
This SLI measures the proportion of successful service requests over time.
Data source: metrics (timeseries)
Entity scope: services
SLI DQL query:
timeseries { total=sum(dt.service.request.count) ,failures=sum(dt.service.request.failure_count) }, by: { dt.entity.service }, filter: { in (dt.entity.service, { SERVICE-IDs }) }| fieldsAdd sli=(((total[]-failures[])/total[])*(100))| fieldsAdd entityName(dt.entity.service)| fieldsRemove total, failures
This SLI measures the proportion of service requests that are served faster than a defined response time.
Data source: metrics (timeseries)
Entity scope: services, latency threshold of user input
SLI DQL query:
timeseries total=avg(dt.service.request.response_time), default:0, by: { dt.entity.service }, filter: {in(dt.entity.service, { SERVICE-IDs }) }| fieldsAdd high=iCollectArray(if(total[]> (1000 * { $responseTimeInMilliSeconds }), total[]))| fieldsAdd low=iCollectArray(if(total[]<= (1000 * { $responseTimeInMilliSeconds }), total[]))| fieldsAdd highRespTimes=iCollectArray(if(isNull(high[]),0,else:1))| fieldsAdd lowRespTimes=iCollectArray(if(isNull(low[]),0,else:1))| fieldsAdd sli=100*(lowRespTimes[]/(lowRespTimes[]+highRespTimes[]))| fieldsAdd entityName(dt.entity.service)| fieldsRemove total, high, low, highRespTimes, lowRespTimes
This SLI measures the ratio of requested CPU relative to allocatable CPU per Kubernetes cluster. 100% means that the allocatable CPU meets the requested demand.
Data source: metrics (timeseries)
Entity scope: Kubernetes cluster
SLI DQL query:
timeseries { requests_cpu = sum(dt.kubernetes.container.requests_cpu, rollup:avg),cpu_allocatable = sum(dt.kubernetes.node.cpu_allocatable, rollup:avg)},by:{dt.entity.kubernetes_cluster},filter: { in (dt.entity.kubernetes_cluster, { $kubernetesClusterIds })}| fieldsAdd sli = (requests_cpu[] / cpu_allocatable[]) * 100| fieldsAdd entityName(dt.entity.kubernetes_cluster)| fieldsRemove requests_cpu, cpu_allocatable
This SLI measures the ratio of requested memory relative to allocatable memory per Kubernetes cluster. 100% means that the allocatable memory meets the requested demand.
Data source: metrics (timeseries)
Entity scope: Kubernetes cluster
SLI DQL query:
timeseries { requests_memory = sum(dt.kubernetes.container.requests_memory, rollup:avg),memory_allocatable = sum(dt.kubernetes.node.memory_allocatable, rollup:avg)},by:{dt.entity.kubernetes_cluster},filter: { in (dt.entity.kubernetes_cluster, { $kubernetesClusterIds })}| fieldsAdd sli = (requests_memory[] / memory_allocatable[]) * 100| fieldsAdd entityName(dt.entity.kubernetes_cluster)| fieldsRemove requests_memory, memory_allocatable
This SLI measures the ratio of used CPU resources relative to requested CPU resources per Kubernetes namespace. 100% means that all requested CPU resources are used.
Data source: metrics (timeseries)
Entity scope: Kubernetes namespace
SLI DQL query:
timeseries { cpuUsage = sum(dt.kubernetes.container.cpu_usage, default:0, rollup:avg),cpuRequest = sum(dt.kubernetes.container.requests_cpu, rollup:avg)},nonempty:true, by:{dt.entity.cloud_application_namespace},filter: {in(dt.entity.cloud_application_namespace, { $kubernetesNamespaceIds }) }| fieldsAdd sli = cpuUsage[]/cpuRequest[]*100| fieldsAdd entityName(dt.entity.cloud_application_namespace)| fieldsRemove cpuUsage, cpuRequest
This SLI measures the ratio of used memory relative to allocatable memory per Kubernetes namespace. 100% means that all requested memory resources are used.
Data source: metrics (timeseries)
Entity scope: Kubernetes namespace
SLI DQL query:
timeseries { memWorkSet=sum(dt.kubernetes.container.memory_working_set, default:0, rollup:avg),memRequest=sum(dt.kubernetes.container.requests_memory, rollup:avg)},nonempty:true, by:{dt.entity.cloud_application_namespace},filter: { in (dt.entity.cloud_application_namespace, { $kubernetesNamespaceIds }) }| fieldsAdd sli = memWorkSet[]/memRequest[]*100| fieldsAdd entityName(dt.entity.cloud_application_namespace)| fieldsRemove memWorkSet, memRequest