removing process/service naming from Global, removing test config, updating global config

custom-service-JONYR
qxz15oi 2021-04-26 11:55:58 +02:00
parent 8d850d1ce1
commit d4dd5398af
74 changed files with 959 additions and 2207 deletions

View File

@ -3370,6 +3370,166 @@
}
}
]
},
{
"conditions": [
{
"comparisonInfo": {
"caseSensitive": true,
"negate": false,
"operator": "ENDS_WITH",
"type": "STRING",
"value": "-prod"
},
"key": {
"attribute": "PROCESS_GROUP_PREDEFINED_METADATA",
"dynamicKey": "KUBERNETES_NAMESPACE",
"type": "PROCESS_PREDEFINED_METADATA_KEY"
}
},
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Platform",
"value": "OpenShift"
}
},
"key": {
"attribute": "PROCESS_GROUP_TAGS"
}
}
],
"enabled": true,
"propagationTypes": [
"PROCESS_GROUP_TO_HOST",
"PROCESS_GROUP_TO_SERVICE"
],
"type": "PROCESS_GROUP",
"valueFormat": "{ProcessGroup:KubernetesNamespace/(.*?)-prod}"
},
{
"conditions": [
{
"comparisonInfo": {
"caseSensitive": true,
"negate": false,
"operator": "ENDS_WITH",
"type": "STRING",
"value": "-e2e"
},
"key": {
"attribute": "PROCESS_GROUP_PREDEFINED_METADATA",
"dynamicKey": "KUBERNETES_NAMESPACE",
"type": "PROCESS_PREDEFINED_METADATA_KEY"
}
},
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Platform",
"value": "OpenShift"
}
},
"key": {
"attribute": "PROCESS_GROUP_TAGS"
}
}
],
"enabled": true,
"propagationTypes": [
"PROCESS_GROUP_TO_HOST",
"PROCESS_GROUP_TO_SERVICE"
],
"type": "PROCESS_GROUP",
"valueFormat": "{ProcessGroup:KubernetesNamespace/(.*?)-e2e}"
},
{
"conditions": [
{
"comparisonInfo": {
"caseSensitive": true,
"negate": false,
"operator": "ENDS_WITH",
"type": "STRING",
"value": "-int"
},
"key": {
"attribute": "PROCESS_GROUP_PREDEFINED_METADATA",
"dynamicKey": "KUBERNETES_NAMESPACE",
"type": "PROCESS_PREDEFINED_METADATA_KEY"
}
},
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Platform",
"value": "OpenShift"
}
},
"key": {
"attribute": "PROCESS_GROUP_TAGS"
}
}
],
"enabled": true,
"propagationTypes": [
"PROCESS_GROUP_TO_HOST",
"PROCESS_GROUP_TO_SERVICE"
],
"type": "PROCESS_GROUP",
"valueFormat": "{ProcessGroup:KubernetesNamespace/(.*?)-int}"
},
{
"conditions": [
{
"comparisonInfo": {
"caseSensitive": true,
"negate": false,
"operator": "ENDS_WITH",
"type": "STRING",
"value": "-test"
},
"key": {
"attribute": "PROCESS_GROUP_PREDEFINED_METADATA",
"dynamicKey": "KUBERNETES_NAMESPACE",
"type": "PROCESS_PREDEFINED_METADATA_KEY"
}
},
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Platform",
"value": "OpenShift"
}
},
"key": {
"attribute": "PROCESS_GROUP_TAGS"
}
}
],
"enabled": true,
"propagationTypes": [
"PROCESS_GROUP_TO_HOST",
"PROCESS_GROUP_TO_SERVICE"
],
"type": "PROCESS_GROUP",
"valueFormat": "{ProcessGroup:KubernetesNamespace/(.*?)-test}"
}
]
}

View File

@ -1,6 +1,6 @@
{
"metadata": {
"clusterVersion": "1.209.98.20210122-102634",
"clusterVersion": "1.214.107.20210407-223952",
"configurationVersions": [
7
]
@ -57,6 +57,33 @@
],
"type": "PROCESS_GROUP",
"valueFormat": "{ProcessGroup:CommandLineArgs/-Ddtapp-id=(.*?)#}"
},
{
"conditions": [
{
"comparisonInfo": {
"caseSensitive": null,
"negate": false,
"operator": "EXISTS",
"type": "STRING",
"value": null
},
"key": {
"attribute": "PROCESS_GROUP_CUSTOM_METADATA",
"dynamicKey": {
"key": "app-id",
"source": "ENVIRONMENT"
},
"type": "PROCESS_CUSTOM_METADATA_KEY"
}
}
],
"enabled": true,
"propagationTypes": [
"PROCESS_GROUP_TO_SERVICE"
],
"type": "PROCESS_GROUP",
"valueFormat": "{ProcessGroup:Environment:app-id}"
}
]
}

View File

@ -1,6 +1,6 @@
{
"metadata": {
"clusterVersion": "1.209.98.20210122-102634",
"clusterVersion": "1.214.107.20210407-223952",
"configurationVersions": [
7
]
@ -57,6 +57,33 @@
],
"type": "PROCESS_GROUP",
"valueFormat": "{ProcessGroup:CommandLineArgs/-Ddtapp-name=(.*?)#}"
},
{
"conditions": [
{
"comparisonInfo": {
"caseSensitive": null,
"negate": false,
"operator": "EXISTS",
"type": "STRING",
"value": null
},
"key": {
"attribute": "PROCESS_GROUP_CUSTOM_METADATA",
"dynamicKey": {
"key": "app-name",
"source": "ENVIRONMENT"
},
"type": "PROCESS_CUSTOM_METADATA_KEY"
}
}
],
"enabled": true,
"propagationTypes": [
"PROCESS_GROUP_TO_SERVICE"
],
"type": "PROCESS_GROUP",
"valueFormat": "{ProcessGroup:Environment:app-name}"
}
]
}

View File

@ -1,6 +1,6 @@
{
"metadata": {
"clusterVersion": "1.209.98.20210122-102634",
"clusterVersion": "1.214.107.20210407-223952",
"configurationVersions": [
7
]
@ -57,6 +57,33 @@
],
"type": "PROCESS_GROUP",
"valueFormat": "{ProcessGroup:CommandLineArgs/-Ddtcompass-id=(.*?)#}"
},
{
"conditions": [
{
"comparisonInfo": {
"caseSensitive": null,
"negate": false,
"operator": "EXISTS",
"type": "STRING",
"value": null
},
"key": {
"attribute": "PROCESS_GROUP_CUSTOM_METADATA",
"dynamicKey": {
"key": "compass-id",
"source": "ENVIRONMENT"
},
"type": "PROCESS_CUSTOM_METADATA_KEY"
}
}
],
"enabled": true,
"propagationTypes": [
"PROCESS_GROUP_TO_SERVICE"
],
"type": "PROCESS_GROUP",
"valueFormat": "{ProcessGroup:Environment:compass-id}"
}
]
}

View File

@ -1,6 +1,6 @@
{
"metadata": {
"clusterVersion": "1.209.98.20210122-102634",
"clusterVersion": "1.214.107.20210407-223952",
"configurationVersions": [
7
]
@ -57,6 +57,33 @@
],
"type": "PROCESS_GROUP",
"valueFormat": "{ProcessGroup:Kubernetes:ms-id}"
},
{
"conditions": [
{
"comparisonInfo": {
"caseSensitive": null,
"negate": false,
"operator": "EXISTS",
"type": "STRING",
"value": null
},
"key": {
"attribute": "PROCESS_GROUP_CUSTOM_METADATA",
"dynamicKey": {
"key": "ms-id",
"source": "ENVIRONMENT"
},
"type": "PROCESS_CUSTOM_METADATA_KEY"
}
}
],
"enabled": true,
"propagationTypes": [
"PROCESS_GROUP_TO_SERVICE"
],
"type": "PROCESS_GROUP",
"valueFormat": "{ProcessGroup:Environment:ms-id}"
}
]
}

View File

@ -0,0 +1,44 @@
{
"conditions": [
{
"attribute": "SERVICE_TAG",
"comparisonInfo": {
"comparison": "EQUALS",
"negate": false,
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Environment",
"value": "PROD"
}
}
}
],
"dimensionDefinition": {
"dimension": "All requests",
"name": "Dimension",
"placeholders": [],
"topX": 10,
"topXAggregation": "SINGLE_VALUE",
"topXDirection": "DESCENDING"
},
"enabled": true,
"entityId": null,
"managementZones": [
"CD_Perseus"
],
"metadata": {
"clusterVersion": "1.213.116.20210318-174118",
"configurationVersions": [
0
]
},
"metricDefinition": {
"metric": "REQUEST_COUNT",
"requestAttribute": null
},
"name": "{{.name}}",
"tsmMetricKey": "calc:service.cd_perseusrequestcount",
"unit": "COUNT",
"unitDisplayName": null
}

View File

@ -0,0 +1,53 @@
{
"conditions": [
{
"attribute": "SERVICE_TAG",
"comparisonInfo": {
"comparison": "EQUALS",
"negate": false,
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
}
}
},
{
"attribute": "HTTP_STATUS",
"comparisonInfo": {
"comparison": "EXISTS",
"negate": false,
"type": "NUMBER",
"value": null
}
}
],
"dimensionDefinition": {
"dimension": "{HTTP-Status}",
"name": "Dimension",
"placeholders": [],
"topX": 15,
"topXAggregation": "SINGLE_VALUE",
"topXDirection": "DESCENDING"
},
"enabled": true,
"entityId": null,
"managementZones": [
"{{.mz}}"
],
"metadata": {
"clusterVersion": "1.210.97.20210210-140317",
"configurationVersions": [
0
]
},
"metricDefinition": {
"metric": "REQUEST_COUNT",
"requestAttribute": null
},
"name": "{{.name}}",
"tsmMetricKey": "{{.metricKey}}",
"unit": "COUNT",
"unitDisplayName": ""
}

View File

@ -0,0 +1,58 @@
{
"conditions": [
{
"attribute": "SERVICE_TYPE",
"comparisonInfo": {
"comparison": "EQUALS",
"negate": false,
"type": "SERVICE_TYPE",
"value": "WEB_SERVICE"
}
},
{
"attribute": "HTTP_STATUS",
"comparisonInfo": {
"comparison": "GREATER_THAN_OR_EQUAL",
"negate": false,
"type": "NUMBER",
"value": 500
}
},
{
"attribute": "HTTP_STATUS",
"comparisonInfo": {
"comparison": "LOWER_THAN_OR_EQUAL",
"negate": false,
"type": "NUMBER",
"value": 599
}
}
],
"dimensionDefinition": {
"dimension": "{HTTP-Status}",
"name": "Dimension",
"placeholders": [],
"topX": 10,
"topXAggregation": "SINGLE_VALUE",
"topXDirection": "DESCENDING"
},
"enabled": true,
"entityId": null,
"managementZones": [
"CD_Perseus"
],
"metadata": {
"clusterVersion": "1.213.116.20210318-174118",
"configurationVersions": [
0
]
},
"metricDefinition": {
"metric": "REQUEST_COUNT",
"requestAttribute": null
},
"name": "{{.name}}",
"tsmMetricKey": "calc:service.perseus_http5xx",
"unit": "COUNT",
"unitDisplayName": null
}

View File

