diff --git a/CN_PROD/slo/TP_Mobile_CD_Store.tf b/CN_PROD/slo/TP_Mobile_CD_Store.tf new file mode 100644 index 0000000..bff49e1 --- /dev/null +++ b/CN_PROD/slo/TP_Mobile_CD_Store.tf @@ -0,0 +1,42 @@ +module TP_Mobile_CD_Store { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + + name = "TP_Mobile_CD_Store" + + description = "CoCo-QM-Report_Mobile" + + + + #entity selector object + filter = "" + + #metric expression of the calculation as done in data explorer ui + metric_expression = <<-EOT +(100)-(builtin:service.keyRequest.errors.fivexx.rate:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method), +fromRelationship.isServiceMethodOfService( + type(~"SERVICE~"),entityName.in( + ~"StoreOfferResourceV6 - am-store - prod~", + ~"CdStoreOfferResource - am-store - prod~" + ) + ) + ,entityName.in( + ~"getOffersAndPortfolio~", + ~"bookedAndBookableCDServices~", + ~"bookedAndBookableCDServices 1~" + )"))))):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 + +} diff --git a/CN_PROD/slo/TP_Vehicle_AppDistribution.tf b/CN_PROD/slo/TP_Vehicle_AppDistribution.tf new file mode 100644 index 0000000..a25cd61 --- /dev/null +++ b/CN_PROD/slo/TP_Vehicle_AppDistribution.tf @@ -0,0 +1,45 @@ +module TP_Vehicle_AppDistribution { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + + name = "TP_Vehicle_AppDistribution" + + description = "CoCo QM-Report_Vehicle" + + + + #entity selector object + filter = "" + + + #metric expression of the calculation as done in data explorer ui + metric_expression = </pds~", + ~"PUT /service/api/vehicle/v1/gcid/[UUID]/vin//pds~", + ~"createAssociationForGcidAndVin~" + )"))))):splitBy()) + / + (builtin:service.keyRequest.count.server:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method), + fromRelationship.isServiceMethodOfService( + type(~"SERVICE~"),entityName.in( + ~"Perseus (/service) - cub-personalization - prod~" + ) + ) + ,entityName.in( + ~"GET /service/api/vehicle/v1/gcid/[UUID]/vin//pds~", + ~"PUT /service/api/vehicle/v1/gcid/[UUID]/vin//pds~", + ~"createAssociationForGcidAndVin~" + )"))))):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_Vehicle_Podcast.tf b/CN_PROD/slo/TP_Vehicle_Podcast.tf new file mode 100644 index 0000000..e54cdf4 --- /dev/null +++ b/CN_PROD/slo/TP_Vehicle_Podcast.tf @@ -0,0 +1,53 @@ +module TP_Vehicle_Podcast { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + + name = "TP_Vehicle_Podcast" + + description = "CoCo-QM-Report_Vehicle" + + + + #entity selector object + filter = "" + + + #metric expression of the calculation as done in data explorer ui + metric_expression = </pds~", + ~"PUT /service/api/vehicle/v1/gcid/[UUID]/vin//pds~", + ~"createAssociationForGcidAndVin~" + )"))))):splitBy()) + / + (builtin:service.keyRequest.count.server:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method), + fromRelationship.isServiceMethodOfService( + type(~"SERVICE~"),entityName.in( + ~"Perseus (/service) - cub-personalization - prod~" + ) + ) + ,entityName.in( + ~"GET /service/api/vehicle/v1/gcid/[UUID]/vin//pds~", + ~"PUT /service/api/vehicle/v1/gcid/[UUID]/vin//pds~", + ~"createAssociationForGcidAndVin~" + )"))))):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_Vehicle_Podcast.tf b/EMEA_PROD/slo/TP_Vehicle_Podcast.tf new file mode 100644 index 0000000..41db1c7 --- /dev/null +++ b/EMEA_PROD/slo/TP_Vehicle_Podcast.tf @@ -0,0 +1,51 @@ +module TP_Vehicle_Podcast { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + + name = "TP_Vehicle_Podcast" + + description = "CoCo-QM-Report_Vehicle" + + + + #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/~" + ~"POST /api/v1/vehicles//validate-security-code~", + ~"POST /api/v1/vehicles//resend-security-code~", + ~"DELETE /api/v1/vehicles/~", + ~"POST /api/v3/mappings/create~", + ~"POST /api/v3/mappings/continue~", + ~"POST /api/v3/mappings/validate-security-code~", + ~"POST /api/v3/mappings/resend-security-code~", + ~"GET /api/v3/images/~", + ~"DELETE /api/v3/mappings~", + ~"POST /api/v2/vehicles//secondary~" )") ) ))):splitBy()) @@ -54,9 +61,16 @@ module TP_Mobile_Mapping { ~"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/~" + ~"POST /api/v1/vehicles//validate-security-code~", + ~"POST /api/v1/vehicles//resend-security-code~", + ~"DELETE /api/v1/vehicles/~", + ~"POST /api/v3/mappings/create~", + ~"POST /api/v3/mappings/continue~", + ~"POST /api/v3/mappings/validate-security-code~", + ~"POST /api/v3/mappings/resend-security-code~", + ~"GET /api/v3/images/~", + ~"DELETE /api/v3/mappings~", + ~"POST /api/v2/vehicles//secondary~" )") ) ))):splitBy())) diff --git a/NA_PROD/slo/TP_Mobile_RSU.tf b/NA_PROD/slo/TP_Mobile_RSU.tf new file mode 100644 index 0000000..2c13bac --- /dev/null +++ b/NA_PROD/slo/TP_Mobile_RSU.tf @@ -0,0 +1,51 @@ +module TP_Mobile_RSU { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + + name = "TP_Mobile_RSU" + description = "CoCo-QM-Report_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( + ~"RemoteSoftwareUpgrade.WebApp - PROD~" + ) + ) + ,entityName.in( + ~"POST /v2/vehicle/rsustatus/finishInstallation~", + ~"POST /v2/vehicle/rsustatus/preparationCompleted~", + ~"POST /v2/vehicle/rsustatus/updateAvailable~" + )"))))):splitBy()) + / + (builtin:service.keyRequest.count.server:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method), + fromRelationship.isServiceMethodOfService( + type(~"SERVICE~"),entityName.in( + ~"RemoteSoftwareUpgrade.WebApp - PROD~" + ) + ) + ,entityName.in( + ~"POST /v2/vehicle/rsustatus/finishInstallation~", + ~"POST /v2/vehicle/rsustatus/preparationCompleted~", + ~"POST /v2/vehicle/rsustatus/updateAvailable~" + )"))))):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_VehicleList.tf b/NA_PROD/slo/TP_Mobile_VehicleList.tf index ba3010d..d848e3c 100644 --- a/NA_PROD/slo/TP_Mobile_VehicleList.tf +++ b/NA_PROD/slo/TP_Mobile_VehicleList.tf @@ -11,45 +11,30 @@ module TP_Mobile_VehicleList { 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( + 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-composite-service - PROD~" - ) - ) - ,entityName.in( - ~"GET /api/v1/vehicles~", - ~"GET /api/v2/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( + ) + ) + ,entityName.in( + ~"GET /api/v2/vehicles~", + ~"GET /api/v4/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-vehicle-composite-service - PROD~" - ) - ) - ,entityName.in( - ~"GET /api/v1/vehicles~", - ~"GET /api/v2/vehicles~" - )") - ) -))):splitBy())) + ) + ) + ,entityName.in( + ~"GET /api/v2/vehicles~", + ~"GET /api/v4/vehicles~" + )"))))):splitBy())) EOT #if not set (removed) it's defaulted to "-1d" diff --git a/NA_PROD/slo/TP_Vehicle_Alexa.tf b/NA_PROD/slo/TP_Vehicle_Alexa.tf new file mode 100644 index 0000000..892c7c7 --- /dev/null +++ b/NA_PROD/slo/TP_Vehicle_Alexa.tf @@ -0,0 +1,42 @@ +module TP_Vehicle_Alexa { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + + name = "TP_Vehicle_Alexa" + + description = "CoCo-QM-Report_Vehicle" + + + + #entity selector object + filter = "" + + + # The metric fivexx.rate shouldn't be changed to server side error metric. Reason is there is a global rule to exclude 502 errors from server side errors. + # However 502 errors should be included in the Alexa endpoint. + metric_expression = </pds~", + ~"PUT /service/api/vehicle/v1/gcid/[UUID]/vin//pds~", + ~"createAssociationForGcidAndVin~" + )"))))):splitBy()) + / + (builtin:service.keyRequest.count.server:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method), + fromRelationship.isServiceMethodOfService( + type(~"SERVICE~"),entityName.in( + ~"Perseus (/service) - cub-personalization - prod~" + ) + ) + ,entityName.in( + ~"GET /service/api/vehicle/v1/gcid/[UUID]/vin//pds~", + ~"PUT /service/api/vehicle/v1/gcid/[UUID]/vin//pds~", + ~"createAssociationForGcidAndVin~" + )"))))):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_Vehicle_Podcast.tf b/NA_PROD/slo/TP_Vehicle_Podcast.tf new file mode 100644 index 0000000..62ed2e2 --- /dev/null +++ b/NA_PROD/slo/TP_Vehicle_Podcast.tf @@ -0,0 +1,52 @@ +module TP_Vehicle_Podcast { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + + name = "TP_Vehicle_Podcast" + + description = "CoCo-QM-Report_Vehicle" + + + + #entity selector object + filter = "" + + + #metric expression of the calculation as done in data explorer ui + metric_expression = <