diff --git a/CN_Prod/slo/TP_Mobile_DigitalKey.tf b/CN_Prod/slo/TP_Mobile_DigitalKey.tf new file mode 100644 index 0000000..5598d06 --- /dev/null +++ b/CN_Prod/slo/TP_Mobile_DigitalKey.tf @@ -0,0 +1,51 @@ +module TP_Mobile_DigitalKey { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + name = "TP_Mobile_DigitalKey" + + description = "2.0 SLO Mobile" + + # entity selector object + filter = "" + + # metric expression of the calculation as done in data explorer ui + metric_expression = </password~", + ~"GET /api/v1/digitalkey//pairing~" + )"))))):splitBy()) + / + (builtin:service.keyRequest.count.server:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method), + fromRelationship.isServiceMethodOfService( + type(~"SERVICE~"),entityName.in( + ~"TrackApi - smc - PROD~", + ~"digital-key-composite-service - PROD~" + ) + ),entityName.in( + ~"trackKey~", + ~"manageKey~", + ~"GET /api/v1/digitalkey//password~", + ~"GET /api/v1/digitalkey//pairing~" + )"))))):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 + +} \ No newline at end of file diff --git a/CN_Prod/slo/TP_Mobile_Login.tf b/CN_Prod/slo/TP_Mobile_Login.tf new file mode 100644 index 0000000..3559643 --- /dev/null +++ b/CN_Prod/slo/TP_Mobile_Login.tf @@ -0,0 +1,59 @@ +module TP_Mobile_Login { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + name = "TP_Mobile_Login" + + description = "2.0 SLO Mobile" + + # entity selector object + filter = "" + + # metric expression of the calculation as done in data explorer ui + metric_expression = </primary~", + ~"POST /api/v2/vehicles//primary/map~", + ~"POST /api/v1/vehicles//validate-security-code~", + ~"POST /api/v1/vehicles//resend-security-code~", + ~"DELETE /api/v1/vehicles/~" + )"))))):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-user-composite-service - PROD~", + ~"vehicle-mapping-composite-service - PROD~" + ) + ),entityName.in( + ~"GET /api/v2/presentation/users/validate~", + ~"POST /api/v2/vehicles//primary~", + ~"POST /api/v2/vehicles//primary/map~", + ~"POST /api/v1/vehicles//validate-security-code~", + ~"POST /api/v1/vehicles//resend-security-code~", + ~"DELETE /api/v1/vehicles/~" + )"))))):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 + +} \ No newline at end of file diff --git a/CN_Prod/slo/TP_Mobile_PersonalFavorites.tf b/CN_Prod/slo/TP_Mobile_PersonalFavorites.tf new file mode 100644 index 0000000..6fc088f --- /dev/null +++ b/CN_Prod/slo/TP_Mobile_PersonalFavorites.tf @@ -0,0 +1,47 @@ +module TP_Mobile_PersonalFavorites { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + name = "TP_Mobile_PersonalFavorites" + + description = "2.0 SLO Mobile" + + # entity selector object + filter = "" + + # metric expression of the calculation as done in data explorer ui + metric_expression = <~" + )"))))):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-destination-composite-service - PROD~" + ) + ),entityName.in( + ~"GET /api/v3/favorites/~", + ~"POST /api/v3/favorites/~", + ~"PUT /api/v3/favorites/~" + )"))))):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 + +} \ No newline at end of file diff --git a/CN_Prod/slo/TP_Mobile_Remote360.tf b/CN_Prod/slo/TP_Mobile_Remote360.tf new file mode 100644 index 0000000..0d44337 --- /dev/null +++ b/CN_Prod/slo/TP_Mobile_Remote360.tf @@ -0,0 +1,57 @@ +module TP_Mobile_Remote360 { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + name = "TP_Mobile_Remote360" + + description = "2.0 SLO Mobile" + + # entity selector object + filter = "" + + # metric expression of the calculation as done in data explorer ui + metric_expression = <~", + ~"POST /api/v1/download/[UUID]//confirm~", + ~"GET /api/v1/vehicle//egomodelurl~", + ~"GET /api/v1/vehicle//key~", + ~"GET /api/v1/recordings/vehicle/~" + )"))))):splitBy()) + / + (builtin:service.keyRequest.count.server:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method), + fromRelationship.isServiceMethodOfService( + type(~"SERVICE~"),entityName.in( + ~"remote-360-composite-service - PROD~" + ) + ),entityName.in( + ~"GET /api/v1/events/[UUID]~", + ~"POST /api/v1/events/[UUID]/cancel~", + ~"POST /api/v1/event/execute~", + ~"GET /api/v1/download/[UUID]/~", + ~"POST /api/v1/download/[UUID]//confirm~", + ~"GET /api/v1/vehicle//egomodelurl~", + ~"GET /api/v1/vehicle//key~", + ~"GET /api/v1/recordings/vehicle/~" + )"))))):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 + +} \ No newline at end of file diff --git a/CN_Prod/slo/TP_Mobile_RemoteServices.tf b/CN_Prod/slo/TP_Mobile_RemoteServices.tf new file mode 100644 index 0000000..2559def --- /dev/null +++ b/CN_Prod/slo/TP_Mobile_RemoteServices.tf @@ -0,0 +1,61 @@ +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 = </door-lock~", + ~"POST /api/v2/presentation/remote-commands//door-unlock~", + ~"POST /api/v2/presentation/remote-commands//climate-now~", + ~"GET /api/v2/presentation/remote-history/~", + ~"POST /api/v2/presentation/remote-commands//horn-blow~", + ~"POST /api/v2/presentation/remote-commands//climate-timer~", + ~"POST /api/v2/presentation/remote-commands//light-flash~", + ~"POST /api/v2/presentation/remote-commands//vehicle-finder~", + ~"GET /api/v1/presentation/remote-history/~" + )"))))):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/eventStatus~", + ~"POST /api/v2/presentation/remote-commands//door-lock~", + ~"POST /api/v2/presentation/remote-commands//door-unlock~", + ~"POST /api/v2/presentation/remote-commands//climate-now~", + ~"GET /api/v2/presentation/remote-history/~", + ~"POST /api/v2/presentation/remote-commands//horn-blow~", + ~"POST /api/v2/presentation/remote-commands//climate-timer~", + ~"POST /api/v2/presentation/remote-commands//light-flash~", + ~"POST /api/v2/presentation/remote-commands//vehicle-finder~", + ~"GET /api/v1/presentation/remote-history/~" + )"))))):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 + +} \ No newline at end of file diff --git a/CN_Prod/slo/TP_Mobile_Send2VehicleLegacy.tf b/CN_Prod/slo/TP_Mobile_Send2VehicleLegacy.tf new file mode 100644 index 0000000..5e95186 --- /dev/null +++ b/CN_Prod/slo/TP_Mobile_Send2VehicleLegacy.tf @@ -0,0 +1,34 @@ +module TP_Mobile_Send2VehicleLegacy { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + name = "TP_Mobile_Send2VehicleLegacy" + + description = "2.0 SLO Mobile" + + # entity selector object + filter = "" + + # metric expression of the calculation as done in data explorer ui + metric_expression = </password~", + ~"GET /api/v1/digitalkey//pairing~" + )"))))):splitBy()) + / + (builtin:service.keyRequest.count.server:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method), + fromRelationship.isServiceMethodOfService( + type(~"SERVICE~"),entityName.in( + ~"TrackApi - smc - PROD~", + ~"digital-key-composite-service - PROD~" + ) + ),entityName.in( + ~"trackKey~", + ~"manageKey~", + ~"GET /api/v1/digitalkey//password~", + ~"GET /api/v1/digitalkey//pairing~" + )"))))):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 + +} \ No newline at end of file diff --git a/EMEA_Prod/slo/TP_Mobile_Login.tf b/EMEA_Prod/slo/TP_Mobile_Login.tf new file mode 100644 index 0000000..3559643 --- /dev/null +++ b/EMEA_Prod/slo/TP_Mobile_Login.tf @@ -0,0 +1,59 @@ +module TP_Mobile_Login { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + name = "TP_Mobile_Login" + + description = "2.0 SLO Mobile" + + # entity selector object + filter = "" + + # metric expression of the calculation as done in data explorer ui + metric_expression = </primary~", + ~"POST /api/v2/vehicles//primary/map~", + ~"POST /api/v1/vehicles//validate-security-code~", + ~"POST /api/v1/vehicles//resend-security-code~", + ~"DELETE /api/v1/vehicles/~" + )"))))):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-user-composite-service - PROD~", + ~"vehicle-mapping-composite-service - PROD~" + ) + ),entityName.in( + ~"GET /api/v2/presentation/users/validate~", + ~"POST /api/v2/vehicles//primary~", + ~"POST /api/v2/vehicles//primary/map~", + ~"POST /api/v1/vehicles//validate-security-code~", + ~"POST /api/v1/vehicles//resend-security-code~", + ~"DELETE /api/v1/vehicles/~" + )"))))):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 + +} \ No newline at end of file diff --git a/EMEA_Prod/slo/TP_Mobile_PersonalFavorites.tf b/EMEA_Prod/slo/TP_Mobile_PersonalFavorites.tf new file mode 100644 index 0000000..6fc088f --- /dev/null +++ b/EMEA_Prod/slo/TP_Mobile_PersonalFavorites.tf @@ -0,0 +1,47 @@ +module TP_Mobile_PersonalFavorites { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + name = "TP_Mobile_PersonalFavorites" + + description = "2.0 SLO Mobile" + + # entity selector object + filter = "" + + # metric expression of the calculation as done in data explorer ui + metric_expression = <~" + )"))))):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-destination-composite-service - PROD~" + ) + ),entityName.in( + ~"GET /api/v3/favorites/~", + ~"POST /api/v3/favorites/~", + ~"PUT /api/v3/favorites/~" + )"))))):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 + +} \ No newline at end of file diff --git a/EMEA_Prod/slo/TP_Mobile_Remote360.tf b/EMEA_Prod/slo/TP_Mobile_Remote360.tf new file mode 100644 index 0000000..0d44337 --- /dev/null +++ b/EMEA_Prod/slo/TP_Mobile_Remote360.tf @@ -0,0 +1,57 @@ +module TP_Mobile_Remote360 { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + name = "TP_Mobile_Remote360" + + description = "2.0 SLO Mobile" + + # entity selector object + filter = "" + + # metric expression of the calculation as done in data explorer ui + metric_expression = <~", + ~"POST /api/v1/download/[UUID]//confirm~", + ~"GET /api/v1/vehicle//egomodelurl~", + ~"GET /api/v1/vehicle//key~", + ~"GET /api/v1/recordings/vehicle/~" + )"))))):splitBy()) + / + (builtin:service.keyRequest.count.server:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method), + fromRelationship.isServiceMethodOfService( + type(~"SERVICE~"),entityName.in( + ~"remote-360-composite-service - PROD~" + ) + ),entityName.in( + ~"GET /api/v1/events/[UUID]~", + ~"POST /api/v1/events/[UUID]/cancel~", + ~"POST /api/v1/event/execute~", + ~"GET /api/v1/download/[UUID]/~", + ~"POST /api/v1/download/[UUID]//confirm~", + ~"GET /api/v1/vehicle//egomodelurl~", + ~"GET /api/v1/vehicle//key~", + ~"GET /api/v1/recordings/vehicle/~" + )"))))):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 + +} \ No newline at end of file diff --git a/EMEA_Prod/slo/TP_Mobile_RemoteServices.tf b/EMEA_Prod/slo/TP_Mobile_RemoteServices.tf new file mode 100644 index 0000000..2559def --- /dev/null +++ b/EMEA_Prod/slo/TP_Mobile_RemoteServices.tf @@ -0,0 +1,61 @@ +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 = </door-lock~", + ~"POST /api/v2/presentation/remote-commands//door-unlock~", + ~"POST /api/v2/presentation/remote-commands//climate-now~", + ~"GET /api/v2/presentation/remote-history/~", + ~"POST /api/v2/presentation/remote-commands//horn-blow~", + ~"POST /api/v2/presentation/remote-commands//climate-timer~", + ~"POST /api/v2/presentation/remote-commands//light-flash~", + ~"POST /api/v2/presentation/remote-commands//vehicle-finder~", + ~"GET /api/v1/presentation/remote-history/~" + )"))))):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/eventStatus~", + ~"POST /api/v2/presentation/remote-commands//door-lock~", + ~"POST /api/v2/presentation/remote-commands//door-unlock~", + ~"POST /api/v2/presentation/remote-commands//climate-now~", + ~"GET /api/v2/presentation/remote-history/~", + ~"POST /api/v2/presentation/remote-commands//horn-blow~", + ~"POST /api/v2/presentation/remote-commands//climate-timer~", + ~"POST /api/v2/presentation/remote-commands//light-flash~", + ~"POST /api/v2/presentation/remote-commands//vehicle-finder~", + ~"GET /api/v1/presentation/remote-history/~" + )"))))):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 + +} \ No newline at end of file diff --git a/EMEA_Prod/slo/TP_Mobile_Send2VehicleLegacy.tf b/EMEA_Prod/slo/TP_Mobile_Send2VehicleLegacy.tf new file mode 100644 index 0000000..5e95186 --- /dev/null +++ b/EMEA_Prod/slo/TP_Mobile_Send2VehicleLegacy.tf @@ -0,0 +1,34 @@ +module TP_Mobile_Send2VehicleLegacy { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + name = "TP_Mobile_Send2VehicleLegacy" + + description = "2.0 SLO Mobile" + + # entity selector object + filter = "" + + # metric expression of the calculation as done in data explorer ui + metric_expression = </password~", + ~"GET /api/v1/digitalkey//pairing~" + )"))))):splitBy()) + / + (builtin:service.keyRequest.count.server:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method), + fromRelationship.isServiceMethodOfService( + type(~"SERVICE~"),entityName.in( + ~"TrackApi - smc - PROD~", + ~"digital-key-composite-service - PROD~" + ) + ),entityName.in( + ~"trackKey~", + ~"manageKey~", + ~"GET /api/v1/digitalkey//password~", + ~"GET /api/v1/digitalkey//pairing~" + )"))))):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 + +} \ No newline at end of file diff --git a/NA_Prod/slo/TP_Mobile_Login.tf b/NA_Prod/slo/TP_Mobile_Login.tf new file mode 100644 index 0000000..3559643 --- /dev/null +++ b/NA_Prod/slo/TP_Mobile_Login.tf @@ -0,0 +1,59 @@ +module TP_Mobile_Login { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + name = "TP_Mobile_Login" + + description = "2.0 SLO Mobile" + + # entity selector object + filter = "" + + # metric expression of the calculation as done in data explorer ui + metric_expression = </primary~", + ~"POST /api/v2/vehicles//primary/map~", + ~"POST /api/v1/vehicles//validate-security-code~", + ~"POST /api/v1/vehicles//resend-security-code~", + ~"DELETE /api/v1/vehicles/~" + )"))))):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-user-composite-service - PROD~", + ~"vehicle-mapping-composite-service - PROD~" + ) + ),entityName.in( + ~"GET /api/v2/presentation/users/validate~", + ~"POST /api/v2/vehicles//primary~", + ~"POST /api/v2/vehicles//primary/map~", + ~"POST /api/v1/vehicles//validate-security-code~", + ~"POST /api/v1/vehicles//resend-security-code~", + ~"DELETE /api/v1/vehicles/~" + )"))))):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 + +} \ No newline at end of file diff --git a/NA_Prod/slo/TP_Mobile_PersonalFavorites.tf b/NA_Prod/slo/TP_Mobile_PersonalFavorites.tf new file mode 100644 index 0000000..6fc088f --- /dev/null +++ b/NA_Prod/slo/TP_Mobile_PersonalFavorites.tf @@ -0,0 +1,47 @@ +module TP_Mobile_PersonalFavorites { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + name = "TP_Mobile_PersonalFavorites" + + description = "2.0 SLO Mobile" + + # entity selector object + filter = "" + + # metric expression of the calculation as done in data explorer ui + metric_expression = <~" + )"))))):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-destination-composite-service - PROD~" + ) + ),entityName.in( + ~"GET /api/v3/favorites/~", + ~"POST /api/v3/favorites/~", + ~"PUT /api/v3/favorites/~" + )"))))):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 + +} \ No newline at end of file diff --git a/NA_Prod/slo/TP_Mobile_Remote360.tf b/NA_Prod/slo/TP_Mobile_Remote360.tf new file mode 100644 index 0000000..0d44337 --- /dev/null +++ b/NA_Prod/slo/TP_Mobile_Remote360.tf @@ -0,0 +1,57 @@ +module TP_Mobile_Remote360 { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + name = "TP_Mobile_Remote360" + + description = "2.0 SLO Mobile" + + # entity selector object + filter = "" + + # metric expression of the calculation as done in data explorer ui + metric_expression = <~", + ~"POST /api/v1/download/[UUID]//confirm~", + ~"GET /api/v1/vehicle//egomodelurl~", + ~"GET /api/v1/vehicle//key~", + ~"GET /api/v1/recordings/vehicle/~" + )"))))):splitBy()) + / + (builtin:service.keyRequest.count.server:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method), + fromRelationship.isServiceMethodOfService( + type(~"SERVICE~"),entityName.in( + ~"remote-360-composite-service - PROD~" + ) + ),entityName.in( + ~"GET /api/v1/events/[UUID]~", + ~"POST /api/v1/events/[UUID]/cancel~", + ~"POST /api/v1/event/execute~", + ~"GET /api/v1/download/[UUID]/~", + ~"POST /api/v1/download/[UUID]//confirm~", + ~"GET /api/v1/vehicle//egomodelurl~", + ~"GET /api/v1/vehicle//key~", + ~"GET /api/v1/recordings/vehicle/~" + )"))))):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 + +} \ No newline at end of file diff --git a/NA_Prod/slo/TP_Mobile_RemoteServices.tf b/NA_Prod/slo/TP_Mobile_RemoteServices.tf new file mode 100644 index 0000000..2559def --- /dev/null +++ b/NA_Prod/slo/TP_Mobile_RemoteServices.tf @@ -0,0 +1,61 @@ +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 = </door-lock~", + ~"POST /api/v2/presentation/remote-commands//door-unlock~", + ~"POST /api/v2/presentation/remote-commands//climate-now~", + ~"GET /api/v2/presentation/remote-history/~", + ~"POST /api/v2/presentation/remote-commands//horn-blow~", + ~"POST /api/v2/presentation/remote-commands//climate-timer~", + ~"POST /api/v2/presentation/remote-commands//light-flash~", + ~"POST /api/v2/presentation/remote-commands//vehicle-finder~", + ~"GET /api/v1/presentation/remote-history/~" + )"))))):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/eventStatus~", + ~"POST /api/v2/presentation/remote-commands//door-lock~", + ~"POST /api/v2/presentation/remote-commands//door-unlock~", + ~"POST /api/v2/presentation/remote-commands//climate-now~", + ~"GET /api/v2/presentation/remote-history/~", + ~"POST /api/v2/presentation/remote-commands//horn-blow~", + ~"POST /api/v2/presentation/remote-commands//climate-timer~", + ~"POST /api/v2/presentation/remote-commands//light-flash~", + ~"POST /api/v2/presentation/remote-commands//vehicle-finder~", + ~"GET /api/v1/presentation/remote-history/~" + )"))))):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 + +} \ No newline at end of file diff --git a/NA_Prod/slo/TP_Mobile_Send2VehicleLegacy.tf b/NA_Prod/slo/TP_Mobile_Send2VehicleLegacy.tf new file mode 100644 index 0000000..5e95186 --- /dev/null +++ b/NA_Prod/slo/TP_Mobile_Send2VehicleLegacy.tf @@ -0,0 +1,34 @@ +module TP_Mobile_Send2VehicleLegacy { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + name = "TP_Mobile_Send2VehicleLegacy" + + description = "2.0 SLO Mobile" + + # entity selector object + filter = "" + + # metric expression of the calculation as done in data explorer ui + metric_expression = <