@ -1,22 +0,0 @@
## Custom Metrics - Multidimensional Analysis
Dynatrace out-of-the-box metrics generally focus on availability, failure rate, and performance.
Of course, there are many other use cases for service metrics that are specific to a particular service, a particular customer, or for whatever reason have significant relevance for your business.
You can create custom metrics using the Multidimensional Analysis (Diagnostic Tools > Create Analysis View).
You will be able to plot your custom metric and see if it's what you're expecting.
To create the custom metric, follow these steps:
1. Add the following line to the config
- MyNewMetric: template-custom-metric.json
2. Customize your metrics:
MyNewMetric:
- name: cd_mycomponent ReqPerInstance
- mz: cd_mycomponent
- key: calc:service.cdmycomponentReqPerInstance
- splitByDimension: {Service:Instance}
- condition:

View File

@ -0,0 +1,41 @@
{
"conditions": [
{
"attribute": "REQUEST_NAME",
"comparisonInfo": {
"caseSensitive": false,
"comparison": "CONTAINS",
"negate": false,
"type": "STRING",
"value": "{{.request}}"
}
}
],
"dimensionDefinition": {
"dimension": "{{.dimension}}",
"name": "Dimension",
"placeholders": [],
"topX": 15,
"topXAggregation": "SINGLE_VALUE",
"topXDirection": "DESCENDING"
},
"enabled": true,
"entityId": null,
"managementZones": [
"{{.mz}}"
],
"metadata": {
"clusterVersion": "1.210.97.20210210-140317",
"configurationVersions": [
0
]
},
"metricDefinition": {
"metric": "REQUEST_COUNT",
"requestAttribute": null
},
"name": "{{.name}}",
"tsmMetricKey": "{{.metricKey}}",
"unit": "COUNT",
"unitDisplayName": ""
}

View File

@ -0,0 +1,44 @@
{
"conditions": [
{
"attribute": "SERVICE_REQUEST_ATTRIBUTE",
"comparisonInfo": {
"caseSensitive": false,
"comparison": "EXISTS",
"matchOnChildCalls": false,
"negate": false,
"requestAttribute": "{{.requestAttribute}}",
"source": null,
"type": "STRING_REQUEST_ATTRIBUTE",
"value": null
}
}
],
"dimensionDefinition": {
"dimension": "{HTTP-Status}",
"name": "Dimension",
"placeholders": [],
"topX": 15,
"topXAggregation": "SINGLE_VALUE",
"topXDirection": "DESCENDING"
},
"enabled": true,
"entityId": null,
"managementZones": [
"{{.mz}}"
],
"metadata": {
"clusterVersion": "1.210.97.20210210-140317",
"configurationVersions": [
0
]
},
"metricDefinition": {
"metric": "REQUEST_COUNT",
"requestAttribute": null
},
"name": "{{.name}}",
"tsmMetricKey": "{{.metricKey}}",
"unit": "COUNT",
"unitDisplayName": ""
}

View File

@ -0,0 +1,41 @@
{
"conditions": [
{
"attribute": "SERVICE_DISPLAY_NAME",
"comparisonInfo": {
"caseSensitive": false,
"comparison": "CONTAINS",
"negate": false,
"type": "FAST_STRING",
"value": "{{.serviceName}}"
}
}
],
"dimensionDefinition": {
"dimension": "{{.dimension}}",
"name": "Dimension",
"placeholders": [],
"topX": 15,
"topXAggregation": "SINGLE_VALUE",
"topXDirection": "DESCENDING"
},
"enabled": true,
"entityId": null,
"managementZones": [
"{{.mz}}"
],
"metadata": {
"clusterVersion": "1.210.97.20210210-140317",
"configurationVersions": [
0
]
},
"metricDefinition": {
"metric": "REQUEST_COUNT",
"requestAttribute": null
},
"name": "{{.name}}",
"tsmMetricKey": "{{.metricKey}}",
"unit": "COUNT",
"unitDisplayName": ""
}

View File

@ -0,0 +1,44 @@
{
"conditions": [
{
"attribute": "SERVICE_TAG",
"comparisonInfo": {
"comparison": "EQUALS",
"negate": false,
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
}
}
}
],
"dimensionDefinition": {
"dimension": "{HTTP-Status}",
"name": "Dimension",
"placeholders": [],
"topX": 15,
"topXAggregation": "SINGLE_VALUE",
"topXDirection": "DESCENDING"
},
"enabled": true,
"entityId": null,
"managementZones": [
"{{.mz}}"
],
"metadata": {
"clusterVersion": "1.210.97.20210210-140317",
"configurationVersions": [
0
]
},
"metricDefinition": {
"metric": "REQUEST_COUNT",
"requestAttribute": null
},
"name": "{{.name}}",
"tsmMetricKey": "{{.metricKey}}",
"unit": "COUNT",
"unitDisplayName": ""
}

View File

@ -1,11 +1,20 @@
config:
- MSGSVCPOI: MSGSVCPOI.json
- RsHttpStatus: RsHttpStatus.json
- NGTP-HttpStatus: HttpStatus.json
- NGTP-CS-HttpStatus: HttpStatus.json
- RsEventStatus: RsEventStatus.json
- RsType: RsType.json
- MSGSVCPOI-HTTP4xx: MSGSVCPOI-HTTP4xx.json
- api-gw-byHttpStatus: api-gw-byHttpStatus.json
- MSGSVCPOI-Failedrequestcount: MSGSVCPOI-Failedrequestcount.json
- HVDE2EKeywordsStatus: Template_FilterReq.json
- HVDE2ESpeechStatus: Template_FilterReq.json
- HVDE2ERequestStatus: Template_FilterService.json
- HTTSE2ETranscribeStatus: Template_FilterReq.json
- CDPerseusRequestcount: CDPerseusRequestcount.json
- Perseus-HTTP5XX: Perseus-HTTP5XX.json
MSGSVCPOI:
- name: MSGSVC POI
RsEventStatus:
@ -20,3 +29,41 @@ MSGSVCPOI-HTTP4xx:
- name: MSGSVC POI - HTTP 4xx
api-gw-byHttpStatus:
- name: api-gw-byHttpStatus
NGTP-HttpStatus:
- name: NGTP - HttpStatus
- tag: NGTP
- mz: CD_Call-Handling-Backends
- metricKey: "calc:service.ngtphttpstatus"
NGTP-CS-HttpStatus:
- name: NGTP-CS - RsHttpStatus
- tag: NGTP-CS
- mz: CD_Call-Handling-Backends
- metricKey: "calc:service.ngtpcshttpstatus"
HVDE2EKeywordsStatus:
- name: HVD Keyword by Status
- request: /hvd/keywords
- mz: CD_Speech
- metricKey: "calc:service.hvdkeywordbystatus"
- dimension: "{Request:Name}{HTTP-Status}"
HVDE2ESpeechStatus:
- name: HVD Speech by Status
- request: /hvd/speech
- mz: CD_Speech
- metricKey: "calc:service.hvdspeechbystatus"
- dimension: "{Request:Name}{HTTP-Status}"
HVDE2ERequestStatus:
- name: HVD Request by Status
- serviceName: hvd (/hvd) - hvd - e2e
- mz: CD_Speech
- metricKey: "calc:service.hvdrequestbystatus"
- dimension: "{HTTP-Status}"
HTTSE2ETranscribeStatus:
- name: HTTS Transcribe by Status
- request: /htts/transcribe
- mz: CD_Speech
- metricKey: "calc:service.httstrascribebystatus"
- dimension: "{Request:Name}{HTTP-Status}"
CDPerseusRequestcount:
- name: CD_Perseus Request count
Perseus-HTTP5XX:
- name: Perseus - HTTP 5XX

View File

@ -1,29 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.212.88.20210305-151445",
"configurationVersions": [
0
]
},
"nameFormat": "{ProcessGroup:DetectedName} - {HostGroup:Name/[^\\_]*$}",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Component",
"value": "ASBC-RSU"
}
},
"key": {
"attribute": "PROCESS_GROUP_TAGS"
}
}
],
"type": "PROCESS_GROUP"
}

View File

@ -1,29 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.212.88.20210305-151445",
"configurationVersions": [
0
]
},
"nameFormat": "{ProcessGroup:DetectedName} - {HostGroup:Name/[^\\_]*$}",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Component",
"value": "ASBC-SMACC"
}
},
"key": {
"attribute": "PROCESS_GROUP_TAGS"
}
}
],
"type": "PROCESS_GROUP"
}

View File

@ -1,53 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.212.88.20210305-151445",
"configurationVersions": [
0
]
},
"nameFormat": "{ProcessGroup:CommandLineArgs/.*?\\-f\\s\\/www\\/(.*?)\\/generated\\/httpd\\.conf.*?}",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "SIMPLE_TECH",
"value": {
"type": "APACHE_HTTP_SERVER"
}
},
"key": {
"attribute": "PROCESS_GROUP_TECHNOLOGY"
}
},
{
"comparisonInfo": {
"caseSensitive": true,
"negate": false,
"operator": "BEGINS_WITH",
"type": "STRING",
"value": "/lfs/wwwmnt"
},
"key": {
"attribute": "PROCESS_GROUP_PREDEFINED_METADATA",
"dynamicKey": "EXE_PATH",
"type": "PROCESS_PREDEFINED_METADATA_KEY"
}
},
{
"comparisonInfo": {
"caseSensitive": true,
"negate": false,
"operator": "CONTAINS",
"type": "STRING",
"value": "Apache Web Server generated"
},
"key": {
"attribute": "PROCESS_GROUP_DETECTED_NAME"
}
}
],
"type": "PROCESS_GROUP"
}

View File

@ -1,43 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.212.88.20210305-151445",
"configurationVersions": [
0
]
},
"nameFormat": "{ProcessGroup:KubernetesNamespace} - {ProcessGroup:KubernetesFullPodName/buffet-(.*?)-}",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Component",
"value": "Buffet"
}
},
"key": {
"attribute": "PROCESS_GROUP_TAGS"
}
},
{
"comparisonInfo": {
"caseSensitive": true,
"negate": false,
"operator": "BEGINS_WITH",
"type": "STRING",
"value": "buffet-"
},
"key": {
"attribute": "PROCESS_GROUP_PREDEFINED_METADATA",
"dynamicKey": "KUBERNETES_FULL_POD_NAME",
"type": "PROCESS_PREDEFINED_METADATA_KEY"
}
}
],
"type": "PROCESS_GROUP"
}

View File

@ -1,41 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.212.88.20210305-151445",
"configurationVersions": [
0
]
},
"nameFormat": "{ProcessGroup:CommandLineArgs/.*?[/]www[/]([^/]*?)[/]nodes}",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "SIMPLE_TECH",
"value": {
"type": "JAVA"
}
},
"key": {
"attribute": "PROCESS_GROUP_TECHNOLOGY"
}
},
{
"comparisonInfo": {
"caseSensitive": true,
"negate": false,
"operator": "CONTAINS",
"type": "STRING",
"value": "cdip"
},
"key": {
"attribute": "PROCESS_GROUP_PREDEFINED_METADATA",
"dynamicKey": "COMMAND_LINE_ARGS",
"type": "PROCESS_PREDEFINED_METADATA_KEY"
}
}
],
"type": "PROCESS_GROUP"
}

View File

