master
SLW\ARNAUA 2023-01-25 14:29:05 +01:00
parent 67c3b08036
commit 815070d6aa
4 changed files with 151 additions and 0 deletions

34
TP_FTS.yaml Normal file
View File

@ -0,0 +1,34 @@
---
slo_id: ""
slo_name: 'Wirkkette "FTS Service" - Reliability of key requests'
displayname: "Free Text Seach"
department: "DE-322"
doc_url: "https://atc.bmwgroup.net/confluence/x/YCOqdQ"
slo_definition:
tresholds:
warning: 99 #traffic light orange
failure: 98 #traffic light red
EMEA-Prod:
- metric: "builtin:service.keyRequest.errors.fivexx.rate"
filter:
- service: "SimplePOIs"
keyRequests:
- "getSimplePOIs (FTS Calls)"
- service: "POIs"
keyRequests:
- "getPOIs (FTS Calls)"
NA-Prod:
- metric: "builtin:service.keyRequest.errors.fivexx.rate"
filter:
- service: "SimplePOIs"
keyRequests:
- "getSimplePOIs (FTS Calls)"
- service: "POIs"
keyRequests:
- "getPOIs (FTS Calls)"
CN-Prod:
- metric: "builtin:service.keyRequest.errors.fivexx.rate"
filter:
- service: "POIs"
keyRequests:
- "getPOIs (FTS Calls)"

View File

@ -0,0 +1,34 @@
module Wirkkette_FTS_Service_Reliability_of_key_requests {
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
name = "Wirkkette \"FTS Service\" - Reliability of key requests"
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(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
}

49
convert.py Normal file
View File

@ -0,0 +1,49 @@
import yaml
import jinja2
import sys, os, shutil, pathlib
from glob import glob
from yaml.loader import SafeLoader
# pre-initialization get current working directory
cwd = os.getcwd()
# defines
TEMPLATE_FOLDER_BASENAME = os.path.basename("templates")
TEMPLATE_FILE_BASENAME = os.path.basename("terraform-template.j2")
YAML_FILE_BASENAME = os.path.basename("TP_FTS.yaml")
# define entries
slo_id = None
slo_name = None
displayname = None
department = None
doc_url = None
slo_definition_tresholds_warning = None
slo_definition_tresholds_failure = None
emea_prod_metric = None
emea_prod_filter_service = []
emea_prod_filter_keyRequests = []
na_prod_metric = None
na_prod_filter_service = []
na_prod_filter_keyRequests = []
cn_prod_metric = None
cn_prod_filter_service = []
cn_prod_filter_keyRequests = []
# read yaml file
with open(YAML_FILE_BASENAME) as f:
data = list(yaml.safe_load_all(f))
# read template file
env = jinja2.Environment(loader=jinja2.FileSystemLoader(TEMPLATE_FOLDER_BASENAME),
trim_blocks=True,
lstrip_blocks=True)
template = env.get_template(TEMPLATE_FILE_BASENAME)

View File

@ -0,0 +1,34 @@
module {{ module }} {
source = {{ source }}
name = {{ slo_name }}
description = {{ description }}
#entity selector object
filter = {{ filter }}
#metric expression of the calculation as done in data explorer ui
metric_expression = <<EOT
(100)-(builtin:service.keyRequest.errors.fivexx.rate:filter(and(in("dt.entity.service_method",entitySelector("type(service_method),
fromRelationship.isServiceMethodOfService(
type(~"SERVICE~"),entityName.in(
~"{{ service }}~"
)
),entityName.in(
~"{{ keyRequest }}~"
)")))):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
}