From d0bc0d1d9e5965dc5ef7a7e540ada942404f4b51 Mon Sep 17 00:00:00 2001 From: "SLW\\KASIKD" Date: Thu, 23 Feb 2023 12:19:54 +0100 Subject: [PATCH] TP_Mobile_Wirkketten_Anpassung --- CN_PROD/slo/TP_Mobile_DigitalKey.tf | 69 +++++-------- CN_PROD/slo/TP_Mobile_Login.tf | 61 +++-------- CN_PROD/slo/TP_Mobile_PersonalFavorites.tf | 64 +++++------- CN_PROD/slo/TP_Mobile_RSU.tf | 51 +++++++++ CN_PROD/slo/TP_Mobile_Remote360.tf | 71 ++++--------- CN_PROD/slo/TP_Mobile_RemoteServices.tf | 108 +++++++++++--------- CN_PROD/slo/TP_Mobile_Send2VehicleLegacy.tf | 44 +++----- CN_PROD/slo/TP_Mobile_Send2VehicleMGU.tf | 59 ++++------- CN_PROD/slo/TP_Mobile_VehicleData.tf | 49 ++------- CN_PROD/slo/TP_Mobile_VehicleList.tf | 55 ++++------ CN_PROD/slo/TP_Vehicle_RSU.tf | 78 ++++++++++++++ 11 files changed, 335 insertions(+), 374 deletions(-) create mode 100644 CN_PROD/slo/TP_Mobile_RSU.tf create mode 100644 CN_PROD/slo/TP_Vehicle_RSU.tf diff --git a/CN_PROD/slo/TP_Mobile_DigitalKey.tf b/CN_PROD/slo/TP_Mobile_DigitalKey.tf index a43c09e..fa78445 100644 --- a/CN_PROD/slo/TP_Mobile_DigitalKey.tf +++ b/CN_PROD/slo/TP_Mobile_DigitalKey.tf @@ -12,51 +12,34 @@ module TP_Mobile_DigitalKey { #metric expression of the calculation as done in data explorer ui metric_expression = <<-EOT -(100)* -((1)-(builtin:service.keyRequest.errors.fivexx.count: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( - ~"POST /smc2-bl/track/v2/trackKey~", - ~"POST /smc2-bl/track/v2/manageKey~", - ~"GET /api/v1/digitalkey//password~", - ~"GET /api/v1/digitalkey//pairing~" - )") +(100)*((1)-(builtin:service.keyRequest.errors.fivexx.count: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~" + ) ) -))):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( - ~"POST /smc2-bl/track/v2/trackKey~", - ~"POST /smc2-bl/track/v2/manageKey~", - ~"GET /api/v1/digitalkey//password~", - ~"GET /api/v1/digitalkey//pairing~" - )") + ,entityName.in( + ~"trackKey~", + ~"manageKey~", + ~"GET /api/v1/digitalkey//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~" + ) ) -))):splitBy())) -EOT + ,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" diff --git a/CN_PROD/slo/TP_Mobile_Login.tf b/CN_PROD/slo/TP_Mobile_Login.tf index e9cad0b..4132f2d 100644 --- a/CN_PROD/slo/TP_Mobile_Login.tf +++ b/CN_PROD/slo/TP_Mobile_Login.tf @@ -11,60 +11,25 @@ module TP_Mobile_Login { 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), + metric_expression = <~" - )") + metric_expression = <~" - )") + ,entityName.in( + ~"GET /api/v3/favorites/~", + ~"POST /api/v3/favorites/~", + ~"PUT /api/v3/favorites/~" + )"))))):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~" + ) ) -))):splitBy())) -EOT + ,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" diff --git a/CN_PROD/slo/TP_Mobile_RSU.tf b/CN_PROD/slo/TP_Mobile_RSU.tf new file mode 100644 index 0000000..8639d1e --- /dev/null +++ b/CN_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 /v1/vehicle/rsustatus/finishInstallation~", + ~"POST /v1/vehicle/rsustatus/preparationCompleted~", + ~"POST /v1/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 /v1/vehicle/rsustatus/finishInstallation~", + ~"POST /v1/vehicle/rsustatus/preparationCompleted~", + ~"POST /v1/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/CN_PROD/slo/TP_Mobile_Remote360.tf b/CN_PROD/slo/TP_Mobile_Remote360.tf index e12644d..a2a2b2b 100644 --- a/CN_PROD/slo/TP_Mobile_Remote360.tf +++ b/CN_PROD/slo/TP_Mobile_Remote360.tf @@ -11,58 +11,25 @@ module TP_Mobile_Remote360 { 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( - ~"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()) -/ -(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 + metric_expression = <~", + ~"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" diff --git a/CN_PROD/slo/TP_Mobile_RemoteServices.tf b/CN_PROD/slo/TP_Mobile_RemoteServices.tf index a2895c6..82252c8 100644 --- a/CN_PROD/slo/TP_Mobile_RemoteServices.tf +++ b/CN_PROD/slo/TP_Mobile_RemoteServices.tf @@ -13,60 +13,66 @@ module TP_Mobile_RemoteServices { #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/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/~" - )") +((builtin:service.keyRequest.errors.server.successCount:filter(and(in("dt.entity.service_method",entitySelector("type(service_method), + fromRelationship.isServiceMethodOfService( + type(~"SERVICE~"),entityName.in( + ~"btc-vehicle-remote-commands-composite-service - PROD~" ) -))):splitBy()) + ) + ,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/~", + ~"POST /api/v3/presentation/remote-commands/eventStatus~", + ~"POST /api/v3/presentation/remote-commands//door-lock~", + ~"POST /api/v3/presentation/remote-commands//door-unlock~", + ~"POST /api/v3/presentation/remote-commands//climate-now~", + ~"GET /api/v3/presentation/remote-history/~", + ~"POST /api/v3/presentation/remote-commands//horn-blow~", + ~"POST /api/v3/presentation/remote-commands//climate-timer~", + ~"POST /api/v3/presentation/remote-commands//light-flash~", + ~"POST /api/v3/presentation/remote-commands//vehicle-finder~" + )") + ) +)):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/~" - )") +(builtin:service.keyRequest.count.server:filter(and(in("dt.entity.service_method",entitySelector("type(service_method), + fromRelationship.isServiceMethodOfService( + type(~"SERVICE~"),entityName.in( + ~"btc-vehicle-remote-commands-composite-service - PROD~" ) -))):splitBy())) -EOT + ) + ,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/~", + ~"POST /api/v3/presentation/remote-commands/eventStatus~", + ~"POST /api/v3/presentation/remote-commands//door-lock~", + ~"POST /api/v3/presentation/remote-commands//door-unlock~", + ~"POST /api/v3/presentation/remote-commands//climate-now~", + ~"GET /api/v3/presentation/remote-history/~", + ~"POST /api/v3/presentation/remote-commands//horn-blow~", + ~"POST /api/v3/presentation/remote-commands//climate-timer~", + ~"POST /api/v3/presentation/remote-commands//light-flash~", + ~"POST /api/v3/presentation/remote-commands//vehicle-finder~" + )") + ) +)):splitBy())) + EOT #if not set (removed) it's defaulted to "-1d" timeframe = "-1d" diff --git a/CN_PROD/slo/TP_Mobile_Send2VehicleLegacy.tf b/CN_PROD/slo/TP_Mobile_Send2VehicleLegacy.tf index c8b339c..1c9b8b7 100644 --- a/CN_PROD/slo/TP_Mobile_Send2VehicleLegacy.tf +++ b/CN_PROD/slo/TP_Mobile_Send2VehicleLegacy.tf @@ -11,36 +11,20 @@ module TP_Mobile_Send2VehicleLegacy { filter = "" #metric expression of the calculation as done in data explorer ui - metric_expression = <<-EOT -(100)* -((builtin:service.errors.server.successCount:filter( - and( - or( - in( - "dt.entity.service", - entitySelector("type(service), - entityName.in( - ~"LegacyPoiApi - msgsvc - prod~" - ) - ") - ) - ) -)):splitBy()) -/ -(builtin:service.requestCount.total:filter( - and( - or( - in( - "dt.entity.service", - entitySelector("type(service), - entityName.in( - ~"LegacyPoiApi - msgsvc - prod~" - ) - ") - ) - ) -)):splitBy())) -EOT + metric_expression = </state~", - ~"GET /v1/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( - ~"btc-vehicle-composite-service - PROD~", - ~"VehicleService - PROD~" - ) - ) - ,entityName.in( - ~"GET /api/v1/vehicles//state~", - ~"GET /v1/vehicle/~" - )") - ) -))):splitBy())) -EOT + ,entityName.in( + ~"GET /api/v1/vehicles//state~", + ~"GET /v1/vehicle/~", + ~"GET /v2/vehicle/~" + )")))):splitBy()) + + EOT #if not set (removed) it's defaulted to "-1d" timeframe = "-1d" diff --git a/CN_PROD/slo/TP_Mobile_VehicleList.tf b/CN_PROD/slo/TP_Mobile_VehicleList.tf index a960632..97d9d78 100644 --- a/CN_PROD/slo/TP_Mobile_VehicleList.tf +++ b/CN_PROD/slo/TP_Mobile_VehicleList.tf @@ -12,40 +12,27 @@ module TP_Mobile_VehicleList { #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-composite-service - PROD~") - ) - ,entityName.in( - ~"GET /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-vehicle-composite-service - PROD~") - ) - ,entityName.in( - ~"GET /api/v1/vehicles~" - )") - ) -))):splitBy())) + (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~" + )"))))):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~" + )"))))):splitBy())) EOT #if not set (removed) it's defaulted to "-1d" diff --git a/CN_PROD/slo/TP_Vehicle_RSU.tf b/CN_PROD/slo/TP_Vehicle_RSU.tf new file mode 100644 index 0000000..1de5ab9 --- /dev/null +++ b/CN_PROD/slo/TP_Vehicle_RSU.tf @@ -0,0 +1,78 @@ +module TP_Vehicle_RSU { + + source = "../../_dynatrace-base-modules/dynatrace-service-level-objective" + + + name = "TP_Vehicle_RSU" + + description = "CoCo-QM-Report_Vehicle" + + + + #entity selector object + filter = "" + + + + #metric expression of the calculation as done in data explorer ui + metric_expression = <