master
SLW\ARNAUA 2023-03-07 17:25:22 +01:00
parent a0db4c9c06
commit cdeb76b2b4
31 changed files with 745 additions and 52 deletions

View File

@ -29,4 +29,4 @@ slo_definition:
- service: "TripService - PROD" - service: "TripService - PROD"
keyRequests: keyRequests:
- "/v3/motorist/[UUID]/trips" - "/v3/motorist/[UUID]/trips"
- "/v2/motorist/[UUID]/trips" - "/v2/motorist/[UUID]/trips"

View File

@ -32,4 +32,4 @@ slo_definition:
filter: filter:
- service: "POIs" - service: "POIs"
keyRequests: keyRequests:
- "getPOIs (FTS Calls)" - "getPOIs (FTS Calls)"

View File

@ -27,4 +27,4 @@ slo_definition:
filter: filter:
- service: "Netty on 0.0.0.0:8080 - rtti - prod" - service: "Netty on 0.0.0.0:8080 - rtti - prod"
keyRequests: keyRequests:
- "" - ""

View File

@ -28,4 +28,4 @@ slo_definition:
- "/api/eu/2.5/eroute-costs/protobuf3" - "/api/eu/2.5/eroute-costs/protobuf3"
- service: "Netty on 0.0.0.0:8080 - eroute-adapter - prod" - service: "Netty on 0.0.0.0:8080 - eroute-adapter - prod"
keyRequests: keyRequests:
- "/route/eroute" - "/route/eroute"

View File

@ -39,8 +39,8 @@ slo_definition:
- "POST /api/v2/presentation/profile-account" - "POST /api/v2/presentation/profile-account"
- "GET /api/v1/presentation/profile-tab/contacts" - "GET /api/v1/presentation/profile-tab/contacts"
- service: "btc-cn-connected-oauth-service - PROD" - service: "btc-cn-connected-oauth-service - PROD"
keyRequests: keyRequests:
- "POST /api/v2/cop/login/pwd" - "POST /api/v2/cop/login/pwd"
- "POST /api/v2/cop/login/sms" - "POST /api/v2/cop/login/sms"
- "POST /api/v2/cop/sso" - "POST /api/v2/cop/sso"
- "GET /api/v1/cop/logout" - "GET /api/v1/cop/logout"

View File

@ -60,4 +60,4 @@ slo_definition:
- "POST /api/v2/vehicles/<VIN>/primary/map" - "POST /api/v2/vehicles/<VIN>/primary/map"
- "POST /api/v1/vehicles/<VIN>/validate-security-code" - "POST /api/v1/vehicles/<VIN>/validate-security-code"
- "POST /api/v1/vehicles/<VIN>/resend-security-code" - "POST /api/v1/vehicles/<VIN>/resend-security-code"
- "DELETE /api/v1/vehicles/<VIN>" - "DELETE /api/v1/vehicles/<VIN>"

View File

@ -22,24 +22,24 @@ slo_definition:
- "PUT /api/v2/favorites/<favoriteId>" - "PUT /api/v2/favorites/<favoriteId>"
- "PUT /api/v3/favorites/<favoriteId>" - "PUT /api/v3/favorites/<favoriteId>"
- "PUT /api/v2/favorites/homework/1" - "PUT /api/v2/favorites/homework/1"
- "PUT /api/v2/favorites/homework/2" - "PUT /api/v2/favorites/homework/2"
NA-Prod: NA-Prod:
- metric: "builtin:service.keyRequest.errors.server.successCount" - metric: "builtin:service.keyRequest.errors.server.successCount"
filter: filter:
- service: "btc-destination-composite-service - PROD" - service: "btc-destination-composite-service - PROD"
keyRequests: keyRequests:
- "POST /api/v2/favorites/" - "POST /api/v2/favorites/"
- "POST /api/v3/favorites/" - "POST /api/v3/favorites/"
- "GET /api/v2/favorites/" - "GET /api/v2/favorites/"
- "GET /api/v3/favorites/" - "GET /api/v3/favorites/"
- "PUT /api/v2/favorites/<favoriteId>" - "PUT /api/v2/favorites/<favoriteId>"
- "PUT /api/v3/favorites/<favoriteId>" - "PUT /api/v3/favorites/<favoriteId>"
- "DELETE /api/v2/favorites/<favoriteId>" - "DELETE /api/v2/favorites/<favoriteId>"
CN-Prod: CN-Prod:
- metric: "builtin:service.keyRequest.errors.server.successCount" - metric: "builtin:service.keyRequest.errors.server.successCount"
filter: filter:
- service: "btc-destination-composite-service - PROD" - service: "btc-destination-composite-service - PROD"
keyRequests: keyRequests:
- "GET /api/v3/favorites/" - "GET /api/v3/favorites/"
- "POST /api/v3/favorites/" - "POST /api/v3/favorites/"
- "PUT /api/v3/favorites/<favoriteId>" - "PUT /api/v3/favorites/<favoriteId>"