@ -1,43 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.212.88.20210305-151445",
"configurationVersions": [
0
]
},
"nameFormat": "{ProcessGroup:KubernetesNamespace}",
"rules": [
{
"comparisonInfo": {
"caseSensitive": null,
"negate": false,
"operator": "EXISTS",
"type": "STRING",
"value": null
},
"key": {
"attribute": "PROCESS_GROUP_PREDEFINED_METADATA",
"dynamicKey": "KUBERNETES_NAMESPACE",
"type": "PROCESS_PREDEFINED_METADATA_KEY"
}
},
{
"comparisonInfo": {
"negate": true,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Component",
"value": "BASE"
}
},
"key": {
"attribute": "PROCESS_GROUP_TAGS"
}
}
],
"type": "PROCESS_GROUP"
}

View File

@ -1,22 +0,0 @@
config:
- ASBC-HAL: ASBC-HAL.json
- ASBC-RSU: ASBC-RSU.json
- ASBC-SMACC: ASBC-SMACC.json
- BillingBuffet-Microservices-FullPodname: BillingBuffet-Microservices-FullPodname.json
- KubernetesNaming: KubernetesNaming.json
- ApacheWebServers: ApacheWebServers.json
- CDIPrenaming: CDIPrenaming.json
ASBC-HAL:
- name: ASBC-HAL
ASBC-RSU:
- name: ASBC-RSU
ASBC-SMACC:
- name: ASBC-SMACC
ApacheWebServers:
- name: Apache Web Servers
BillingBuffet-Microservices-FullPodname:
- name: Billing Buffet - Microservices - Full Pod name
CDIPrenaming:
- name: CDIP renaming
KubernetesNaming:
- name: Kubernetes Naming

View File

@ -1,41 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.211.111.20210222-093946",
"configurationVersions": [
0
]
},
"nameFormat": "{Service:DetectedName} - DLY",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "PaaS",
"value": "Runtime"
}
},
"key": {
"attribute": "SERVICE_TAGS"
}
},
{
"comparisonInfo": {
"caseSensitive": false,
"negate": false,
"operator": "ENDS_WITH",
"type": "STRING",
"value": "_DLY"
},
"key": {
"attribute": "HOST_GROUP_NAME"
}
}
],
"type": "SERVICE"
}

View File

@ -1,41 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.211.111.20210222-093946",
"configurationVersions": [
0
]
},
"nameFormat": "{Service:DetectedName} - INT",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "PaaS",
"value": "Runtime"
}
},
"key": {
"attribute": "SERVICE_TAGS"
}
},
{
"comparisonInfo": {
"caseSensitive": false,
"negate": false,
"operator": "ENDS_WITH",
"type": "STRING",
"value": "_INT"
},
"key": {
"attribute": "HOST_GROUP_NAME"
}
}
],
"type": "SERVICE"
}

View File

@ -1,41 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.211.111.20210222-093946",
"configurationVersions": [
0
]
},
"nameFormat": "{Service:DetectedName} - PROD",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "PaaS",
"value": "Runtime"
}
},
"key": {
"attribute": "SERVICE_TAGS"
}
},
{
"comparisonInfo": {
"caseSensitive": false,
"negate": false,
"operator": "ENDS_WITH",
"type": "STRING",
"value": "_PRD"
},
"key": {
"attribute": "HOST_GROUP_NAME"
}
}
],
"type": "SERVICE"
}

View File

@ -1,41 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.211.111.20210222-093946",
"configurationVersions": [
0
]
},
"nameFormat": "{Service:DetectedName} - TEST",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "PaaS",
"value": "Runtime"
}
},
"key": {
"attribute": "SERVICE_TAGS"
}
},
{
"comparisonInfo": {
"caseSensitive": false,
"negate": false,
"operator": "ENDS_WITH",
"type": "STRING",
"value": "_DEV"
},
"key": {
"attribute": "HOST_GROUP_NAME"
}
}
],
"type": "SERVICE"
}

View File

@ -1,41 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.211.111.20210222-093946",
"configurationVersions": [
0
]
},
"nameFormat": "{Service:DetectedName} - {ProcessGroup:SpringBootProfileName/[^\\-]*$}",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Component",
"value": "BASE"
}
},
"key": {
"attribute": "SERVICE_TAGS"
}
},
{
"comparisonInfo": {
"caseSensitive": null,
"negate": true,
"operator": "EXISTS",
"type": "STRING",
"value": null
},
"key": {
"attribute": "SERVICE_DATABASE_NAME"
}
}
],
"type": "SERVICE"
}

View File

@ -1,44 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.211.111.20210222-093946",
"configurationVersions": [
0
]
},
"nameFormat": "{Service:DetectedName} - E2E",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Platform",
"value": "Classic IT"
}
},
"key": {
"attribute": "SERVICE_TAGS"
}
},
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Environment",
"value": "E2E"
}
},
"key": {
"attribute": "SERVICE_TAGS"
}
}
],
"type": "SERVICE"
}

View File

@ -1,44 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.211.111.20210222-093946",
"configurationVersions": [
0
]
},
"nameFormat": "{Service:DetectedName} - INT",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Platform",
"value": "Classic IT"
}
},
"key": {
"attribute": "SERVICE_TAGS"
}
},
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Environment",
"value": "INT"
}
},
"key": {
"attribute": "SERVICE_TAGS"
}
}
],
"type": "SERVICE"
}

View File

@ -1,44 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.211.111.20210222-093946",
"configurationVersions": [
0
]
},
"nameFormat": "{Service:DetectedName} - PROD",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Platform",
"value": "Classic IT"
}
},
"key": {
"attribute": "SERVICE_TAGS"
}
},
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Environment",
"value": "PROD"
}
},
"key": {
"attribute": "SERVICE_TAGS"
}
}
],
"type": "SERVICE"
}

View File

@ -1,44 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.211.111.20210222-093946",
"configurationVersions": [
0
]
},
"nameFormat": "{Service:DetectedName} - TEST",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Platform",
"value": "Classic IT"
}
},
"key": {
"attribute": "SERVICE_TAGS"
}
},
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Environment",
"value": "TEST"
}
},
"key": {
"attribute": "SERVICE_TAGS"
}
}
],
"type": "SERVICE"
}

View File

@ -1,37 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.211.111.20210222-093946",
"configurationVersions": [
0
]
},
"nameFormat": "{Service:DatabaseName} - E2E",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "SERVICE_TYPE",
"value": "DATABASE_SERVICE"
},
"key": {
"attribute": "SERVICE_TYPE"
}
},
{
"comparisonInfo": {
"caseSensitive": true,
"negate": false,
"operator": "EQUALS",
"type": "STRING",
"value": "pia00256.bmwgroup.net"
},
"key": {
"attribute": "SERVICE_DATABASE_HOST_NAME"
}
}
],
"type": "SERVICE"
}

View File

@ -1,37 +0,0 @@
{
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.211.111.20210222-093946",
"configurationVersions": [
0
]
},
"nameFormat": "{Service:DatabaseName} - PROD",
"rules": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "SERVICE_TYPE",
"value": "DATABASE_SERVICE"
},
"key": {
"attribute": "SERVICE_TYPE"
}
},
{
"comparisonInfo": {
"caseSensitive": true,
"negate": false,
"operator": "EQUALS",
"type": "STRING",
"value": "ppa00247.bmwgroup.net"
},
"key": {
"attribute": "SERVICE_DATABASE_HOST_NAME"
}
}
],
"type": "SERVICE"
}

View File

@ -1,37 +0,0 @@
config:
- ClassicITservicename-INT: ClassicITservicename-INT.json
- ClassicITservicename-E2E: ClassicITservicename-E2E.json
- AzureRuntimeservicename-DLY: AzureRuntimeservicename-DLY.json
- ClassicITservicename-TEST: ClassicITservicename-TEST.json
- AzureRuntimeservicename-TEST: AzureRuntimeservicename-TEST.json
- OpenShiftservicename-containername-environment: OpenShiftservicename-containername-environment.json
- ClassicITservicename-PROD: ClassicITservicename-PROD.json
- BASEservicename-environment: BASEservicename-environment.json
- AzureRuntimeservicename-INT: AzureRuntimeservicename-INT.json
- AzureRuntimeservicename-PROD: AzureRuntimeservicename-PROD.json
- VoiceServices-epldb-namingE2E: VoiceServices-epldb-namingE2E.json
- VoiceServices-epldb-namingPROD: VoiceServices-epldb-namingPROD.json
AzureRuntimeservicename-DLY:
- name: Azure Runtime <service name> - DLY
AzureRuntimeservicename-INT:
- name: Azure Runtime <service name> - INT
AzureRuntimeservicename-PROD:
- name: Azure Runtime <service name> - PROD
AzureRuntimeservicename-TEST:
- name: Azure Runtime <service name> - TEST
BASEservicename-environment:
- name: BASE <service name> - <environment>
ClassicITservicename-E2E:
- name: Classic IT <service name> - E2E
ClassicITservicename-INT:
- name: Classic IT <service name> - INT
ClassicITservicename-PROD:
- name: Classic IT <service name> - PROD
ClassicITservicename-TEST:
- name: Classic IT <service name> - TEST
OpenShiftservicename-containername-environment:
- name: OpenShift <service name> - <container name> - <environment>
VoiceServices-epldb-namingE2E:
- name: Voice Services - epl db - naming E2E
VoiceServices-epldb-namingPROD:
- name: Voice Services - epl db - naming PROD

View File

@ -1,7 +1,7 @@
{
"enabled": true,
"metadata": {
"clusterVersion": "1.211.111.20210222-093946",
"clusterVersion": "1.214.107.20210407-223952",
"configurationVersions": [
0
]
@ -16,7 +16,6 @@
"className": "com.bmw.cc.dpp.api.joynrprovider.v1.PrivacySettingsBackendProviderImpl",
"enabled": true,
"fileName": "",
"id": "e72f652f-37df-4354-8877-d95bfb6a18e0",
"matcher": "EQUALS",
"methodRules": [
{
@ -28,7 +27,6 @@
"java.lang.Boolean",
"joynr.de.bmw.infotainment.dataprivacy.PrivacySettingsTypes.PrivacySetting[]"
],
"id": "a3f2aa72-e80f-48d0-abdf-603e48504ec3",
"methodName": "updateSettings",
"returnType": "void"
}
@ -39,14 +37,20 @@
"className": "com.bmw.cc.dpp.api.joynrprovider.v2.PrivacySettingsBackendV2ProviderImpl",
"enabled": true,
"fileName": "",
"id": "76b156a5-4016-43cb-93e5-c235ee93f070",
"matcher": "EQUALS",
"methodRules": [
{
"argumentTypes": [
"java.lang.String",
"joynr.de.bmw.infotainment.dataprivacy.v2.PrivacySettingsTypes.ResultCode"
],
"methodName": "confirmSettings",
"returnType": "void"
},
{
"argumentTypes": [
"joynr.de.bmw.infotainment.dataprivacy.v2.PrivacySettingsTypes.RequestId"
],
"id": "d47cd881-3872-488d-ab5a-e3387f5a33ff",
"methodName": "getPrivacyUsersWithGroupsForVin",
"returnType": "joynr.de.bmw.infotainment.dataprivacy.v2.PrivacySettingsBackendSync$GetPrivacyUsersWithGroupsForVinReturned"
},
@ -55,7 +59,6 @@
"joynr.de.bmw.infotainment.dataprivacy.v2.PrivacySettingsTypes.RequestId",
"java.lang.String"
],
"id": "949ccb87-0f47-48c5-a94b-b104440616e2",
"methodName": "requestRequestSetting",
"returnType": "void"
},
@ -69,7 +72,6 @@
"java.lang.String",
"joynr.de.bmw.infotainment.dataprivacy.v2.PrivacySettingsTypes.PrivacySetting[]"
],
"id": "5d88fccf-e2c0-49a9-9063-3c2f1dd1aa5a",
"methodName": "updateSettings",
"returnType": "joynr.de.bmw.infotainment.dataprivacy.v2.PrivacySettingsTypes.ResultCode"
}
@ -80,7 +82,6 @@
"className": "com.bmw.cc.dpp.api.joynrprovider.v3.PrivacySettingsBackendV3ProviderImpl",
"enabled": true,
"fileName": "",
"id": "3f75cd95-1017-49e0-9524-ecf18b09ec44",
"matcher": "EQUALS",
"methodRules": [
{
@ -88,7 +89,6 @@
"joynr.de.bmw.infotainment.dataprivacy.v3.PrivacySettingsTypes.RequestId",
"java.lang.String"
],
"id": "a05cbb23-417e-4fe7-866e-1c0e813e80e4",
"methodName": "requestTargetSetting",
"returnType": "void"
},
@ -102,7 +102,6 @@
"joynr.de.bmw.infotainment.dataprivacy.v3.PrivacySettingsTypes.PrivacySetting[]",
"joynr.de.bmw.infotainment.dataprivacy.v3.PrivacySettingsTypes.OptionalParameter[]"
],
"id": "3a691d1f-aae7-479e-8f87-b4c4cd8f06bc",
"methodName": "updateSettings",
"returnType": "joynr.de.bmw.infotainment.dataprivacy.v3.PrivacySettingsTypes.ResultCode"
}

