module TP_Mobile_RemoteServices { source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" name = "TP_Mobile_RemoteServices" description = "2.0 SLO Mobile" #entity selector object filter = "" #metric expression of the calculation as done in data explorer ui metric_expression = <<-EOT (100)* ((builtin:service.keyRequest.errors.server.successCount:filter( and( or( in( "dt.entity.service_method", entitySelector( "type(service_method), fromRelationship.isServiceMethodOfService( type(~"SERVICE~"),entityName.in( ~"btc-vehicle-remote-commands-composite-service - PROD~" ) ) ,entityName.in( ~"POST /api/v2/presentation/remote-commands//door-lock~", ~"POST /api/v2/presentation/remote-commands//door-unlock~", ~"POST /api/v2/presentation/remote-commands//climate-now~", ~"POST /api/v2/presentation/remote-commands//vehicle-finder~", ~"POST /api/v2/presentation/remote-commands//climate-timer~", ~"POST /api/v2/presentation/remote-commands//light-flash~", ~"POST /api/v2/presentation/remote-commands//charging-profile~", ~"POST /api/v2/presentation/remote-commands/eventPosition~", ~"GET /api/v1/presentation/remote-history/~", ~"POST /api/v2/presentation/remote-commands/eventStatus~" )") ) ))):splitBy()) / (builtin:service.keyRequest.count.server:filter( and( or( in( "dt.entity.service_method", entitySelector( "type(service_method), fromRelationship.isServiceMethodOfService( type(~"SERVICE~"),entityName.in( ~"btc-vehicle-remote-commands-composite-service - PROD~" ) ) ,entityName.in( ~"POST /api/v2/presentation/remote-commands//door-lock~", ~"POST /api/v2/presentation/remote-commands//door-unlock~", ~"POST /api/v2/presentation/remote-commands//climate-now~", ~"POST /api/v2/presentation/remote-commands//vehicle-finder~", ~"POST /api/v2/presentation/remote-commands//climate-timer~", ~"POST /api/v2/presentation/remote-commands//light-flash~", ~"POST /api/v2/presentation/remote-commands//charging-profile~", ~"POST /api/v2/presentation/remote-commands/eventPosition~", ~"GET /api/v1/presentation/remote-history/~", ~"POST /api/v2/presentation/remote-commands/eventStatus~" )") ) ))):splitBy())) EOT #if not set (removed) it's defaulted to "-1d" timeframe = "-1d" #currently the only possible value evaluation = "AGGREGATE" #Target and warning percentage of the SLO as double target = 98 #if not set(removed) it's defaulted to 98 warning = 99 #if not set(removed) it's defaulted to 99 } output "TP_Mobile_RemoteServices_metric" { value = module.TP_Mobile_RemoteServices.metric_expression }