View File

@ -28,4 +28,4 @@ slo_definition:
filter: filter:
- service: "btc-vehicle-composite-service - PROD" - service: "btc-vehicle-composite-service - PROD"
keyRequests: keyRequests:
- "GET /api/v1/vehicles" - "GET /api/v1/vehicles"

View File

@ -13,32 +13,32 @@ slo_definition:
- metric: "builtin:service.keyRequest.errors.fivexx.count" - metric: "builtin:service.keyRequest.errors.fivexx.count"
filter: filter:
- service: "TrackApi - smc - PROD" - service: "TrackApi - smc - PROD"
keyRequests: keyRequests:
- "trackKey" - "trackKey"
- "manageKey" - "manageKey"
- service: "digital-key-composite-service - PROD" - service: "digital-key-composite-service - PROD"
keyRequests: keyRequests:
- "GET /api/v1/digitalkey/<VIN>/password" - "GET /api/v1/digitalkey/<VIN>/password"
- "GET /api/v1/digitalkey/<VIN>/pairing" - "GET /api/v1/digitalkey/<VIN>/pairing"
NA-Prod: NA-Prod:
- metric: "builtin:service.keyRequest.errors.fivexx.count" - metric: "builtin:service.keyRequest.errors.fivexx.count"
filter: filter:
- service: "TrackApi - smc - PROD" - service: "TrackApi - smc - PROD"
keyRequests: keyRequests:
- "trackKey" - "trackKey"
- "manageKey" - "manageKey"
- service: "digital-key-composite-service - PROD" - service: "digital-key-composite-service - PROD"
keyRequests: keyRequests:
- "GET /api/v1/digitalkey/<VIN>/password" - "GET /api/v1/digitalkey/<VIN>/password"
- "GET /api/v1/digitalkey/<VIN>/pairing" - "GET /api/v1/digitalkey/<VIN>/pairing"
CN-Prod: CN-Prod:
- metric: "builtin:service.keyRequest.errors.fivexx.count" - metric: "builtin:service.keyRequest.errors.fivexx.count"
filter: filter:
- service: "TrackApi - smc - PROD" - service: "TrackApi - smc - PROD"
keyRequests: keyRequests:
- "trackKey" - "trackKey"
- "manageKey" - "manageKey"
- service: "digital-key-composite-service - PROD" - service: "digital-key-composite-service - PROD"
keyRequests: keyRequests:
- "GET /api/v1/digitalkey/<VIN>/password" - "GET /api/v1/digitalkey/<VIN>/password"
- "GET /api/v1/digitalkey/<VIN>/pairing" - "GET /api/v1/digitalkey/<VIN>/pairing"

View File

@ -47,4 +47,4 @@ slo_definition:
- "POST /api/v1/download/[UUID]/<fileName>/confirm" - "POST /api/v1/download/[UUID]/<fileName>/confirm"
- "GET /api/v1/vehicle/<VIN>/egomodelurl" - "GET /api/v1/vehicle/<VIN>/egomodelurl"
- "GET /api/v1/vehicle/<VIN>/key" - "GET /api/v1/vehicle/<VIN>/key"
- "GET /api/v1/recordings/vehicle/<VIN>" - "GET /api/v1/recordings/vehicle/<VIN>"

View File