View File

@ -16,14 +16,12 @@
"className": "com.bmw.tssb.lsc.worker.facade.LscMessageProcessingBean",
"enabled": true,
"fileName": "",
"id": "af24cb2c-6cdf-498d-8a31-1d27f8c50dc1",
"matcher": "EQUALS",
"methodRules": [
{
"argumentTypes": [
"org.apache.kafka.clients.consumer.ConsumerRecord"
],
"id": "6873bbf0-b711-41cf-bb84-1d3673d73c75",
"methodName": "onMessage",
"returnType": "void"
}

View File

@ -0,0 +1,43 @@
{
"enabled": true,
"metadata": {
"clusterVersion": "1.213.116.20210318-174118",
"configurationVersions": [
0
]
},
"name": "{{.name}}",
"processGroups": [],
"queueEntryPoint": false,
"queueEntryPointType": null,
"rules": [
{
"annotations": [],
"className": "com.bmw.cc.conn.b2vvoice.bm.mguvoice.control.DBEventCleanupBA",
"enabled": true,
"fileName": "",
"id": "319de1eb-a486-4900-ab0f-0b098fcf1b63",
"matcher": "EQUALS",
"methodRules": [
{
"argumentTypes": [],
"id": "67475e25-8530-4d10-8edd-0dcfab3a2207",
"methodName": "clean",
"returnType": "void"
},
{
"argumentTypes": [],
"id": "6a97c742-6ee2-43d4-8ef6-3759d07052a0",
"methodName": "destroyTimer",
"returnType": "void"
},
{
"argumentTypes": [],
"id": "db591e7c-0724-4f6c-a9d4-177c7017dd31",
"methodName": "init",
"returnType": "void"
}
]
}
]
}

View File

@ -156,10 +156,6 @@ CarStatusInformationKafkaIN.EMEA-Prod:
DPP-JOYNR:
- name: DPP - JOYNR
- skipDeployment: "true"
DPP-JOYNR.EMEA-Prod:
- name: DPP - JOYNR
- skipDeployment: "false"
ECS-JOYNR-E2E:
- name: ECS - JOYNR - E2E
@ -177,9 +173,6 @@ JOYNR.EMEA-Prod:
LSCWorkerKafkaIN:
- name: LSC Worker Kafka IN
- skipDeployment: "true"
LSCWorkerKafkaIN.EMEA-Prod:
- name: LSC Worker Kafka IN
- skipDeployment: "false"
RsEventTimeoutTimer:
@ -222,4 +215,4 @@ XCS-JOYNR-E2E:
- skipDeployment: "true"
XCS-JOYNR-E2E.EMEA-Prod:
- name: XCS - JOYNR - E2E
- skipDeployment: "false"
- skipDeployment: "false"

View File

@ -0,0 +1,34 @@
{
"aggregation": "FIRST",
"confidential": false,
"dataSources": [
{
"capturingAndStorageLocation": "CAPTURE_AND_STORE_ON_BOTH",
"enabled": true,
"scope": {
"tagOfProcessGroup": "Component:ASBC-SMACC"
},
"source": "URI",
"valueProcessing": {
"extractSubstring": {
"delimiter": "track/",
"endDelimiter": "/decryptVerifyAndGenerate",
"position": "BETWEEN"
},
"splitAt": "",
"trim": false
}
}
],
"dataType": "STRING",
"enabled": true,
"metadata": {
"clusterVersion": "1.213.116.20210318-174118",
"configurationVersions": [
3
]
},
"name": "{{.name}}",
"normalization": "ORIGINAL",
"skipPersonalDataMasking": false
}

View File

@ -9,6 +9,7 @@ config:
- KeyID: KeyID.json
- RsCountryCodeIso: RsCountryCodeIso.json
- RsType: RsType.json
- keyType: keyType.json
GCID:
- name: GCID
KeyID:
@ -29,3 +30,5 @@ VIN:
- name: VIN
getKeyID:
- name: getKeyID
keyType:
- name: keyType

View File

@ -0,0 +1,19 @@
{
"availabilityLocationOutage": true,
"availabilityNodeOutage": false,
"availabilityNotificationsEnabled": true,
"city": "Frankfurt am Main",
"countryCode": "DE",
"entityId": "SYNTHETIC_LOCATION-179C78AF3D136082",
"latitude": 50.1038,
"locationNodeOutageDelayInMinutes": 3,
"longitude": 8.6874,
"name": "{{.name}}",
"nodes": [
"705827599",
"1029949163"
],
"regionCode": "05",
"status": "ENABLED",
"type": "PRIVATE"
}

View File

@ -0,0 +1,19 @@
{
"availabilityLocationOutage": true,
"availabilityNodeOutage": false,
"availabilityNotificationsEnabled": true,
"city": "Munich",
"countryCode": "DE",
"entityId": "SYNTHETIC_LOCATION-6A36EDD481FAEB5D",
"latitude": 48.1084,
"locationNodeOutageDelayInMinutes": 3,
"longitude": 11.6102,
"name": "{{.name}}",
"nodes": [
"117986054",
"1911205742"
],
"regionCode": "02",
"status": "ENABLED",
"type": "PRIVATE"
}

View File

@ -0,0 +1,18 @@
config:
- BMW-AWS-Frankfurt: BMW-AWS-Frankfurt.json
- BMW-DCOnPrem-MUC: BMW-DCOnPrem-MUC.json
BMW-AWS-Frankfurt:
- name: BMW - AWS - Frankfurt
- skipDeployment: "true"
BMW-AWS-Frankfurt.EMEA-Prod:
- name: BMW - AWS - Frankfurt
- skipDeployment: "false"
BMW-DCOnPrem-MUC:
- name: BMW - DC OnPrem - MUC
- skipDeployment: "true"
BMW-DCOnPrem-MUC.EMEA-Prod:
- name: BMW - DC OnPrem - MUC
- skipDeployment: "false"

View File

@ -1,60 +0,0 @@
config:
- CDnewComponentTag-PROD: default.json
- CDnewComponentTag-INT: default.json
#Prod alerting profiles for EMEA/NA/CN
#Dry-run needed for all hubs
CDnewComponentTag-PROD:
- name: CD_managementZone PROD
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: PROD
- skipDeployment: "true"
#Configuration
CDnewComponentTag-PROD.EMEA-Prod:
- name: CD_managementZone PROD
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: PROD
- skipDeployment: "false"
CDnewComponentTag-PROD.NA-Prod:
- name: CD_managementZone PROD
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: PROD
- skipDeployment: "false"
CDnewComponentTag-PROD.CN-Prod:
- name: CD_managementZone PROD
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: PROD
- skipDeployment: "false"
#INT alerting profiles for EMEA/NA/CN
#Dry-run needed for all hubs
CDnewComponentTag-INT:
- name: CD_managementZone INT
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: INT
- skipDeployment: "true"
#Configuration
CDnewComponentTag-INT.EMEA-PreProd:
- name: CD_managementZone INT
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: INT
- skipDeployment: "false"
CDnewComponentTag-INT.NA-PreProd:
- name: CD_managementZone INT
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: INT
- skipDeployment: "false"
CDnewComponentTag-INT.CN-PreProd:
- name: CD_managementZone INT
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: INT
- skipDeployment: "false"

View File

@ -1,103 +0,0 @@
{
"displayName": "{{.name}}",
"eventTypeFilters": [],
"managementZoneId": "{{.mzId}}",
"mzId": "{{.mzId}}",
"rules": [
{
"delayInMinutes": 0,
"severityLevel": "AVAILABILITY",
"tagFilter": {
"includeMode": "INCLUDE_ALL",
"tagFilters": [
{
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
},
{
"context": "CONTEXTLESS",
"key": "Environment",
"value": "{{.env}}"
}
]
}
},
{
"delayInMinutes": 10,
"severityLevel": "ERROR",
"tagFilter": {
"includeMode": "INCLUDE_ALL",
"tagFilters": [
{
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
},
{
"context": "CONTEXTLESS",
"key": "Environment",
"value": "{{.env}}"
}
]
}
},
{
"delayInMinutes": 30,
"severityLevel": "PERFORMANCE",
"tagFilter": {
"includeMode": "INCLUDE_ALL",
"tagFilters": [
{
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
},
{
"context": "CONTEXTLESS",
"key": "Environment",
"value": "{{.env}}"
}
]
}
},
{
"delayInMinutes": 30,
"severityLevel": "RESOURCE_CONTENTION",
"tagFilter": {
"includeMode": "INCLUDE_ALL",
"tagFilters": [
{
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
},
{
"context": "CONTEXTLESS",
"key": "Environment",
"value": "{{.env}}"
}
]
}
},
{
"delayInMinutes": 10,
"severityLevel": "CUSTOM_ALERT",
"tagFilter": {
"includeMode": "INCLUDE_ALL",
"tagFilters": [
{
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
},
{
"context": "CONTEXTLESS",
"key": "Environment",
"value": "{{.env}}"
}
]
}
}
]
}

View File

@ -1,10 +0,0 @@
## Custom metrics - Multidimensional Analysis
Under the Multidimensional Analysis you're able to save a view but not to create a metric. Instead, you can do it in here:
1. Create the metric within the Dynatrace UI using the Mutidimensional Analysis view.
2. Save the view and create a ticket for the OPAPM team [here](link). Please provide the following information:
- View created in the Dynatrace UI
- Your Dynatrace configuration folder (i.e. CD_<app_name>)
The OPAPM team will proceed creating the metric and updating your configuration in monaco.

View File

@ -1,30 +0,0 @@
## What is a custom service in Dynatrace?
- *If your application's services aren't built on standard technologies, they may not be recognized out-of-the box.*
- *You can monitor these technologies, but you'll need to define them as custom services with specific service entry points.*
- *Another use case for custom services are microservices that are used by a larger application that aren't exposed via communication technologies.*
## How to create a custom service?
1. Open the file *custom-service-java.yaml* under your *CD_<app_name>/custom-service-java* configuration folder.
2. Use customService1 as a template. Copy and paste it below, changing the skipDeployment to "false".
3. Fill up all the remaining inputs with the details of the endpoint you're interested to monitor. (className, methodName, etc...)
4. Commit and pull request to merge the branch to the master:
`git add <changes>`
`git commit -m "<app_name> configuration changes"`
`git push -u origin <branch>`
5. Restart the application where the custom service has been created.
6. Check if the custom service appears in Dynatrace.
Notes:
- As this configuration needs a restart, it's better to create it in a non-Prod application.
- The custom service will appear in Dynatrace iff there's traffic going through.
## What if i have multiple classes?
1. Clone *template-1-1.json* to a new one called *template-2-1.json*.
2. Edit *template-2-1.json* adding a 2nd rule separated with a coma.
3. For the 2nd rule, change the name of the {{.values}} to {{.values2}} i.e.
4. The template is ready to be used in the YAML file.
## What if i have multiple methods?
1. Same process as before, just call it template-1-2.json
2. In this way you can extend to a custom service with n classes and k methods: template-n-k.json

View File

@ -1,9 +0,0 @@
config:
- customService1: template-1-1.json
customService1:
- name: myJOYNRService
- className: com.bmw.cc.conn.this.is.just.an.exampleClasss
- methodName: exampleJoynrMethod
- returnType: void
- skipDeployment: "true"

View File

@ -1,23 +0,0 @@
{
"enabled": true,
"name": "{{.name}}",
"processGroups": [],
"queueEntryPoint": false,
"queueEntryPointType": null,
"rules": [
{
"annotations": [],
"className": "{{.className}}",
"enabled": true,
"fileName": "",
"matcher": "EQUALS",
"methodRules": [
{
"argumentTypes": [],
"methodName": "{{.methodName}}",
"returnType": "{{.returnType}}"
}
]
}
]
}

View File

@ -1,13 +0,0 @@
## Update dashboard configuration
- Configuration changes (like in dashboards, alerting profiles) must be done via a pull request. Changing a dashboard just in the environment, will cause that it will be overwritten by Monaco.
- How to generate changes in your dashboards?
1. Modify the dashboard within the Dynatrace UI with the intended changes.
2. Copy the JSON of the dashboards. (Can be found under the dashboard settings)
3. Paste the copied JSON under the Monaco JSON, overwrite it.
4. Commit and pull request to merge the branch to the master:
```
git add <changes>
git commit -m "<app_name> configuration changes"
git push -u origin <branch>
```

View File

@ -1,127 +0,0 @@
config:
- CDnewComponentTag-PROD: default.json
- CDnewComponentTag-E2E: default.json
- CDnewComponentTag-INT: default.json
- CDnewComponentTag-TEST: default.json
#PROD dashboards for EMEA/NA/CN Prod
#Dry-run needed for all hubs
CDnewComponentTag-PROD:
- name: CD_managementZone PROD
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: PROD
- skipDeployment: "true"
#Configuration
CDnewComponentTag-PROD.EMEA-Prod:
- name: CD_managementZone PROD
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- tag: newComponentTag
- env: PROD
- skipDeployment: "false"
CDnewComponentTag-PROD.NA-Prod:
- name: CD_managementZone PROD
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- tag: newComponentTag
- env: PROD
- skipDeployment: "false"
CDnewComponentTag-PROD.CN-Prod:
- name: CD_managementZone PROD
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- tag: newComponentTag
- env: PROD
- skipDeployment: "false"
#E2E dashboards for EMEA/NA/CN E2E
#Dry-run needed for all hubs
CDnewComponentTag-E2E:
- name: CD_managementZone E2E
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: E2E
- skipDeployment: "true"
#Configuration
CDnewComponentTag-E2E.EMEA-Prod:
- name: CD_managementZone E2E
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: E2E
- tag: newComponentTag
- skipDeployment: "true"
CDnewComponentTag-E2E.NA-Prod:
- name: CD_managementZone E2E
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: E2E
- tag: newComponentTag
- skipDeployment: "true"
CDnewComponentTag-E2E.CN-Prod:
- name: CD_managementZone E2E
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: E2E
- tag: newComponentTag
- skipDeployment: "true"
#INT dashboards for EMEA/NA/CN
#Dry-run needed for all hubs
CDnewComponentTag-INT:
- name: CD_managementZone INT
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: INT
- tag: newComponentTag
- skipDeployment: "true"
#Configuration
CDnewComponentTag-INT.EMEA-PreProd:
- name: CD_managementZone INT
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: INT
- tag: newComponentTag
- skipDeployment: "false"
CDnewComponentTag-INT.NA-PreProd:
- name: CD_managementZone INT
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: INT
- skipDeployment: "false"
CDnewComponentTag-INT.CN-PreProd:
- name: CD_managementZone INT
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: INT
- skipDeployment: "false"
#TEST dashboards for EMEA/NA/CN
#Dry-run needed for all hubs
CDnewComponentTag-TEST:
- name: CD_managementZone TEST
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- tag: newComponentTag
- env: TEST
- skipDeployment: "true"
#Configuration
CDnewComponentTag-TEST.EMEA-PreProd:
- name: CD_managementZone TEST
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- tag: newComponentTag
- env: TEST
- skipDeployment: "false"
CDnewComponentTag-TEST.NA-PreProd:
- name: CD_managementZone TEST
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: TEST
- skipDeployment: "false"
CDnewComponentTag-TEST.CN-PreProd:
- name: CD_managementZone TEST
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: TEST
- skipDeployment: "false"

View File

@ -1,308 +0,0 @@
{
"metadata": {
"configurationVersions": [
3
],
"clusterVersion": "1.214.107.20210407-223952"
},
"dashboardMetadata": {
"name": "{{.name}}",
"shared": true,
"owner": "Ignacio.Goldman@partner.bmwgroup.com",
"dashboardFilter": {
"timeframe": "-24h to now"
},
"tags": [
"{{.tag}}"
]
},
"tiles": [
{
"name": "Custom chart",
"tileType": "CUSTOM_CHARTING",
"configured": true,
"bounds": {
"top": 228,
"left": 38,
"width": 1064,
"height": 304
},
"tileFilter": {},
"filterConfig": {
"type": "MIXED",
"customName": "Failure rate (HTTP 4xx/5xx errors)",
"defaultName": "Custom chart",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [
{
"metric": "builtin:service.errors.fourxx.rate",
"aggregation": "AVG",
"type": "BAR",
"entityType": "SERVICE",
"dimensions": [],
"sortAscending": false,
"sortColumn": false,
"aggregationRate": "TOTAL"
},
{
"metric": "builtin:service.errors.fivexx.rate",
"aggregation": "AVG",
"type": "BAR",
"entityType": "SERVICE",
"dimensions": [],
"sortAscending": false,
"sortColumn": true,
"aggregationRate": "TOTAL"
}
],
"resultMetadata": {
"nullbuiltin:service.errors.fivexx.rate|AVG|TOTAL|BAR|SERVICE": {
"lastModified": 1617956393463,
"customColor": "#ff0000"
},
"nullbuiltin:service.errors.fourxx.rate|AVG|TOTAL|BAR|SERVICE": {
"lastModified": 1617956441725,
"customColor": "#fff29a"
}
}
},
"filtersPerEntityType": {
"SERVICE": {
"AUTO_TAGS": [
"Environment:{{.env}}",
"Component:{{.tag}}"
]
}
}
}
},
{
"name": "Problems",
"tileType": "OPEN_PROBLEMS",
"configured": true,
"bounds": {
"top": 38,
"left": 950,
"width": 152,
"height": 152
},
"tileFilter": {
"managementZone": {
"id": "{{.mzId}}",
"name": "{{.mzName}}"
}
}
},
{
"name": "Overall Health",
"tileType": "HEADER",
"configured": true,
"bounds": {
"top": 0,
"left": 38,
"width": 1064,
"height": 38
},
"tileFilter": {}
},
{
"name": "Markdown",
"tileType": "MARKDOWN",
"configured": true,
"bounds": {
"top": 532,
"left": 38,
"width": 1064,
"height": 38
},
"tileFilter": {},
"markdown": "---\n"
},
{
"name": "Custom chart",
"tileType": "CUSTOM_CHARTING",
"configured": true,
"bounds": {
"top": 570,
"left": 38,
"width": 1064,
"height": 304
},
"tileFilter": {},
"filterConfig": {
"type": "MIXED",
"customName": "Response time, Request Count and Number of Errors",
"defaultName": "Custom chart",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [
{
"metric": "builtin:service.response.time",
"aggregation": "AVG",
"type": "LINE",
"entityType": "SERVICE",
"dimensions": [],
"sortAscending": false,
"sortColumn": false,
"aggregationRate": "TOTAL"
},
{
"metric": "builtin:service.requestCount.total",
"aggregation": "NONE",
"type": "BAR",
"entityType": "SERVICE",
"dimensions": [],
"sortAscending": false,
"sortColumn": false,
"aggregationRate": "TOTAL"
},
{
"metric": "builtin:service.errors.total.count",
"aggregation": "NONE",
"type": "BAR",
"entityType": "SERVICE",
"dimensions": [],
"sortAscending": false,
"sortColumn": true,
"aggregationRate": "TOTAL"
}
],
"resultMetadata": {
"nullbuiltin:service.requestCount.total|NONE|TOTAL|BAR|SERVICE": {
"lastModified": 1595275720776,
"customColor": "#008cdb"
},
"nullbuiltin:service.errors.total.count|NONE|TOTAL|BAR|SERVICE": {
"lastModified": 1595275955999,
"customColor": "#ef651f"
},
"nullbuiltin:service.response.time|AVG|TOTAL|LINE|SERVICE": {
"lastModified": 1595275686773,
"customColor": "#b4e5f9"
}
}
},
"filtersPerEntityType": {
"SERVICE": {
"AUTO_TAGS": [
"Environment:{{.env}}",
"Component:{{.tag}}"
]
}
}
}
},
{
"name": "Markdown",
"tileType": "MARKDOWN",
"configured": true,
"bounds": {
"top": 190,
"left": 38,
"width": 1064,
"height": 38
},
"tileFilter": {},
"markdown": "---\n"
},
{
"name": "",
"tileType": "DATABASES_OVERVIEW",
"configured": true,
"bounds": {
"top": 38,
"left": 646,
"width": 190,
"height": 152
},
"tileFilter": {},
"filterConfig": {
"type": "DATABASE",
"customName": "Databases",
"defaultName": "Databases",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [],
"resultMetadata": {}
},
"filtersPerEntityType": {
"DATABASE": {
"AUTO_TAGS": [
"Environment:{{.env}}",
"Component:{{.tag}}"
]
}
}
},
"chartVisible": true
},
{
"name": "",
"tileType": "SERVICES",
"configured": true,
"bounds": {
"top": 38,
"left": 342,
"width": 190,
"height": 152
},
"tileFilter": {},
"filterConfig": {
"type": "SERVICE",
"customName": "Services",
"defaultName": "Services",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [],
"resultMetadata": {}
},
"filtersPerEntityType": {
"SERVICE": {
"AUTO_TAGS": [
"Environment:{{.env}}",
"Component:{{.tag}}"
]
}
}
},
"chartVisible": true
},
{
"name": "",
"tileType": "HOSTS",
"configured": true,
"bounds": {
"top": 38,
"left": 38,
"width": 190,
"height": 152
},
"tileFilter": {},
"filterConfig": {
"type": "HOST",
"customName": "Hosts",
"defaultName": "Hosts",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [],
"resultMetadata": {}
},
"filtersPerEntityType": {
"HOST": {
"AUTO_TAGS": [
"Environment:{{.env}}",
"Component:{{.tag}}"
]
}
}
},
"chartVisible": true
}
]
}

