modified
parent
245a296ec4
commit
121ee28bc1
|
|
@ -14,27 +14,17 @@ slo_definition:
|
|||
filter:
|
||||
- service: "Netty on 0.0.0.0:8080 - rtti - prod"
|
||||
keyRequests:
|
||||
- "/api/default"
|
||||
- "/api/tw"
|
||||
- "/api/ru"
|
||||
- "/api/au"
|
||||
- "/api/sea"
|
||||
- "/api/br"
|
||||
- "/api/mx"
|
||||
- "/api/za"
|
||||
- "/api/tw-mgu21"
|
||||
- "/api/nz"
|
||||
- "/api/ae"
|
||||
- "/api/kw"
|
||||
- ""
|
||||
NA-Prod:
|
||||
- metric: "builtin:service.errors.fivexx.successCount"
|
||||
- metric: "builtin:service.keyRequest.errors.server.successCount"
|
||||
filter:
|
||||
- service: "Netty on 0.0.0.0:8080 - rtti - prod"
|
||||
- service: "btc-vehicle-composite-service - PROD"
|
||||
keyRequests:
|
||||
- "/api/na"
|
||||
- "GET /api/v2/vehicles"
|
||||
- "GET /api/v4/vehicles"
|
||||
CN-Prod:
|
||||
- metric: "builtin:service.errors.fivexx.successCount"
|
||||
filter:
|
||||
- service: "Netty on 0.0.0.0:8080 - rtti - prod"
|
||||
keyRequests:
|
||||
- "/api/cn"
|
||||
- ""
|
||||
|
|
|
|||
|
|
@ -0,0 +1,45 @@
|
|||
---
|
||||
slo_id: "9"
|
||||
slo_name: 'TP_Mobile_PersonalFavorites'
|
||||
displayname: "Personal Favorites"
|
||||
department: "DE-443"
|
||||
description: "2.0 SLO Mobile"
|
||||
doc_url: "https://atc.bmwgroup.net/confluence/x/w1SqdQ"
|
||||
slo_definition:
|
||||
tresholds:
|
||||
warning: 99 #traffic light orange
|
||||
failure: 98 #traffic light red
|
||||
EMEA-Prod:
|
||||
- metric: "builtin:service.keyRequest.errors.server.successCount"
|
||||
filter:
|
||||
- service: "btc-destination-composite-service - PROD"
|
||||
keyRequests:
|
||||
- "POST /api/v2/favorites/"
|
||||
- "POST /api/v3/favorites/"
|
||||
- "GET /api/v2/favorites/"
|
||||
- "GET /api/v3/favorites/"
|
||||
- "GET /api/v1/favorites"
|
||||
- "PUT /api/v2/favorites/<favoriteId>"
|
||||
- "PUT /api/v3/favorites/<favoriteId>"
|
||||
- "PUT /api/v2/favorites/homework/1"
|
||||
- "PUT /api/v2/favorites/homework/2"
|
||||
NA-Prod:
|
||||
- metric: "builtin:service.keyRequest.errors.server.successCount"
|
||||
filter:
|
||||
- service: "btc-destination-composite-service - PROD"
|
||||
keyRequests:
|
||||
- "POST /api/v2/favorites/"
|
||||
- "POST /api/v3/favorites/"
|
||||
- "GET /api/v2/favorites/"
|
||||
- "GET /api/v3/favorites/"
|
||||
- "PUT /api/v2/favorites/<favoriteId>"
|
||||
- "PUT /api/v3/favorites/<favoriteId>"
|
||||
- "DELETE /api/v2/favorites/<favoriteId>"
|
||||
CN-Prod:
|
||||
- metric: "builtin:service.keyRequest.errors.server.successCount"
|
||||
filter:
|
||||
- service: "btc-destination-composite-service - PROD"
|
||||
keyRequests:
|
||||
- "GET /api/v3/favorites/"
|
||||
- "POST /api/v3/favorites/"
|
||||
- "PUT /api/v3/favorites/<favoriteId>"
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
---
|
||||
slo_id: "10"
|
||||
slo_name: 'TP_Mobile_DigitalKey'
|
||||
displayname: "Digital Key"
|
||||
department: "DE-730"
|
||||
description: "2.0 SLO Mobile"
|
||||
doc_url: "https://atc.bmwgroup.net/confluence/x/u1SqdQ"
|
||||
slo_definition:
|
||||
tresholds:
|
||||
warning: 99 #traffic light orange
|
||||
failure: 98 #traffic light red
|
||||
EMEA-Prod:
|
||||
- metric: "builtin:service.keyRequest.errors.fivexx.count"
|
||||
filter:
|
||||
- service: "TrackApi - smc - PROD"
|
||||
keyRequests:
|
||||
- "trackKey"
|
||||
- "manageKey"
|
||||
- service: "digital-key-composite-service - PROD"
|
||||
keyRequests:
|
||||
- "GET /api/v1/digitalkey/<VIN>/password"
|
||||
- "GET /api/v1/digitalkey/<VIN>/pairing"
|
||||
NA-Prod:
|
||||
- metric: "builtin:service.keyRequest.errors.fivexx.count"
|
||||
filter:
|
||||
- service: "TrackApi - smc - PROD"
|
||||
keyRequests:
|
||||
- "trackKey"
|
||||
- "manageKey"
|
||||
- service: "digital-key-composite-service - PROD"
|
||||
keyRequests:
|
||||
- "GET /api/v1/digitalkey/<VIN>/password"
|
||||
- "GET /api/v1/digitalkey/<VIN>/pairing"
|
||||
CN-Prod:
|
||||
- metric: "builtin:service.keyRequest.errors.fivexx.count"
|
||||
filter:
|
||||
- service: "TrackApi - smc - PROD"
|
||||
keyRequests:
|
||||
- "trackKey"
|
||||
- "manageKey"
|
||||
- service: "digital-key-composite-service - PROD"
|
||||
keyRequests:
|
||||
- "GET /api/v1/digitalkey/<VIN>/password"
|
||||
- "GET /api/v1/digitalkey/<VIN>/pairing"
|
||||
|
|
@ -15,30 +15,15 @@ slo_definition:
|
|||
- service: "LegacyPoiApi - msgsvc - prod"
|
||||
keyRequests:
|
||||
- ""
|
||||
- metric: "builtin:service.requestCount.total"
|
||||
filter:
|
||||
- service: "LegacyPoiApi - msgsvc - prod"
|
||||
keyRequests:
|
||||
- ""
|
||||
NA-Prod:
|
||||
- metric: "builtin:service.errors.server.successCount"
|
||||
filter:
|
||||
- service: "LegacyPoiApi - msgsvc - prod"
|
||||
keyRequests:
|
||||
- ""
|
||||
- metric: "builtin:service.requestCount.total"
|
||||
filter:
|
||||
- service: "LegacyPoiApi - msgsvc - prod"
|
||||
keyRequests:
|
||||
- ""
|
||||
CN-Prod:
|
||||
- metric: "builtin:service.errors.server.successCount"
|
||||
filter:
|
||||
- service: "LegacyPoiApi - msgsvc - prod"
|
||||
keyRequests:
|
||||
- ""
|
||||
- metric: "builtin:service.requestCount.total"
|
||||
filter:
|
||||
- service: "LegacyPoiApi - msgsvc - prod"
|
||||
keyRequests:
|
||||
- ""
|
||||
30
README.md
30
README.md
|
|
@ -1,7 +1,27 @@
|
|||
Requirements:
|
||||
Welche SLOs sollen reingepackt werden?
|
||||
Nur QM-Report und Dashboard
|
||||
# YAML 2 Terraform Generator
|
||||
## Description
|
||||
The task was to create a first draft of a script that can use a specific YAML file datastructure to generate Terraform configuration files. Afterwards it can be used as part of a Jenkins pipeline.
|
||||
|
||||
1 Skript YAML files für jede dieser SLOs https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/qm_report/browse/slo_parameter.yaml?at=refs%2Fheads%2FVersion2 eintragen
|
||||
2 Skript, dass die YAML files einliest und Terraform files generiert, welche dann via Jenkins eingespielt werden können
|
||||
## Info
|
||||
- YAML files should be stored according to the business line
|
||||
- DE-3
|
||||
- DE-4
|
||||
- DE-7
|
||||
- EC-DE
|
||||
- Some YAML files have been created for testing purposes based on the shared_configuration and CoCo_Terraform_Config repositories.
|
||||
|
||||
- [shared_configuration](https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/shared_configuration)
|
||||
- [CoCo_Terraform_Config](https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/coco_terraform_config)
|
||||
|
||||
## Requirements
|
||||
### Python
|
||||
The used python version for running the script is 3.11.2.
|
||||
### Libraries
|
||||
Some python packages need to be installed. Please use the requirements.txt file to install missing packages.
|
||||
|
||||
## Running the program
|
||||
Using the program is straightforward.
|
||||
- `.\generate.py <business line>`
|
||||
- Example: `.\generate.py DE-3`
|
||||
- `.\generate DE-3,DE-4,DE-7,EC-DE`
|
||||
|
||||
|
|
|
|||
|
|
@ -12,10 +12,11 @@ from pathlib import Path
|
|||
OUTPUT_FOLDER_BASENAME = os.path.basename("output")
|
||||
TEMPLATE_FOLDER_BASENAME = os.path.basename("jinja-templates")
|
||||
TEMPLATE_FILES = {
|
||||
"terraform-template.j2": ["builtin:service.keyRequest.errors.fivexx.rate"],
|
||||
"terraform-template-1.j2":["builtin:service.keyRequest.errors.fivexx.rate"],
|
||||
"terraform-template-2.j2":["builtin:service.keyRequest.errors.server.successCount"],
|
||||
"terraform-template-3.j2":["builtin:service.keyRequest.errors.fivexx.count"],
|
||||
"terraform-template-4.j2":["builtin:service.successes.server.rate"]
|
||||
"terraform-template-4.j2":["builtin:service.errors.server.successCount"],
|
||||
"terraform-template-5.j2":["builtin:service.errors.fivexx.successCount"]
|
||||
}
|
||||
FOLDERS = {"My Journey":"DE-3",
|
||||
"Connected Vehicle Platforms":"DE-7",
|
||||
|
|
@ -45,8 +46,8 @@ def main(configFile):
|
|||
environments = {}
|
||||
template = None
|
||||
metric = None
|
||||
services = None
|
||||
keyRequests = None
|
||||
services = []
|
||||
keyRequests = []
|
||||
|
||||
try:
|
||||
# read yaml file
|
||||
|
|
@ -89,20 +90,21 @@ def main(configFile):
|
|||
metric = nested_lookup('metric',ev)
|
||||
|
||||
for service in ev[0]["filter"]:
|
||||
services = nested_lookup('service',service)
|
||||
keyRequests = nested_lookup('keyRequests',service)
|
||||
services.append(nested_lookup('service',service))
|
||||
keyRequests.append(nested_lookup('keyRequests',service))
|
||||
|
||||
with open(os.path.join(folder_path,module_name+".tf"),"w+") as file:
|
||||
jinja_template = jinja_environment.get_template(template_logic(metric))
|
||||
file.write(jinja_template.render(module=module_name,
|
||||
slo_name=slo_name,
|
||||
metric=metric,
|
||||
metric=metric[0],
|
||||
description=description,
|
||||
services='~",\n\t\t\t\t~"'.join(services),
|
||||
keyRequests='~",\n\t\t\t\t~"'.join(itertools.chain.from_iterable(keyRequests)),
|
||||
services='~",\n\t\t\t\t~"'.join(itertools.chain.from_iterable(services)),
|
||||
keyRequests='~",\n\t\t\t\t~"'.join(itertools.chain.from_iterable(itertools.chain.from_iterable(keyRequests))),
|
||||
target=slo_definition_tresholds_failure,
|
||||
warning=slo_definition_tresholds_warning))
|
||||
|
||||
services = []
|
||||
keyRequests = []
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
|
|
@ -111,9 +113,9 @@ if __name__ == "__main__":
|
|||
|
||||
print(sys.argv)
|
||||
if len(sys.argv) != 2:
|
||||
print(".\convert.py <FOLDER>")
|
||||
print("Example: .\convert.py DE-3")
|
||||
print("Example: .\convert.py DE-3,DE-4,...")
|
||||
print(".\generate.py <FOLDER>")
|
||||
print("Example: .\generate.py DE-3")
|
||||
print("Example: .\generate.py DE-3,DE-4,...")
|
||||
sys.exit()
|
||||
|
||||
# init folder
|
||||
|
|
@ -10,11 +10,15 @@ module {{ module }} {
|
|||
filter = ""
|
||||
|
||||
# metric expression of the calculation as done in data explorer ui
|
||||
metric_expression = <<<EOT
|
||||
{{ metric }}:filter(and(or(in("dt.entity.service",entitySelector("type(~"SERVICE~"),
|
||||
metric_expression = <<EOT
|
||||
(100)*((:filter(and(or(in("dt.entity.service",entitySelector("type(service),entityName.in(
|
||||
~"{{ service }}~"
|
||||
)"))))):splitBy())
|
||||
/
|
||||
(builtin:service.requestCount.total:filter(and(or(in("dt.entity.service",entitySelector("type(service),
|
||||
entityName.in(
|
||||
~"{{ services }}~"
|
||||
)"))))):splitBy()
|
||||
~"{{ service }}~"
|
||||
)"))))):splitBy()))
|
||||
EOT
|
||||
|
||||
# if not set (removed) it's defaulted to "-1d"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
module {{ module }} {
|
||||
|
||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
||||
|
||||
name = "{{ slo_name }}"
|
||||
|
||||
description = "{{ description }}"
|
||||
|
||||
# entity selector object
|
||||
filter = ""
|
||||
|
||||
# metric expression of the calculation as done in data explorer ui
|
||||
metric_expression = <<EOT
|
||||
(100)*(({{ metric }}:filter(and(or(in("dt.entity.service",entitySelector("type(service),
|
||||
entityName.equals(
|
||||
~"{{ services }}~"
|
||||
)"))))):splitBy())
|
||||
/
|
||||
(builtin:service.requestCount.total:filter(and(or(in("dt.entity.service",entitySelector("type(service),
|
||||
entityName.equals(
|
||||
~"{{ services }}~"
|
||||
)"))))):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 = {{ target }} # if not set(removed) it's defaulted to 98
|
||||
warning = {{ warning }} # if not set(removed) it's defaulted to 99
|
||||
|
||||
}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
module TP_Mobile_VehicleList {
|
||||
module TP_Mobile_DigitalKey {
|
||||
|
||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
||||
|
||||
name = "TP_Mobile_VehicleList"
|
||||
name = "TP_Mobile_DigitalKey"
|
||||
|
||||
description = "2.0 SLO Mobile"
|
||||
|
||||
|
|
@ -11,22 +11,30 @@ 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),
|
||||
(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(
|
||||
~"btc-vehicle-composite-service - PROD~"
|
||||
~"TrackApi - smc - PROD~",
|
||||
~"digital-key-composite-service - PROD~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"GET /api/v1/vehicles~"
|
||||
~"trackKey~",
|
||||
~"manageKey~",
|
||||
~"GET /api/v1/digitalkey/<VIN>/password~",
|
||||
~"GET /api/v1/digitalkey/<VIN>/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(
|
||||
~"btc-vehicle-composite-service - PROD~"
|
||||
~"TrackApi - smc - PROD~",
|
||||
~"digital-key-composite-service - PROD~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"GET /api/v1/vehicles~"
|
||||
~"trackKey~",
|
||||
~"manageKey~",
|
||||
~"GET /api/v1/digitalkey/<VIN>/password~",
|
||||
~"GET /api/v1/digitalkey/<VIN>/pairing~"
|
||||
)"))))):splitBy()))
|
||||
EOT
|
||||
|
||||
|
|
@ -11,12 +11,17 @@ module TP_Mobile_Login {
|
|||
|
||||
# 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),
|
||||
(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-user-composite-service - PROD~",
|
||||
~"btc-cn-connected-oauth-service - PROD~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"GET /api/v1/presentation/profile-account~",
|
||||
~"GET /api/v2/presentation/profile-account~",
|
||||
~"POST /api/v2/presentation/profile-account~",
|
||||
~"GET /api/v1/presentation/profile-tab/contacts~",
|
||||
~"POST /api/v2/cop/login/pwd~",
|
||||
~"POST /api/v2/cop/login/sms~",
|
||||
~"POST /api/v2/cop/sso~",
|
||||
|
|
@ -26,9 +31,14 @@ module TP_Mobile_Login {
|
|||
(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~",
|
||||
~"btc-cn-connected-oauth-service - PROD~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"GET /api/v1/presentation/profile-account~",
|
||||
~"GET /api/v2/presentation/profile-account~",
|
||||
~"POST /api/v2/presentation/profile-account~",
|
||||
~"GET /api/v1/presentation/profile-tab/contacts~",
|
||||
~"POST /api/v2/cop/login/pwd~",
|
||||
~"POST /api/v2/cop/login/sms~",
|
||||
~"POST /api/v2/cop/sso~",
|
||||
|
|
|
|||
|
|
@ -11,12 +11,14 @@ module TP_Mobile_Mapping {
|
|||
|
||||
# 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),
|
||||
(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-user-composite-service - PROD~",
|
||||
~"vehicle-mapping-composite-service - PROD~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"GET /api/v2/presentation/users/validate~",
|
||||
~"POST /api/v2/vehicles/<VIN>/primary~",
|
||||
~"POST /api/v2/vehicles/<VIN>/primary/map~",
|
||||
~"POST /api/v1/vehicles/<VIN>/validate-security-code~",
|
||||
|
|
@ -27,9 +29,11 @@ module TP_Mobile_Mapping {
|
|||
(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/<VIN>/primary~",
|
||||
~"POST /api/v2/vehicles/<VIN>/primary/map~",
|
||||
~"POST /api/v1/vehicles/<VIN>/validate-security-code~",
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ module TP_Mobile_Remote360 {
|
|||
|
||||
# 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),
|
||||
(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~"
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ module TP_Mobile_Send2VehicleMGU {
|
|||
|
||||
# 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),
|
||||
(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(
|
||||
~"TripService - PROD~"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
module TP_Vehicle_FTS {
|
||||
|
||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
||||
|
||||
name = "TP_Vehicle_FTS"
|
||||
|
||||
description = "CoCo-QM-Report_Draft"
|
||||
|
||||
# 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(
|
||||
~"POIs~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"getPOIs (FTS Calls)~"
|
||||
)"))))):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
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
module TP_Vehicle_RTTI {
|
||||
|
||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
||||
|
||||
name = "TP_Vehicle_RTTI"
|
||||
|
||||
description = "CoCo-QM-Report_Vehicle"
|
||||
|
||||
# entity selector object
|
||||
filter = ""
|
||||
|
||||
# metric expression of the calculation as done in data explorer ui
|
||||
metric_expression = <<EOT
|
||||
(100)*((builtin:service.errors.fivexx.successCount:filter(and(or(in("dt.entity.service",entitySelector("type(service),
|
||||
entityName.equals(
|
||||
~"Netty on 0.0.0.0:8080 - rtti - prod~"
|
||||
)"))))):splitBy())
|
||||
/
|
||||
(builtin:service.requestCount.total:filter(and(or(in("dt.entity.service",entitySelector("type(service),
|
||||
entityName.equals(
|
||||
~"Netty on 0.0.0.0:8080 - rtti - prod~"
|
||||
)"))))):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
|
||||
|
||||
}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
module TP_Mobile_VehicleList {
|
||||
module TP_Mobile_DigitalKey {
|
||||
|
||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
||||
|
||||
name = "TP_Mobile_VehicleList"
|
||||
name = "TP_Mobile_DigitalKey"
|
||||
|
||||
description = "2.0 SLO Mobile"
|
||||
|
||||
|
|
@ -11,22 +11,30 @@ 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),
|
||||
(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(
|
||||
~"btc-vehicle-composite-service - PROD~"
|
||||
~"TrackApi - smc - PROD~",
|
||||
~"digital-key-composite-service - PROD~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"GET /api/v1/vehicles~"
|
||||
~"trackKey~",
|
||||
~"manageKey~",
|
||||
~"GET /api/v1/digitalkey/<VIN>/password~",
|
||||
~"GET /api/v1/digitalkey/<VIN>/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(
|
||||
~"btc-vehicle-composite-service - PROD~"
|
||||
~"TrackApi - smc - PROD~",
|
||||
~"digital-key-composite-service - PROD~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"GET /api/v1/vehicles~"
|
||||
~"trackKey~",
|
||||
~"manageKey~",
|
||||
~"GET /api/v1/digitalkey/<VIN>/password~",
|
||||
~"GET /api/v1/digitalkey/<VIN>/pairing~"
|
||||
)"))))):splitBy()))
|
||||
EOT
|
||||
|
||||
|
|
@ -11,12 +11,17 @@ module TP_Mobile_Login {
|
|||
|
||||
# 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),
|
||||
(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-user-composite-service - PROD~",
|
||||
~"btc-cn-connected-oauth-service - PROD~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"GET /api/v1/presentation/profile-account~",
|
||||
~"GET /api/v2/presentation/profile-account~",
|
||||
~"POST /api/v2/presentation/profile-account~",
|
||||
~"GET /api/v1/presentation/profile-tab/contacts~",
|
||||
~"POST /api/v2/cop/login/pwd~",
|
||||
~"POST /api/v2/cop/login/sms~",
|
||||
~"POST /api/v2/cop/sso~",
|
||||
|
|
@ -26,9 +31,14 @@ module TP_Mobile_Login {
|
|||
(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~",
|
||||
~"btc-cn-connected-oauth-service - PROD~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"GET /api/v1/presentation/profile-account~",
|
||||
~"GET /api/v2/presentation/profile-account~",
|
||||
~"POST /api/v2/presentation/profile-account~",
|
||||
~"GET /api/v1/presentation/profile-tab/contacts~",
|
||||
~"POST /api/v2/cop/login/pwd~",
|
||||
~"POST /api/v2/cop/login/sms~",
|
||||
~"POST /api/v2/cop/sso~",
|
||||
|
|
|
|||
|
|
@ -11,12 +11,14 @@ module TP_Mobile_Mapping {
|
|||
|
||||
# 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),
|
||||
(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-user-composite-service - PROD~",
|
||||
~"vehicle-mapping-composite-service - PROD~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"GET /api/v2/presentation/users/validate~",
|
||||
~"POST /api/v2/vehicles/<VIN>/primary~",
|
||||
~"POST /api/v2/vehicles/<VIN>/primary/map~",
|
||||
~"POST /api/v1/vehicles/<VIN>/validate-security-code~",
|
||||
|
|
@ -27,9 +29,11 @@ module TP_Mobile_Mapping {
|
|||
(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/<VIN>/primary~",
|
||||
~"POST /api/v2/vehicles/<VIN>/primary/map~",
|
||||
~"POST /api/v1/vehicles/<VIN>/validate-security-code~",
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ module TP_Mobile_Remote360 {
|
|||
|
||||
# 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),
|
||||
(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~"
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ module TP_Mobile_Send2VehicleMGU {
|
|||
|
||||
# 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),
|
||||
(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(
|
||||
~"TripService - PROD~"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
module TP_Vehicle_FTS {
|
||||
|
||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
||||
|
||||
name = "TP_Vehicle_FTS"
|
||||
|
||||
description = "CoCo-QM-Report_Draft"
|
||||
|
||||
# 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(
|
||||
~"POIs~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"getPOIs (FTS Calls)~"
|
||||
)"))))):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
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
module TP_Vehicle_RTTI {
|
||||
|
||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
||||
|
||||
name = "TP_Vehicle_RTTI"
|
||||
|
||||
description = "CoCo-QM-Report_Vehicle"
|
||||
|
||||
# entity selector object
|
||||
filter = ""
|
||||
|
||||
# metric expression of the calculation as done in data explorer ui
|
||||
metric_expression = <<EOT
|
||||
(100)*((builtin:service.errors.fivexx.successCount:filter(and(or(in("dt.entity.service",entitySelector("type(service),
|
||||
entityName.equals(
|
||||
~"Netty on 0.0.0.0:8080 - rtti - prod~"
|
||||
)"))))):splitBy())
|
||||
/
|
||||
(builtin:service.requestCount.total:filter(and(or(in("dt.entity.service",entitySelector("type(service),
|
||||
entityName.equals(
|
||||
~"Netty on 0.0.0.0:8080 - rtti - prod~"
|
||||
)"))))):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
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
module TP_Vehicle_eRoute {
|
||||
|
||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
||||
|
||||
name = "TP_Vehicle_eRoute"
|
||||
|
||||
description = "CoCo QM-Report_Vehicle"
|
||||
|
||||
# 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(
|
||||
~"Netty on 0.0.0.0:8080 - eroute-ext - prod~",
|
||||
~"Netty on 0.0.0.0:8080 - eroute-adapter - prod~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"/api/eu/2.5/eroute/protobuf3~",
|
||||
~"/api/eu/2.5/eroute-costs/protobuf3~",
|
||||
~"/route/eroute~"
|
||||
)"))))):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
|
||||
|
||||
}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
module TP_Mobile_VehicleList {
|
||||
module TP_Mobile_DigitalKey {
|
||||
|
||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
||||
|
||||
name = "TP_Mobile_VehicleList"
|
||||
name = "TP_Mobile_DigitalKey"
|
||||
|
||||
description = "2.0 SLO Mobile"
|
||||
|
||||
|
|
@ -11,22 +11,30 @@ 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),
|
||||
(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(
|
||||
~"btc-vehicle-composite-service - PROD~"
|
||||
~"TrackApi - smc - PROD~",
|
||||
~"digital-key-composite-service - PROD~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"GET /api/v1/vehicles~"
|
||||
~"trackKey~",
|
||||
~"manageKey~",
|
||||
~"GET /api/v1/digitalkey/<VIN>/password~",
|
||||
~"GET /api/v1/digitalkey/<VIN>/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(
|
||||
~"btc-vehicle-composite-service - PROD~"
|
||||
~"TrackApi - smc - PROD~",
|
||||
~"digital-key-composite-service - PROD~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"GET /api/v1/vehicles~"
|
||||
~"trackKey~",
|
||||
~"manageKey~",
|
||||
~"GET /api/v1/digitalkey/<VIN>/password~",
|
||||
~"GET /api/v1/digitalkey/<VIN>/pairing~"
|
||||
)"))))):splitBy()))
|
||||
EOT
|
||||
|
||||
|
|
@ -11,12 +11,17 @@ module TP_Mobile_Login {
|
|||
|
||||
# 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),
|
||||
(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-user-composite-service - PROD~",
|
||||
~"btc-cn-connected-oauth-service - PROD~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"GET /api/v1/presentation/profile-account~",
|
||||
~"GET /api/v2/presentation/profile-account~",
|
||||
~"POST /api/v2/presentation/profile-account~",
|
||||
~"GET /api/v1/presentation/profile-tab/contacts~",
|
||||
~"POST /api/v2/cop/login/pwd~",
|
||||
~"POST /api/v2/cop/login/sms~",
|
||||
~"POST /api/v2/cop/sso~",
|
||||
|
|
@ -26,9 +31,14 @@ module TP_Mobile_Login {
|
|||
(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~",
|
||||
~"btc-cn-connected-oauth-service - PROD~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"GET /api/v1/presentation/profile-account~",
|
||||
~"GET /api/v2/presentation/profile-account~",
|
||||
~"POST /api/v2/presentation/profile-account~",
|
||||
~"GET /api/v1/presentation/profile-tab/contacts~",
|
||||
~"POST /api/v2/cop/login/pwd~",
|
||||
~"POST /api/v2/cop/login/sms~",
|
||||
~"POST /api/v2/cop/sso~",
|
||||
|
|
|
|||
|
|
@ -11,12 +11,14 @@ module TP_Mobile_Mapping {
|
|||
|
||||
# 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),
|
||||
(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-user-composite-service - PROD~",
|
||||
~"vehicle-mapping-composite-service - PROD~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"GET /api/v2/presentation/users/validate~",
|
||||
~"POST /api/v2/vehicles/<VIN>/primary~",
|
||||
~"POST /api/v2/vehicles/<VIN>/primary/map~",
|
||||
~"POST /api/v1/vehicles/<VIN>/validate-security-code~",
|
||||
|
|
@ -27,9 +29,11 @@ module TP_Mobile_Mapping {
|
|||
(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/<VIN>/primary~",
|
||||
~"POST /api/v2/vehicles/<VIN>/primary/map~",
|
||||
~"POST /api/v1/vehicles/<VIN>/validate-security-code~",
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ module TP_Mobile_Remote360 {
|
|||
|
||||
# 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),
|
||||
(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~"
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ module TP_Mobile_Send2VehicleMGU {
|
|||
|
||||
# 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),
|
||||
(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(
|
||||
~"TripService - PROD~"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
module TP_Vehicle_FTS {
|
||||
|
||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
||||
|
||||
name = "TP_Vehicle_FTS"
|
||||
|
||||
description = "CoCo-QM-Report_Draft"
|
||||
|
||||
# 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(
|
||||
~"POIs~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"getPOIs (FTS Calls)~"
|
||||
)"))))):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
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
module TP_Vehicle_RTTI {
|
||||
|
||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
||||
|
||||
name = "TP_Vehicle_RTTI"
|
||||
|
||||
description = "CoCo-QM-Report_Vehicle"
|
||||
|
||||
# entity selector object
|
||||
filter = ""
|
||||
|
||||
# metric expression of the calculation as done in data explorer ui
|
||||
metric_expression = <<EOT
|
||||
(100)*((builtin:service.errors.fivexx.successCount:filter(and(or(in("dt.entity.service",entitySelector("type(service),
|
||||
entityName.equals(
|
||||
~"Netty on 0.0.0.0:8080 - rtti - prod~"
|
||||
)"))))):splitBy())
|
||||
/
|
||||
(builtin:service.requestCount.total:filter(and(or(in("dt.entity.service",entitySelector("type(service),
|
||||
entityName.equals(
|
||||
~"Netty on 0.0.0.0:8080 - rtti - prod~"
|
||||
)"))))):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
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
module TP_Vehicle_eRoute {
|
||||
|
||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
||||
|
||||
name = "TP_Vehicle_eRoute"
|
||||
|
||||
description = "CoCo QM-Report_Vehicle"
|
||||
|
||||
# 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(
|
||||
~"Netty on 0.0.0.0:8080 - eroute-ext - prod~",
|
||||
~"Netty on 0.0.0.0:8080 - eroute-adapter - prod~"
|
||||
)
|
||||
),entityName.in(
|
||||
~"/api/eu/2.5/eroute/protobuf3~",
|
||||
~"/api/eu/2.5/eroute-costs/protobuf3~",
|
||||
~"/route/eroute~"
|
||||
)"))))):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
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
Jinja2==3.1.2
|
||||
nested_lookup==0.2.25
|
||||
PyYAML==6.0
|
||||
|
|
@ -10,15 +10,6 @@ slo_definition:
|
|||
warning: 99 #traffic light orange
|
||||
failure: 98 #traffic light red
|
||||
EMEA-Prod:
|
||||
- metric: ""
|
||||
filter:
|
||||
- service: ""
|
||||
keyRequests:
|
||||
- ""
|
||||
- ""
|
||||
- service: ""
|
||||
keyRequests:
|
||||
- ""
|
||||
- metric: ""
|
||||
filter:
|
||||
- service: ""
|
||||
|
|
@ -29,15 +20,6 @@ slo_definition:
|
|||
keyRequests:
|
||||
- ""
|
||||
NA-Prod:
|
||||
- metric: ""
|
||||
filter:
|
||||
- service: ""
|
||||
keyRequests:
|
||||
- ""
|
||||
- ""
|
||||
- service: ""
|
||||
keyRequests:
|
||||
- ""
|
||||
- metric: ""
|
||||
filter:
|
||||
- service: ""
|
||||
|
|
@ -57,12 +39,3 @@ slo_definition:
|
|||
- service: ""
|
||||
keyRequests:
|
||||
- ""
|
||||
- metric: ""
|
||||
filter:
|
||||
- service: ""
|
||||
keyRequests:
|
||||
- ""
|
||||
- ""
|
||||
- service: ""
|
||||
keyRequests:
|
||||
- ""
|
||||
Loading…
Reference in New Issue