@ -52,8 +52,8 @@ slo_definition:
- "POST /api/v2/presentation/remote-commands/<VIN>/door-unlock" - "POST /api/v2/presentation/remote-commands/<VIN>/door-unlock"
- "POST /api/v2/presentation/remote-commands/<VIN>/climate-now" - "POST /api/v2/presentation/remote-commands/<VIN>/climate-now"
- "GET /api/v2/presentation/remote-history/<VIN>" - "GET /api/v2/presentation/remote-history/<VIN>"
- "POST /api/v2/presentation/remote-commands/<VIN>/horn-blow", - "POST /api/v2/presentation/remote-commands/<VIN>/horn-blow"
- "POST /api/v2/presentation/remote-commands/<VIN>/climate-timer", - "POST /api/v2/presentation/remote-commands/<VIN>/climate-timer"
- "POST /api/v2/presentation/remote-commands/<VIN>/light-flash", - "POST /api/v2/presentation/remote-commands/<VIN>/light-flash"
- "POST /api/v2/presentation/remote-commands/<VIN>/vehicle-finder", - "POST /api/v2/presentation/remote-commands/<VIN>/vehicle-finder"
- "GET /api/v1/presentation/remote-history/<VIN>" - "GET /api/v1/presentation/remote-history/<VIN>"

View File

@ -26,4 +26,4 @@ slo_definition:
filter: filter:
- service: "LegacyPoiApi - msgsvc - prod" - service: "LegacyPoiApi - msgsvc - prod"
keyRequests: keyRequests:
- "" - ""

View File

@ -30,4 +30,4 @@ slo_definition:
filter: filter:
- service: "btc-vehicle-composite-service - PROD" - service: "btc-vehicle-composite-service - PROD"
keyRequests: keyRequests:
- "GET /api/v1/vehicles" - "GET /api/v1/vehicles"

View File

@ -32,4 +32,4 @@ slo_definition:
filter: filter:
- service: "POIs" - service: "POIs"
keyRequests: keyRequests:
- "getPOIs (FTS Calls)" - "getPOIs (FTS Calls)"

25
Jenkinsfile vendored
View File

@ -17,6 +17,7 @@
// } // }
// } // }
pipeline { pipeline {
options { options {
ansiColor('xterm') ansiColor('xterm')
@ -25,11 +26,9 @@
// agent {label 'jaws-slaves'} // agent {label 'jaws-slaves'}
agent {label 'jaws-slaves'} agent {label 'jaws-slaves'}
parameters { parameters {
// string(name: 'FROMDATE', defaultValue: '', description: 'Enter from date in format YYYY-MM-DD e.g. 2021-11-01')
// string(name: 'TODATE', defaultValue: '', description: 'Enter to date in format YYYY-MM-DD e.g. 2021-11-30')
string(name: 'INPUTFOLDER', defaultValue: 'DE-3', description: 'Enter the business line (aka department) folder e.g. DE-3') string(name: 'INPUTFOLDER', defaultValue: 'DE-3', description: 'Enter the business line (aka department) folder e.g. DE-3')
string(name: 'ABRANCH', defaultValue: 'BusinessLine', description: 'Enter the branch for the shared_configuration repository')
string(name: 'BBRANCH', defaultValue: 'master', description: 'Enter the branch for the coco_terraform_config repository')
} }
@ -56,6 +55,15 @@
} }
stages { stages {
stage('Checkout Repositories'){
steps {
sh '''
git branch: '${abranch}', credentialsId: 'jaws_dynatrace_bitbuket_user', url: 'https://atc.bmwgroup.net/bitbucket/scm/opapm/shared_configuration.git'
git branch: '${bbranch}', credentialsId: 'jaws_dynatrace_bitbuket_user', url: 'https://atc.bmwgroup.net/bitbucket/scm/opapm/coco_terraform_config.git'
'''
}
}
stage('Install Required Python Packages') { stage('Install Required Python Packages') {
steps { steps {
sh ''' sh '''
@ -69,15 +77,14 @@
stage('Execute Script') { stage('Execute Script') {
steps { steps {
sh "python3 generate.py ${params.INPUTFOLDER}" sh '''
python3 generate.py .\shared_configuration\${params.INPUTFOLDER}
'''
//Only required once CN is not reachable from EMEA //Only required once CN is not reachable from EMEA
//loopEnvironments(environments) //loopEnvironments(environments)
} }
} }
} }
post { post {
@ -95,4 +102,4 @@
cleanWs() cleanWs()
} }
} }
} }

View File

@ -113,21 +113,23 @@ if __name__ == "__main__":
print(sys.argv) print(sys.argv)
if len(sys.argv) != 2: if len(sys.argv) != 2:
print(".\generate.py <FOLDER>") print(".\generate.py <path to yaml file/folder> <OUTPUTPATH>")
print("Example: .\generate.py DE-3") print("Example: .\generate.py .\DE-3\\")
print("Example: .\generate.py DE-3,DE-4,...") print("Example: .\generate.py .\DE-3\,.\DE-4\,...")
sys.exit() sys.exit()
# init folder # TESTING: Unocmment this if you want to test it
for folderName,businessLine in FOLDERS.items(): # for folderName,businessLine in FOLDERS.items():
businessLinePath = os.path.join(cwd,os.path.basename(businessLine)) # businessLinePath = os.path.join(cwd,businessLine)
if not os.path.exists(businessLinePath): # if not os.path.exists(businessLinePath):
os.makedirs(businessLinePath) # os.makedirs(businessLinePath)
# for each folder # for each folder
for arg in [sys.argv[1]]: arguments = sys.argv[1].split(',')
for arg in arguments:
pathname = os.path.join(cwd,arg)
# return path of slo config files # return path of slo config files
configFiles = glob.glob(pathname=os.path.join(cwd,os.path.basename(arg))+'\\**\\*.yaml', configFiles = glob.glob(pathname=pathname + '\\**\\*.yaml',
# root_dir=os.path.join(cwd,os.path.basename(arg)), # root_dir=os.path.join(cwd,os.path.basename(arg)),
recursive=True) recursive=True)

View File

@ -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 = <<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-destination-composite-service - PROD~"
)
),entityName.in(
~"GET /api/v3/favorites/~",
~"POST /api/v3/favorites/~",
~"PUT /api/v3/favorites/<favoriteId>~"
)"))))):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/<favoriteId>~"
)"))))):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
}