View File

@ -1,76 +0,0 @@
## Management Zones configuration
### Excluding noisy services
*If you find services that are not relevant for the analysis, you can exclude them from the MZ.*
#### HealthResource, PingResource, PrometheusResource services
*After the deployment of the OneAgent, your services should appear under Transactions & Services. A good practice would be to exclude*
*the ones that are not relevant for monitoring. i.e. For some BMW's teams, HealthResource, PingResource, PrometheusResource have been excluded.*
**How to exclude HealthResource?**
1. Open the file *default.json* configuration under the *CD_<app_name>/management-zone/* folder.
2. Copy the following rule template:
```
{
"comparisonInfo": {
"caseSensitive": true,
"negate": true,
"operator": "CONTAINS",
"type": "STRING",
"value": "HealthResource"
},
"key": {
"attribute": "SERVICE_NAME"
}
}
```
2. Add it under the `"type": "SERVICE"` rule's conditions. It should look like this:
```
{
"conditions": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
},
{
"comparisonInfo": {
"caseSensitive": true,
"negate": true,
"operator": "CONTAINS",
"type": "STRING",
"value": "HealthResource"
},
"key": {
"attribute": "SERVICE_NAME"
}
}
},
"key": {
"attribute": "SERVICE_TAGS"
}
}
],
"enabled": true,
"propagationTypes": [
"SERVICE_TO_PROCESS_GROUP_LIKE",
"SERVICE_TO_HOST_LIKE"
],
"type": "SERVICE"
}
```
3. Commit and pull request to merge the branch to the master:
```
git add <changes>
git commit -m "<app_name> configuration changes"
git push -u origin <branch>
```
Note: you can use the same logic to exclude (or include) any other entity to your Management Zone.

View File

@ -1,76 +0,0 @@
{
"dimensionalRules": [],
"name": "{{.name}}",
"rules": [
{
"conditions": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
}
},
"key": {
"attribute": "SERVICE_TAGS"
}
}
],
"enabled": true,
"propagationTypes": [
"SERVICE_TO_PROCESS_GROUP_LIKE",
"SERVICE_TO_HOST_LIKE"
],
"type": "SERVICE"
},
{
"conditions": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
}
},
"key": {
"attribute": "PROCESS_GROUP_TAGS"
}
}
],
"enabled": true,
"propagationTypes": [
"PROCESS_GROUP_TO_HOST"
],
"type": "PROCESS_GROUP"
},
{
"conditions": [
{
"comparisonInfo": {
"negate": false,
"operator": "EQUALS",
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
}
},
"key": {
"attribute": "HOST_TAGS"
}
}
],
"enabled": true,
"type": "HOST"
}
]
}

View File

@ -1,6 +0,0 @@
config:
- CDnewComponentTag: default.json
CDnewComponentTag:
- name: CD_managementZone
- tag: newComponentTag

View File

@ -1,60 +0,0 @@
## Configure Notification System
### MS Teams - Default
*Let's suppose you would like to start receiving alerts from Dynatrace via MS Teams just for your *EMEA PROD*.*
1. Open *notification.yaml* under your application configuration folder. By default, all notification systems are configured via MS Teams with an
https://empty webhook (not configured).
2. Create an incoming webhook in MS Teams. [How to?](https://www.dynatrace.com/support/help/shortlink/set-up-msteams-integration#configuration-in-microsoft-teams)
3. Add the incoming webhook under the webhook parameter for the `<app_name>-PROD.EMEA-Prod`:
```
<app_name>-PROD.EMEA-Prod:
- name: CD_<app_name> PROD
- alertingProfile: CD_<app_name>/alerting-profile/CD<app_name>-PROD.id
- webhook: <Add webhook here>
- skipDeployment: "false"
```
4. Save and commit changes:
```
git add <changes>
git commit -m "<app_name> configuration changes"
git push -u origin <branch>
```
Note: If you want to enable MS Teams for any other hub/stage, follow the same steps but make sure you're under the right configuration:
`<app_name>-<stage>.<dynatrace-env>-<stage>:`
### Email
*The team prefers to be alerted via email, not MS Teams*
1. Keep the MS Teams integration disabled, with the https://empty webhook:
```
<app_name>-PROD.EMEA-Prod:
- name: CD_<app_name> PROD
- alertingProfile: CD_<app_name>/alerting-profile/CD<app_name>-PROD.id
- webhook: https://empty
- skipDeployment: "false"
```
2. Create a new configuration template under config, using the email template:
```
config:
- CD<app_name>email: email.json
```
3. Describe the configuration below, using the following template:
```
CD<app_name>email.EMEA-Prod:
- name: CD_<app_name> PROD
- alertingProfile: CD_<app_name>/alerting-profile/CD<app_name>-PROD.id
- receivers: distributionEmailexample@bmw.de`
```
4. Save and commit changes:
```
git add <changes>
git commit -m "<app_name> configuration changes"
git push -u origin <branch>
```
### ITSM
Coming soon!

View File

@ -1,13 +0,0 @@
{
"active": true,
"alertingProfile": "{{.alertingProfile}}",
"bccReceivers": [],
"body": "{ProblemDetailsHTML}",
"ccReceivers": [],
"name": "{{.name}}",
"receivers": [
"{{.receivers}}"
],
"subject": "{State} Problem {ProblemID}: {ImpactedEntity}",
"type": "EMAIL"
}

View File

@ -1,11 +0,0 @@
{
"acceptAnyCertificate": false,
"active": true,
"alertingProfile": "{{.alertingProfile}}",
"headers": [],
"name": "{{.name}}",
"notifyEventMergesEnabled": false,
"payload": "{\n\"title\":\"{ProblemTitle}\",\n\"text\":\"{ProblemDetailsHTML}\",\n\"themeColor\":\"EA4300\"\n}",
"type": "WEBHOOK",
"url": "{{.webhook}}"
}

View File

@ -1,51 +0,0 @@
config:
- CDnewComponentTag-PROD: msTeams.json
- CDnewComponentTag-INT: msTeams.json
#Prod notification system for EMEA/NA/CN
#Dry-run needed for all hubs
CDnewComponentTag-PROD:
- name: CD_managementZone PROD
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-PROD.id
- webhook: https://empty
- skipDeployment: "true"
#Configuration
CDnewComponentTag-PROD.EMEA-Prod:
- name: CD_managementZone PROD
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-PROD.id
- webhook: https://empty
- skipDeployment: "false"
CDnewComponentTag-PROD.NA-Prod:
- name: CD_managementZone PROD
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-PROD.id
- webhook: https://empty
- skipDeployment: "false"
CDnewComponentTag-PROD.CN-Prod:
- name: CD_managementZone PROD
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-PROD.id
- webhook: https://empty
- skipDeployment: "false"
#INT notification system for EMEA/NA/CN
#Dry-run needed for all hubs
CDnewComponentTag-INT:
- name: CD_managementZone INT
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-INT.id
- webhook: https://empty
- skipDeployment: "true"
#Configuration
CDnewComponentTag-INT.EMEA-PreProd:
- name: CD_managementZone INT
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-INT.id
- webhook: https://empty
- skipDeployment: "false"
CDnewComponentTag-INT.NA-PreProd:
- name: CD_managementZone INT
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-INT.id
- webhook: https://empty
- skipDeployment: "false"
CDnewComponentTag-INT.CN-PreProd:
- name: CD_managementZone INT
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-INT.id
- webhook: https://empty
- skipDeployment: "false"

View File

@ -1,37 +0,0 @@
# Synthetic Configuration
To calculate the Availability KPI, a synthetic must be configured.
1. Modify the synthetic-monitor.yaml file, providing:
- **Endpoint**: url intended to check the availability.
- **Location**:
- *synthetic private location*: If the endpoint is reachable within the BMW network.
```
- location: BMW-Dynatrace-config/00_Global-Config/synthetic-location/BMW-AWS-Frankfurt.id
```
- *synthetic public location*: If the endpoint is reachable from the internet.
```
- location: GEOLOCATION-45AB48D9D6925ECC
```
2. Change `skipDeployment` to false.
i.e.
```
config:
- my-synthetic: default.json
my-synthetic:
- name: CD_BMW - bmw.com
- mzName: CD_google/management-zone/CDgoogle.name
- mzId: CD_google/management-zone/CDgoogle.id
- endpoint: https://google.com
- location: GEOLOCATION-45AB48D9D6925ECC
- skipDeployment: "false"
```
3. Commit and pull request to merge the branch to the master:
```
git add <changes>
git commit -m "<app_name> configuration changes"
git push -u origin <branch>
```

View File

@ -1,82 +0,0 @@
{
"anomalyDetection": {
"loadingTimeThresholds": {
"enabled": false,
"thresholds": [
{
"type": "TOTAL",
"valueMs": 0
}
]
},
"outageHandling": {
"globalOutage": true,
"localOutage": false,
"localOutagePolicy": {
"affectedLocations": 1,
"consecutiveRuns": 3
}
}
},
"automaticallyAssignedApps": [],
"enabled": true,
"frequencyMin": 1,
"locations": [
"{{.location}}"
],
"managementZones": [
{
"id": "{{.mzId}}",
"name": "{{.mzName}}"
}
],
"manuallyAssignedApps": [],
"name": "{{.name}}",
"requests": [
{
"entityId": "HTTP_CHECK_STEP-0BA53EC80CD7EE5A",
"name": "{{.name}}",
"sequenceNumber": 1
}
],
"script": {
"requests": [
{
"configuration": {
"acceptAnyCertificate": true,
"followRedirects": true,
"requestHeaders": [
{
"name": "accept",
"value": "application/json"
},
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "api_key",
"value": "355DE89C-7B72-4EA3-BDD8-157C79EB2C23"
}
]
},
"description": "{{.name}}",
"method": "GET",
"url": "{{.endpoint}}",
"validation": {
"rules": [
{
"passIfFound": true,
"type": "httpStatusesList",
"value": "200"
}
],
"rulesChaining": "or"
}
}
],
"version": "1.0"
},
"tags": [],
"type": "HTTP"
}

View File

@ -1,10 +0,0 @@
config:
- newComponentTag: default.json
newComponentTag:
- name: CD_managementZone - <synthetic-name>
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- endpoint: <url>
- location: <location>
- skipDeployment: "true"

View File

@ -1,112 +0,0 @@
# BMW Monaco
## Dynatrace - Get Started!
### Initial Setup
To monitor your application with Dynatrace, please follow these steps:
1. Make sure you have access to Dynatrace. If not, follow this [link](https://atc.bmwgroup.net/confluence/display/OPAPM/User+Guide+-+Access+to+new+Dynatrace+Solution)
2. Clone this repository in your local machine:
`git clone https://atc.bmwgroup.net/bitbucket/scm/opapm/cd_e2e_monitoring_config.git`
4. Create a branch using your Component/Application name with the following format:
`git checkout -b CD_<app_name>`
**What value should i use for <app_name>?**
- Azure Runtime: i.e. for vehicle-composite-service you need to get [this](https://code.connected.bmw/runtime/tf-cluster-apps/blob/master/euprd/apps/vehicle-composite-service.tf#L8) value.
- Orbit: coming soon!
- Openshift: coming soon!
5. Execute the script passing as parameters, again, the <app_name>:
`./onboard.sh CD_<app_name> <app_name>`
6. (optional) Configure Notification System
- Dynatrace AI automatically detects anomalies in your applications and generate problems, visible within the UI. Dynatrace offers several out-of-the-box integrations with problem notification systems such as Email, MS Teams and ITSM.
- Notification systems are not configured by default. If you want to enable them for your application, please follow this [link](https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/cd_e2e_monitoring_config/browse/onboarding/CD_managementZone/notification/README.md).
7. (optional) Add databases to Management Zone
- The script described in step 5 will create the configuration for all entities related to your application (Host, Processes, Services) but not the databases.
- To add your databases into Dynatrace you need to add an extra rule to the [Component.json](https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/cd_e2e_monitoring_config/browse/BMW-Dynatrace-config/00_Global-Config/auto-tag/Component.json) file. You can use [this](https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/cd_e2e_monitoring_config/browse/BMW-Dynatrace-config/00_Global-Config/README.md) example to understand exactly what you have to do.
8. Commit and pull request to merge the branch to the master:
```
git add <changes>
git commit -m "<app_name> configuration changes"
git push -u origin <branch>
```
### Results
**Important**
- Configuration changes (like in dashboards, alerting profiles) must be done via a pull request. Changing a dashboard just in the environment, will cause that it will be overwritten by Monaco.
- Once the pull request is approved and **BMW Monaco** executes, all the configuration created in the previous steps will be visible in Dynatrace:
#### Primary Configuration
- *Management Zone*
- Used to filter entities.
- Can be used to navigate the environment, filtering within dashboards and alerting profiles.
- You can use the generated MZ clicking on the filter at the top-right corner within the Dynatrace UI.
- Learn how to configure/improve your Management Zone [here](link) ([Do i need to configure it?](link))
![Management Zone](img/MZ.PNG)
- *Dashboards*
- Based on a template,
- Initial dashboard with a general overview of the health of the application.
- For Prod environements, PROD and E2E dashboards will be generated.
- For PreProd environments, INT dashboard will be generated.
- Learn how to configure/improve your Dashboards [here](link) ([Do i need to configure it?](link))
![Dashboard](img/Dashboard.PNG)
- *Alerting Profiles*
- Used to filter specific problems related to your applications.
- For Prod environements, PROD and E2E alerting profiles will be generated.
- For PreProd environments, INT alerting profiles will be generated.
- Learn how to configure/improve your Alerting Profiles [here](link) ([Do i need to configure it?](link))
- *Notification System*
- For each Alerting Profile, it's possible to set up a separate Notification System.
- For Prod environements, PROD and E2E notification systems will be generated.
- For PreProd environments, INT notification systems will be generated.
- Notification system is not configured by default. If you want to enable it for your application please follow this [link](link).
- Learn how to configure/improve your Notification System [here](link) ([Do i need to configure it?](link))
#### Optional Configuration
The following configuration items are not set up by default. Learn the value that can provide to monitoring within the Dynatrace documentation (links shared below on each item) or in one of our trainings (recommended, BMW specific)
7. (optional) Custom services
- Short description: *If your application services aren't built on standard technologies, they may not be recognized out-of-the box. You can monitor these technologies, but you'll need to define them as custom services with specific service entry points. Another use case for custom services are microservices that are used by a larger application that aren't exposed via communication technologies.*
- [How to configure it in monaco?](link)
- [Custom services - Dynatrace Documentation](https://www.dynatrace.com/support/help/how-to-use-dynatrace/transactions-and-services/configuration/define-custom-services/)
8. (optional) Request Attributes
- Short description: *Dynatrace tracks all requests, from end to end, and automatically monitors the services that underlie each transaction. The performance and attributes of each request can be analyzed in detail. You can even create [custom multi-faceted filters](https://www.dynatrace.com/support/help/how-to-use-dynatrace/transactions-and-services/analysis/service-flow-filtering/ "Service flow filtering") that enable you to analyze call sequences from multiple perspectives. With such advanced request filtering, Dynatrace enables you to slice and dice your way through your requests to find the proverbial “needle in the haystack.” Such filtering isn't only possible on certain predefined attributes. You can also configure custom request attributes that you can use to improve filtering and analysis of problematic web requests.*
- [How to configure it in monaco?](link)
- [Request Attributes - Dynatrace Documentation](https://www.dynatrace.com/support/help/how-to-use-dynatrace/transactions-and-services/basic-concepts/request-attributes/)
9. (optional) Custom metrics
- Short description: *Dynatrace out-of-the-box metrics generally focus on availability, failure rate, and performance. The [multidimensional analysis view](https://www.dynatrace.com/news/blog/multi-dimensional-analysis-views-for-service-metrics-and-custom-metrics/) for service and custom metrics that enables you to define custom analysis views around use cases that leverage request attributes as metric sources.*
- [How to configure it in monaco?](link)
- [Custom metrics - Dynatrace Documentation](https://www.dynatrace.com/news/blog/custom-metrics-for-services-enrich-dynatrace-ai-and-dashboarding-capabilities-eap/)
10. (optional) Synthetics
- Short description: *Dynatrace Synthetic Monitoring makes it easy for you to monitor the availability and performance of your applications as experienced by your customers around the world and around the clock. Availability is the success rate at a given instant or time period that indicates if your application is fully functional and available to users.*
- [How to configure it in monaco?](link)
- [Synthetics - Dynatrace Documentation](https://www.dynatrace.com/support/help/how-to-use-dynatrace/synthetic-monitoring/)
11. (optional) Naming Rules (Services / Process Groups)
- Short description: *Dynatrace [automatically detects and names your applications server-side services](https://www.dynatrace.com/support/help/how-to-use-dynatrace/transactions-and-services/basic-concepts/service-detection-and-naming/ "Service detection and naming") based on basic properties of your application deployment and configuration. These properties and the resulting service names should be intuitive to you because they reflect your service landscape. In some cases however, the default naming scheme may not be to your liking or may not adequately reflect your service landscape. In other instances, you may want to add certain process or service metadata to a service name to improve usability.*
- [How to configure it in monaco?](link)
- [Naming Rules - Dynatrace Documentation](https://www.dynatrace.com/support/help/how-to-use-dynatrace/transactions-and-services/configuration/customize-service-naming/)
**Recommended**
- Participate in one of the Dynatrace trainings to understand:
- How to use Dynatrace in the most efficient way.
- What kind of changes in the configuration are possible and how will improve monitoring.
- Hands on in how to work with Monaco (Dynatrace Configuration as Code)

View File

@ -1,73 +0,0 @@
# BMW Monaco
## Dynatrace - Get Started!
As the Runtime cluster is instrumented with dynatrace automatically no further actions are needed.
### Initial Setup
To monitor your application with Dynatrace, please follow these steps:
1. Make sure you have access to Dynatrace. If not, follow this [link](https://atc.bmwgroup.net/confluence/display/OPAPM/User+Guide+-+Access+to+new+Dynatrace+Solution)
2. Clone this repository in your local machine:
`git clone https://atc.bmwgroup.net/bitbucket/scm/opapm/cd_e2e_monitoring_config.git`
4. Create a branch using your Component/Application name with the following format:
`git checkout -b CD_<app_name>`
**What value should i use for <app_name>?**
- i.e. for vehicle-composite-service you need to get [this](https://code.connected.bmw/runtime/tf-cluster-apps/blob/master/euprd/apps/vehicle-composite-service.tf#L8) value.
5. Execute the script passing as parameters, again, the <app_name>:
`./onboard.sh CD_<app_name> <app_name>`
6. (optional) Configure Notification System
- Dynatrace AI automatically detects anomalies in your applications and generate problems, visible within the UI. Dynatrace offers several out-of-the-box integrations with problem notification systems such as Email, MS Teams and ITSM.
- Notification systems are not configured by default. If you want to enable them for your application, please follow this [link](https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/cd_e2e_monitoring_config/browse/onboarding/CD_managementZone/notification/README.md).
7. (optional) Add databases to Management Zone
- The script described in step 5 will create the configuration for all entities related to your application (Host, Processes, Services) but not the databases.
- To add your databases into Dynatrace you need to add an extra rule to the [Component.json](https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/cd_e2e_monitoring_config/browse/BMW-Dynatrace-config/00_Global-Config/auto-tag/Component.json) file. You can use [this](https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/cd_e2e_monitoring_config/browse/BMW-Dynatrace-config/00_Global-Config/README.md) example to understand exactly what you have to do.
8. Commit and pull request to merge the branch to the master:
```
git add <changes>
git commit -m "<app_name> configuration changes"
git push -u origin <branch>
```
### Results
**Important**
- Configuration changes (like in dashboards, alerting profiles) must be done via a pull request. Changing a dashboard just in the environment, will cause that it will be overwritten by Monaco.
- Once the pull request is approved and **BMW Monaco** executes, all the configuration created in the previous steps will be visible in Dynatrace:
#### Primary Configuration
- *Management Zone*
- Used to filter entities.
- Can be used to navigate the environment, filtering within dashboards and alerting profiles.
- You can use the generated MZ clicking on the filter at the top-right corner within the Dynatrace UI.
- Learn how to configure/improve your Management Zone [here](https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/cd_e2e_monitoring_config/browse/onboarding/CD_managementZone/management-zone/README.md) ([Do i need to configure it?](link))
![Management Zone](img/MZ.PNG)
- *Dashboards*
- Based on a template,
- Initial dashboard with a general overview of the health of the application.
- For Prod environements, PROD and E2E dashboards will be generated.
- For PreProd environments, INT dashboard will be generated.
- Learn how to configure/improve your Dashboards [here](link) ([Do i need to configure it?](link))
![Dashboard](img/Dashboard.PNG)
**Recommended**
- Participate in one of the Dynatrace trainings to understand:
- How to use Dynatrace in the most efficient way.
- What kind of changes in the configuration are possible and how will improve monitoring.
- Hands on in how to work with Monaco (Dynatrace Configuration as Code)

View File

@ -1,41 +0,0 @@
## (Dynatrace Admins) Testing
This guide contain the steps to set up monaco and automatically onboard and application called "ABC" under the MZ "CD_ABC"
1. Clone repository in your local machine.
2. Define environment variables for the environment.yaml file.
i.e.
*export xxu26128_TOKEN= Dynatrace API token*
Do the same for the rest of the environments. Follow [this](https://www.dynatrace.com/support/help/shortlink/api-authentication#generate-a-token) link to learn how to generate a token in Dynatrace.
3. *mv bin/monaco /usr/bin*
4. Execute the onboard.sh script with the following parameters:
*./onboard.sh CD_<ApplicationName> ApplicationName*
*./onboard.sh CD_ABC ABC*
5. To remove all CD_ABC configuration:
1. Uncomment CD_ABC lines from delete.yaml.
2. Execute monaco again to apply changes from delete.yaml: *monaco deploy -e="environment.yaml" -p="CD_ABC" BMW-Dynatrace-config/*
3. Remove CD_ABC configuration folder
### Results
- CD_ABC Management Zone created containing all entities with ABC tag.
- PROD/E2E/INT Dashboards for CD_ABC components.
- PROD/E2E/INT Alerting Profiles for CD_ABC components.
### Update configuration
1. Execute the following command:
*monaco deploy -e="environment.yaml" -p="00_Global-Config" BMW-Dynatrace-config/*
- Under -p you can select the configuration you want to update
### Debugging
- set environment variable MONACO_REQUEST_LOG=mylogfile.log to see what exactly gets sent to DT
### Download configuration
Configuration has been downloaded and set up under BMW-Dynatrace-config. It's not necessary to be downloaded again.
To download the existing configuration for all tenants, execute the following commands:
1. cd downloaded-config
2. *monaco download -e='../environment.yaml'*
To download the existing configuration for a specific tenant, execute the following commands:
1. cd downloaded-config
2. *monaco download -e='../environment.yaml' -s EMEA-Prod*
### Automatic config environment variables
- source ./exports.sh

View File

@ -1,10 +1,4 @@
## Custom metrics - Multidimensional Analysis
Under the Multidimensional Analysis you're able to save a view but not to create a metric. Instead, you can do it in here:
### How to configure custom metrics?
1. Create the metric within the Dynatrace UI using the Mutidimensional Analysis view.
2. Save the view and create a ticket for the OPAPM team [here](link). Please provide the following information:
- View created in the Dynatrace UI
- Your Dynatrace configuration folder (i.e. CD_<app_name>)
The OPAPM team will proceed creating the metric and updating your configuration in monaco.
Please refer to [this](https://atc.bmwgroup.net/confluence/display/OPMAAS/Documentation+%7C+Calculated+Metrics) page to configure your custom metrics.

View File

@ -0,0 +1,67 @@
### Process Group Detection Rules and Naming
#### Detection Rule or Naming?
For the explanation, we're using a real example of the Infotainment application:
!(PGNaming1)[../../../../img/PGNaming1.PNG]
Before working with your dashboards and alerting profiles, an important task to do when working with Dynatrace is checking
the structure of your applications (process groups). You can do that clicking under *technologies* and filter using your
application Management Zone.
In the picture above, there are two Process Groups called bon-information-prod. **If you see duplicated process groups like in**
**this case, you MUST follow this guideline**
Next step would be to open both process groups and compare the metadata. In that way, you can identify if all process instances are
part of the same application or not. An easy way to do that is asking yourself: how many instances of my application do i have?
If you have 4 instances in total and you're able to see 2 in one PG and other 2 in other PG it means that **they are part of the **
**same application**
Another situation could be that checking on the metadata, then you see that are **two different application** and Dynatrace is just naming
the process group in the same way
*Same application*
- Problem: Dynatrace is creating two different process groups, what transalates in two separated services for the same application. Instead of
seeing all the traffic in one service, you will have it splitted and it will complicate your monitoring
- Solution: create a process group detection rule. Contact Dynatrace Expert
*Different application*
- Problem: Dynatrace is just naming in the same way applications that are different.
- Solution: This case is less severe, since it can be fixed with a process group naming rule.
What about our example?
!(PGNaming2)[../../../../img/PGNaming2.PNG]
!(PGNaming3)[../../../../img/PGNaming3.PNG]
Based on the feedback of the infotaiment team, each process group is a different application (microservice) and it's visible in the kubernetes container/workload
within the metadata of each Process Group.
#### How to create a Process Group Detection Rule
1. Open the *conditional-naming-processgroup.yaml* file and create a rule that looks like this:
```
config:
- CDInfotainmentRule1: template.json
CDInfotainmentRule1:
- name: Infotainment Rule 1
- nameFormat: {ProcessGroup:KubernetesNamespace} - {ProcessGroup:KubernetesContainerName}
- tag: Infotainment
- skipDeployment: false
```
The result of the rule will be renaming the PG to this:
```
bon-information-prod ipa
bon-information-prod rsl
```
Other possible placeholders that you can use are for example:
{ProcessGroup:KubernetesNamespace} - {ProcessGroup:KubernetesContainerName/[^\\-]*$}
{ProcessGroup:KubernetesNamespace} - {ProcessGroup:KubernetesFullPodName/buffet-(.*?)-}
{ProcessGroup:DetectedName} - {HostGroup:Name/[^\\_]*$}
{ProcessGroup:KubernetesNamespace}
{ProcessGroup:CommandLineArgs/.*?\\-f\\s\\/www\\/(.*?)\\/generated\\/httpd\\.conf.*?}
You can combine different ones. Check the (documentation)[link] for more

View File

@ -0,0 +1,8 @@
config:
- CDnewComponentTag: template.json
CDnewComponentTag:
- name: MyProcessNamingRule
- nameFormat: "{ProcessGroup:KubernetesNamespace/regex-example}"
- tag: newComponentTag
- skipDeployment: "true"

View File

@ -2,12 +2,12 @@
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.212.88.20210305-151445",
"clusterVersion": "1.214.107.20210407-223952",
"configurationVersions": [
0
]
},
"nameFormat": "{ProcessGroup:DetectedName} - {HostGroup:Name/[^\\_]*$}",
"nameFormat": "{{.nameFormat}}",
"rules": [
{
"comparisonInfo": {
@ -17,7 +17,7 @@
"value": {
"context": "CONTEXTLESS",
"key": "Component",
"value": "ASBC-HAL"
"value": "{{.tag}}"
}
},
"key": {

View File

@ -0,0 +1,35 @@
### Service Naming Rules
A typical case could be that you access to *Transaction & Services* and you find two services that are exactly the same:
*DataDownloadV1*
*DataDownloadV1*
If you drilldown into the service and you check in the process group, you may have a PROD and a E2E for each service.
*Note: if you see that both process group are exactly the same, please contact a Dynatrace expert to create a Process*
*Group detection rule*
In the case the PG are PROD and E2E, then we need to create a rule that looks like this:
```
config:
- CDInfotainmentRule1: template.json
CDInfotainmentRule1:
- name: Infotainment Rule 1
- nameFormat: {Service:DetectedName} - {ProcessGroup:KubernetesNamespace/[^-]+$}
- tag: Infotainment
- skipDeployment: false
```
The rule will get the Service Detected Name (current name) and it will extract (with a regex) the part of the kubernetes namespace after the "-", so -prod or -e2e, resulting in:
*DataDownloadV1 - prod*
*DataDownloadV1 - e2e*
Now, services will be easy to identify.
You can create rules based on any property/metadata. Some other placeholder's eamples:
{Service:DatabaseName} - E2E
{Service:WebServiceName} - {ProcessGroup:Kubernetes:microservice} - {ProcessGroup:Kubernetes:environment}
{Service:DetectedName} - {ProcessGroup:KubernetesContainerName} - {ProcessGroup:KubernetesNamespace/[^-]+$}
{Service:DetectedName} - {ProcessGroup:SpringBootProfileName/[^\\-]*$}

View File

@ -0,0 +1,8 @@
config:
- CDnewComponentTag: template.json
CDnewComponentTag:
- name: MyProcessNamingRule
- nameFormat: "{ProcessGroup:KubernetesNamespace/regex-example}"
- tag: newComponentTag
- skipDeployment: "true"

View File

@ -2,12 +2,12 @@
"displayName": "{{.name}}",
"enabled": true,
"metadata": {
"clusterVersion": "1.211.111.20210222-093946",
"clusterVersion": "1.214.107.20210407-223952",
"configurationVersions": [
0
]
},
"nameFormat": "{Service:DetectedName} - {ProcessGroup:KubernetesContainerName} - {ProcessGroup:KubernetesNamespace/[^-]+$}",
"nameFormat": "{{.nameFormat}}",
"rules": [
{
"comparisonInfo": {
@ -16,8 +16,8 @@
"type": "TAG",
"value": {
"context": "CONTEXTLESS",
"key": "Platform",
"value": "OpenShift"
"key": "Component",
"value": "{{.tag}}"
}
},
"key": {

View File

@ -1,30 +1,4 @@
## What is a custom service in Dynatrace?
- *If your application's services aren't built on standard technologies, they may not be recognized out-of-the box.*
- *You can monitor these technologies, but you'll need to define them as custom services with specific service entry points.*
- *Another use case for custom services are microservices that are used by a larger application that aren't exposed via communication technologies.*
### How to configure custom services?
## How to create a custom service?
1. Open the file *custom-service-java.yaml* under your *CD_<app_name>/custom-service-java* configuration folder.
2. Use customService1 as a template. Copy and paste it below, changing the skipDeployment to "false".
3. Fill up all the remaining inputs with the details of the endpoint you're interested to monitor. (className, methodName, etc...)
4. Commit and pull request to merge the branch to the master:
`git add <changes>`
`git commit -m "<app_name> configuration changes"`
`git push -u origin <branch>`
5. Restart the application where the custom service has been created.
6. Check if the custom service appears in Dynatrace.
Notes:
- As this configuration needs a restart, it's better to create it in a non-Prod application.
- The custom service will appear in Dynatrace iff there's traffic going through.
## What if i have multiple classes?
1. Clone *template-1-1.json* to a new one called *template-2-1.json*.
2. Edit *template-2-1.json* adding a 2nd rule separated with a coma.
3. For the 2nd rule, change the name of the {{.values}} to {{.values2}} i.e.
4. The template is ready to be used in the YAML file.
## What if i have multiple methods?
1. Same process as before, just call it template-1-2.json
2. In this way you can extend to a custom service with n classes and k methods: template-n-k.json
Please refer to [this](https://atc.bmwgroup.net/confluence/display/OPMAAS/Documentation+%7C+Custom+Services) page to configure your custom services.

View File

@ -71,6 +71,44 @@
],
"enabled": true,
"type": "HOST"
},
{
"conditions": [
{
"comparisonInfo": {
"caseSensitive": true,
"negate": false,
"operator": "CONTAINS",
"type": "STRING",
"value": "{{.tag}}"
},
"key": {
"attribute": "CLOUD_APPLICATION_NAMESPACE_NAME"
}
}
],
"enabled": true,
"propagationTypes": [],
"type": "CLOUD_APPLICATION_NAMESPACE"
},
{
"conditions": [
{
"comparisonInfo": {
"caseSensitive": true,
"negate": false,
"operator": "CONTAINS",
"type": "STRING",
"value": "{{.tag}}"
},
"key": {
"attribute": "CLOUD_APPLICATION_NAME"
}
}
],
"enabled": true,
"propagationTypes": [],
"type": "CLOUD_APPLICATION"
}
]
}

View File

@ -1,37 +1,4 @@
# Synthetic Configuration
To calculate the Availability KPI, a synthetic must be configured.
### How to configure synthetics?
1. Modify the synthetic-monitor.yaml file, providing:
- **Endpoint**: url intended to check the availability.
- **Location**:
- *synthetic private location*: If the endpoint is reachable within the BMW network.
```
- location: BMW-Dynatrace-config/00_Global-Config/synthetic-location/BMW-AWS-Frankfurt.id
```
- *synthetic public location*: If the endpoint is reachable from the internet.
```
- location: GEOLOCATION-45AB48D9D6925ECC
```
2. Change `skipDeployment` to false.
i.e.
```
config:
- my-synthetic: default.json
my-synthetic:
- name: CD_BMW - bmw.com
- mzName: CD_google/management-zone/CDgoogle.name
- mzId: CD_google/management-zone/CDgoogle.id
- endpoint: https://google.com
- location: GEOLOCATION-45AB48D9D6925ECC
- skipDeployment: "false"
```
3. Commit and pull request to merge the branch to the master:
```
git add <changes>
git commit -m "<app_name> configuration changes"
git push -u origin <branch>
```
Please refer to [this](https://atc.bmwgroup.net/confluence/display/OPMAAS/Documentation+%7C+Synthetic+Monitors) page to configure your synthetics.