View File

@ -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 = <<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/<VIN>/door-lock~",
~"POST /api/v2/presentation/remote-commands/<VIN>/door-unlock~",
~"POST /api/v2/presentation/remote-commands/<VIN>/climate-now~",
~"GET /api/v2/presentation/remote-history/<VIN>~",
~"POST /api/v2/presentation/remote-commands/<VIN>/horn-blow~",
~"POST /api/v2/presentation/remote-commands/<VIN>/climate-timer~",
~"POST /api/v2/presentation/remote-commands/<VIN>/light-flash~",
~"POST /api/v2/presentation/remote-commands/<VIN>/vehicle-finder~",
~"GET /api/v1/presentation/remote-history/<VIN>~"
)"))))):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/<VIN>/door-lock~",
~"POST /api/v2/presentation/remote-commands/<VIN>/door-unlock~",
~"POST /api/v2/presentation/remote-commands/<VIN>/climate-now~",
~"GET /api/v2/presentation/remote-history/<VIN>~",
~"POST /api/v2/presentation/remote-commands/<VIN>/horn-blow~",
~"POST /api/v2/presentation/remote-commands/<VIN>/climate-timer~",
~"POST /api/v2/presentation/remote-commands/<VIN>/light-flash~",
~"POST /api/v2/presentation/remote-commands/<VIN>/vehicle-finder~",
~"GET /api/v1/presentation/remote-history/<VIN>~"
)"))))):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
}

View File

@ -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 = <<EOT
(100)*((:filter(and(or(in("dt.entity.service",entitySelector("type(service),entityName.in(
~"~"
)"))))):splitBy())
/
(builtin:service.requestCount.total:filter(and(or(in("dt.entity.service",entitySelector("type(service),
entityName.in(
~"~"
)"))))):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
}

View File

@ -0,0 +1,43 @@
module TP_Mobile_VehicleData {
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
name = "TP_Mobile_VehicleData"
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-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"
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
}

View File

@ -0,0 +1,43 @@
module TP_Mobile_VehicleList {
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
name = "TP_Mobile_VehicleList"
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-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"
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
}

View File

@ -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 = <<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-destination-composite-service - PROD~"
)
),entityName.in(
~"GET /api/v3/favorites/~",
~"POST /api/v3/favorites/~",
~"PUT /api/v3/favorites/<favoriteId>~"
)"))))):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/<favoriteId>~"
)"))))):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
}

View File

@ -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 = <<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/<VIN>/door-lock~",
~"POST /api/v2/presentation/remote-commands/<VIN>/door-unlock~",
~"POST /api/v2/presentation/remote-commands/<VIN>/climate-now~",
~"GET /api/v2/presentation/remote-history/<VIN>~",
~"POST /api/v2/presentation/remote-commands/<VIN>/horn-blow~",
~"POST /api/v2/presentation/remote-commands/<VIN>/climate-timer~",
~"POST /api/v2/presentation/remote-commands/<VIN>/light-flash~",
~"POST /api/v2/presentation/remote-commands/<VIN>/vehicle-finder~",
~"GET /api/v1/presentation/remote-history/<VIN>~"
)"))))):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/<VIN>/door-lock~",
~"POST /api/v2/presentation/remote-commands/<VIN>/door-unlock~",
~"POST /api/v2/presentation/remote-commands/<VIN>/climate-now~",
~"GET /api/v2/presentation/remote-history/<VIN>~",
~"POST /api/v2/presentation/remote-commands/<VIN>/horn-blow~",
~"POST /api/v2/presentation/remote-commands/<VIN>/climate-timer~",
~"POST /api/v2/presentation/remote-commands/<VIN>/light-flash~",
~"POST /api/v2/presentation/remote-commands/<VIN>/vehicle-finder~",
~"GET /api/v1/presentation/remote-history/<VIN>~"
)"))))):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
}

View File

@ -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 = <<EOT
(100)*((:filter(and(or(in("dt.entity.service",entitySelector("type(service),entityName.in(
~"~"
)"))))):splitBy())
/
(builtin:service.requestCount.total:filter(and(or(in("dt.entity.service",entitySelector("type(service),
entityName.in(
~"~"
)"))))):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
}

View File

@ -0,0 +1,43 @@
module TP_Mobile_VehicleData {
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
name = "TP_Mobile_VehicleData"
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-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"
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
}

View File

@ -0,0 +1,43 @@
module TP_Mobile_VehicleList {
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
name = "TP_Mobile_VehicleList"
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-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"
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
}

View File

@ -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 = <<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-destination-composite-service - PROD~"
)
),entityName.in(
~"GET /api/v3/favorites/~",
~"POST /api/v3/favorites/~",
~"PUT /api/v3/favorites/<favoriteId>~"
)"))))):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/<favoriteId>~"
)"))))):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
}

View File

@ -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 = <<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/<VIN>/door-lock~",
~"POST /api/v2/presentation/remote-commands/<VIN>/door-unlock~",
~"POST /api/v2/presentation/remote-commands/<VIN>/climate-now~",
~"GET /api/v2/presentation/remote-history/<VIN>~",
~"POST /api/v2/presentation/remote-commands/<VIN>/horn-blow~",
~"POST /api/v2/presentation/remote-commands/<VIN>/climate-timer~",
~"POST /api/v2/presentation/remote-commands/<VIN>/light-flash~",
~"POST /api/v2/presentation/remote-commands/<VIN>/vehicle-finder~",
~"GET /api/v1/presentation/remote-history/<VIN>~"
)"))))):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/<VIN>/door-lock~",
~"POST /api/v2/presentation/remote-commands/<VIN>/door-unlock~",
~"POST /api/v2/presentation/remote-commands/<VIN>/climate-now~",
~"GET /api/v2/presentation/remote-history/<VIN>~",
~"POST /api/v2/presentation/remote-commands/<VIN>/horn-blow~",
~"POST /api/v2/presentation/remote-commands/<VIN>/climate-timer~",
~"POST /api/v2/presentation/remote-commands/<VIN>/light-flash~",
~"POST /api/v2/presentation/remote-commands/<VIN>/vehicle-finder~",
~"GET /api/v1/presentation/remote-history/<VIN>~"
)"))))):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
}

View File

@ -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 = <<EOT
(100)*((:filter(and(or(in("dt.entity.service",entitySelector("type(service),entityName.in(
~"~"
)"))))):splitBy())
/
(builtin:service.requestCount.total:filter(and(or(in("dt.entity.service",entitySelector("type(service),
entityName.in(
~"~"
)"))))):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
}

View File

@ -0,0 +1,43 @@
module TP_Mobile_VehicleData {
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
name = "TP_Mobile_VehicleData"
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-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"
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
}

View File

@ -0,0 +1,43 @@
module TP_Mobile_VehicleList {
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
name = "TP_Mobile_VehicleList"
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-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"
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
}