onboarding connected-oauth-service

custom-service-JONYR
qxz15oi 2021-04-06 14:38:01 +02:00
parent 7dc7841240
commit e648a9987c
33 changed files with 1973 additions and 241 deletions

View File

@ -1,6 +1,88 @@
CDconnected-oauth-service:
- name: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.name
- tag: connected-oauth-service-apim
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
config:
- CDconnected-oauth-service: connected-oauth-service.json
- CDconnected-oauth-service-PROD: default.json
- CDconnected-oauth-service-E2E: default.json
- CDconnected-oauth-service-INT: default.json
#Prod dashboards for EMEA/NA/CN
#Dry-run needed for all hubs
CDconnected-oauth-service-PROD:
- name: CD_connected-oauth-service PROD
- tag: connected-oauth-service
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- env: PROD
- skipDeployment: "true"
#Configuration
CDconnected-oauth-service-PROD.EMEA-Prod:
- name: CD_connected-oauth-service PROD
- tag: connected-oauth-service
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- env: PROD
- skipDeployment: "false"
CDconnected-oauth-service-PROD.NA-Prod:
- name: CD_connected-oauth-service PROD
- tag: connected-oauth-service
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- env: PROD
- skipDeployment: "false"
CDconnected-oauth-service-PROD.CN-Prod:
- name: CD_connected-oauth-service PROD
- tag: connected-oauth-service
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- env: PROD
- skipDeployment: "false"
#E2E dashboards for EMEA/NA/CN
#Dry-run needed for all hubs
CDconnected-oauth-service-E2E:
- name: CD_connected-oauth-service E2E
- tag: connected-oauth-service
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- env: E2E
- skipDeployment: "true"
#Configuration
CDconnected-oauth-service-E2E.EMEA-Prod:
- name: CD_connected-oauth-service E2E
- tag: connected-oauth-service
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- env: E2E
- skipDeployment: "false"
CDconnected-oauth-service-E2E.NA-Prod:
- name: CD_connected-oauth-service E2E
- tag: connected-oauth-service
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- env: E2E
- skipDeployment: "false"
CDconnected-oauth-service-E2E.CN-Prod:
- name: CD_connected-oauth-service E2E
- tag: connected-oauth-service
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- env: E2E
- skipDeployment: "false"
#INT dashboards for EMEA/NA/CN
#Dry-run needed for all hubs
CDconnected-oauth-service-INT:
- name: CD_connected-oauth-service INT
- tag: connected-oauth-service
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- env: INT
- skipDeployment: "true"
#Configuration
CDconnected-oauth-service-INT.EMEA-PreProd:
- name: CD_connected-oauth-service INT
- tag: connected-oauth-service
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- env: INT
- skipDeployment: "false"
CDconnected-oauth-service-INT.NA-PreProd:
- name: CD_connected-oauth-service INT
- tag: connected-oauth-service
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- env: INT
- skipDeployment: "false"
CDconnected-oauth-service-INT.CN-PreProd:
- name: CD_connected-oauth-service INT
- tag: connected-oauth-service
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- env: INT
- skipDeployment: "false"

View File

@ -8,12 +8,17 @@
"delayInMinutes": 0,
"severityLevel": "AVAILABILITY",
"tagFilter": {
"includeMode": "INCLUDE_ANY",
"includeMode": "INCLUDE_ALL",
"tagFilters": [
{
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
},
{
"context": "CONTEXTLESS",
"key": "Environment",
"value": "{{.env}}"
}
]
}
@ -22,12 +27,17 @@
"delayInMinutes": 10,
"severityLevel": "ERROR",
"tagFilter": {
"includeMode": "INCLUDE_ANY",
"includeMode": "INCLUDE_ALL",
"tagFilters": [
{
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
},
{
"context": "CONTEXTLESS",
"key": "Environment",
"value": "{{.env}}"
}
]
}
@ -36,12 +46,17 @@
"delayInMinutes": 30,
"severityLevel": "PERFORMANCE",
"tagFilter": {
"includeMode": "INCLUDE_ANY",
"includeMode": "INCLUDE_ALL",
"tagFilters": [
{
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
},
{
"context": "CONTEXTLESS",
"key": "Environment",
"value": "{{.env}}"
}
]
}
@ -50,12 +65,17 @@
"delayInMinutes": 30,
"severityLevel": "RESOURCE_CONTENTION",
"tagFilter": {
"includeMode": "INCLUDE_ANY",
"includeMode": "INCLUDE_ALL",
"tagFilters": [
{
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
},
{
"context": "CONTEXTLESS",
"key": "Environment",
"value": "{{.env}}"
}
]
}
@ -64,26 +84,17 @@
"delayInMinutes": 10,
"severityLevel": "CUSTOM_ALERT",
"tagFilter": {
"includeMode": "INCLUDE_ANY",
"includeMode": "INCLUDE_ALL",
"tagFilters": [
{
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
}
]
}
},
{
"delayInMinutes": 0,
"severityLevel": "MONITORING_UNAVAILABLE",
"tagFilter": {
"includeMode": "INCLUDE_ANY",
"tagFilters": [
{
},
{
"context": "CONTEXTLESS",
"key": "Component",
"value": "{{.tag}}"
"key": "Environment",
"value": "{{.env}}"
}
]
}

View File

@ -0,0 +1,10 @@
## 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

@ -0,0 +1,30 @@
## 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

@ -0,0 +1,9 @@
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

@ -0,0 +1,23 @@
{
"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

@ -0,0 +1,13 @@
## 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

@ -0,0 +1,59 @@
config:
- CDconnected-oauth-service-PROD-E2E: defaultPRODE2E.json
- CDconnected-oauth-service-INT-TEST: defaultINTTEST.json
#PROD-E2E dashboards for EMEA/NA/CN Prod
#Dry-run needed for all hubs
CDconnected-oauth-service-PROD-E2E:
- name: CD_connected-oauth-service PROD-E2E
- mzName: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.name
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- skipDeployment: "true"
#Configuration
CDconnected-oauth-service-PROD-E2E.EMEA-Prod:
- name: CD_connected-oauth-service PROD-E2E
- mzName: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.name
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- tag: connected-oauth-service
- skipDeployment: "false"
CDconnected-oauth-service-PROD-E2E.NA-Prod:
- name: CD_connected-oauth-service PROD-E2E
- mzName: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.name
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- tag: connected-oauth-service
- skipDeployment: "false"
CDconnected-oauth-service-PROD-E2E.CN-Prod:
- name: CD_connected-oauth-service PROD-E2E
- mzName: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.name
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- tag: connected-oauth-service
- skipDeployment: "false"
#INT-TEST dashboards for EMEA/NA/CN PreProd
#Dry-run needed for all hubs
CDconnected-oauth-service-INT-TEST:
- name: CD_connected-oauth-service INT-TEST
- mzName: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.name
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- tag: connected-oauth-service
- skipDeployment: "true"
#Configuration
CDconnected-oauth-service-INT-TEST.EMEA-PreProd:
- name: CD_connected-oauth-service INT-TEST
- mzName: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.name
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- tag: connected-oauth-service
- skipDeployment: "false"
CDconnected-oauth-service-INT-TEST.NA-PreProd:
- name: CD_connected-oauth-service INT-TEST
- mzName: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.name
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- env: INT
- skipDeployment: "false"
CDconnected-oauth-service-INT-TEST.CN-PreProd:
- name: CD_connected-oauth-service INT-TEST
- mzName: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.name
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- env: INT
- skipDeployment: "false"

View File

@ -0,0 +1,586 @@
{
"metadata": {
"configurationVersions": [
3
],
"clusterVersion": "1.213.116.20210318-174118"
},
"dashboardMetadata": {
"name": "{{.name}}",
"shared": false,
"owner": "Ignacio.Goldman@partner.bmwgroup.com",
"dashboardFilter": {
"managementZone": {
"id": "{{.mzId}}",
"name": "{{.mzName}}"
}
},
"tags": [
"{{.mzName}}"
]
},
"tiles": [
{
"name": "Custom chart",
"tileType": "CUSTOM_CHARTING",
"configured": true,
"bounds": {
"top": 380,
"left": 38,
"width": 760,
"height": 266
},
"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": 1595276148986,
"customColor": "#ef651f"
}
}
},
"filtersPerEntityType": {
"SERVICE": {
"AUTO_TAGS": [
"Environment:INT"
]
}
}
}
},
{
"name": "Problems",
"tileType": "OPEN_PROBLEMS",
"configured": true,
"bounds": {
"top": 114,
"left": 1596,
"width": 152,
"height": 152
},
"tileFilter": {}
},
{
"name": "",
"tileType": "SERVICES",
"configured": true,
"bounds": {
"top": 76,
"left": 1064,
"width": 228,
"height": 190
},
"tileFilter": {},
"filterConfig": {
"type": "SERVICE",
"customName": "Services",
"defaultName": "Services",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [],
"resultMetadata": {}
},
"filtersPerEntityType": {
"SERVICE": {
"AUTO_TAGS": [
"Environment:TEST",
"Component:{{.tag}}"
]
}
}
},
"chartVisible": true
},
{
"name": "Overall Health - INT",
"tileType": "HEADER",
"configured": true,
"bounds": {
"top": 38,
"left": 38,
"width": 760,
"height": 38
},
"tileFilter": {}
},
{
"name": "Markdown",
"tileType": "MARKDOWN",
"configured": true,
"bounds": {
"top": 684,
"left": 38,
"width": 1520,
"height": 38
},
"tileFilter": {},
"markdown": "---\n"
},
{
"name": "Service1 - TEST",
"tileType": "HEADER",
"configured": true,
"bounds": {
"top": 722,
"left": 798,
"width": 760,
"height": 38
},
"tileFilter": {}
},
{
"name": "Custom chart",
"tileType": "CUSTOM_CHARTING",
"configured": true,
"bounds": {
"top": 760,
"left": 798,
"width": 760,
"height": 304
},
"tileFilter": {},
"filterConfig": {
"type": "MIXED",
"customName": "Response time, Throughput 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:TEST"
]
}
}
}
},
{
"name": "Service1 - INT",
"tileType": "HEADER",
"configured": true,
"bounds": {
"top": 722,
"left": 38,
"width": 760,
"height": 38
},
"tileFilter": {}
},
{
"name": "Custom chart",
"tileType": "CUSTOM_CHARTING",
"configured": true,
"bounds": {
"top": 760,
"left": 38,
"width": 760,
"height": 304
},
"tileFilter": {},
"filterConfig": {
"type": "MIXED",
"customName": "Response time, Throughput 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:INT"
]
}
}
}
},
{
"name": "Custom chart",
"tileType": "CUSTOM_CHARTING",
"configured": true,
"bounds": {
"top": 380,
"left": 798,
"width": 760,
"height": 266
},
"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": 1595276148986,
"customColor": "#ef651f"
}
}
},
"filtersPerEntityType": {
"SERVICE": {
"AUTO_TAGS": [
"Environment:TEST"
]
}
}
}
},
{
"name": "Markdown",
"tileType": "MARKDOWN",
"configured": true,
"bounds": {
"top": 304,
"left": 38,
"width": 1520,
"height": 38
},
"tileFilter": {},
"markdown": "---\n"
},
{
"name": "Failure rate - TEST (HTTP 4xx/5xx errors)",
"tileType": "HEADER",
"configured": true,
"bounds": {
"top": 342,
"left": 798,
"width": 760,
"height": 38
},
"tileFilter": {}
},
{
"name": "Failure rate - INT (HTTP 4xx/5xx errors)",
"tileType": "HEADER",
"configured": true,
"bounds": {
"top": 342,
"left": 38,
"width": 760,
"height": 38
},
"tileFilter": {}
},
{
"name": "",
"tileType": "DATABASES_OVERVIEW",
"configured": true,
"bounds": {
"top": 76,
"left": 570,
"width": 228,
"height": 190
},
"tileFilter": {},
"filterConfig": {
"type": "DATABASE",
"customName": "Databases",
"defaultName": "Databases",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [],
"resultMetadata": {}
},
"filtersPerEntityType": {
"DATABASE": {
"AUTO_TAGS": [
"Component:{{.tag}}",
"Environment:INT"
]
}
}
},
"chartVisible": true
},
{
"name": "Overall Health - TEST",
"tileType": "HEADER",
"configured": true,
"bounds": {
"top": 38,
"left": 798,
"width": 760,
"height": 38
},
"tileFilter": {}
},
{
"name": "",
"tileType": "DATABASES_OVERVIEW",
"configured": true,
"bounds": {
"top": 76,
"left": 1330,
"width": 228,
"height": 190
},
"tileFilter": {},
"filterConfig": {
"type": "DATABASE",
"customName": "Databases",
"defaultName": "Databases",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [],
"resultMetadata": {}
},
"filtersPerEntityType": {
"DATABASE": {
"AUTO_TAGS": [
"Environment:TEST",
"Component:{{.tag}}"
]
}
}
},
"chartVisible": true
},
{
"name": "",
"tileType": "SERVICES",
"configured": true,
"bounds": {
"top": 76,
"left": 304,
"width": 228,
"height": 190
},
"tileFilter": {},
"filterConfig": {
"type": "SERVICE",
"customName": "Services",
"defaultName": "Services",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [],
"resultMetadata": {}
},
"filtersPerEntityType": {
"SERVICE": {
"AUTO_TAGS": [
"Component:{{.tag}}",
"Environment:INT"
]
}
}
},
"chartVisible": true
},
{
"name": "",
"tileType": "HOSTS",
"configured": true,
"bounds": {
"top": 76,
"left": 798,
"width": 228,
"height": 190
},
"tileFilter": {},
"filterConfig": {
"type": "HOST",
"customName": "Hosts",
"defaultName": "Hosts",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [],
"resultMetadata": {}
},
"filtersPerEntityType": {
"HOST": {
"AUTO_TAGS": [
"Environment:TEST",
"Component:{{.tag}}"
]
}
}
},
"chartVisible": true
},
{
"name": "",
"tileType": "HOSTS",
"configured": true,
"bounds": {
"top": 76,
"left": 38,
"width": 228,
"height": 190
},
"tileFilter": {},
"filterConfig": {
"type": "HOST",
"customName": "Hosts",
"defaultName": "Hosts",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [],
"resultMetadata": {}
},
"filtersPerEntityType": {
"HOST": {
"AUTO_TAGS": [
"Component:{{.tag}}",
"Environment:INT"
]
}
}
},
"chartVisible": true
}
]
}

View File

@ -0,0 +1,586 @@
{
"metadata": {
"configurationVersions": [
3
],
"clusterVersion": "1.213.116.20210318-174118"
},
"dashboardMetadata": {
"name": "{{.name}}",
"shared": false,
"owner": "Ignacio.Goldman@partner.bmwgroup.com",
"dashboardFilter": {
"managementZone": {
"id": "{{.mzId}}",
"name": "{{.mzName}}"
}
},
"tags": [
"{{.mzName}}"
]
},
"tiles": [
{
"name": "Custom chart",
"tileType": "CUSTOM_CHARTING",
"configured": true,
"bounds": {
"top": 380,
"left": 38,
"width": 760,
"height": 266
},
"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": 1595276148986,
"customColor": "#ef651f"
}
}
},
"filtersPerEntityType": {
"SERVICE": {
"AUTO_TAGS": [
"Environment:PROD"
]
}
}
}
},
{
"name": "Problems",
"tileType": "OPEN_PROBLEMS",
"configured": true,
"bounds": {
"top": 114,
"left": 1596,
"width": 152,
"height": 152
},
"tileFilter": {}
},
{
"name": "",
"tileType": "SERVICES",
"configured": true,
"bounds": {
"top": 76,
"left": 1064,
"width": 228,
"height": 190
},
"tileFilter": {},
"filterConfig": {
"type": "SERVICE",
"customName": "Services",
"defaultName": "Services",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [],
"resultMetadata": {}
},
"filtersPerEntityType": {
"SERVICE": {
"AUTO_TAGS": [
"Environment:E2E",
"Component:{{.tag}}"
]
}
}
},
"chartVisible": true
},
{
"name": "Overall Health - PROD",
"tileType": "HEADER",
"configured": true,
"bounds": {
"top": 38,
"left": 38,
"width": 760,
"height": 38
},
"tileFilter": {}
},
{
"name": "Markdown",
"tileType": "MARKDOWN",
"configured": true,
"bounds": {
"top": 684,
"left": 38,
"width": 1520,
"height": 38
},
"tileFilter": {},
"markdown": "---\n"
},
{
"name": "Service1 - E2E",
"tileType": "HEADER",
"configured": true,
"bounds": {
"top": 722,
"left": 798,
"width": 760,
"height": 38
},
"tileFilter": {}
},
{
"name": "Custom chart",
"tileType": "CUSTOM_CHARTING",
"configured": true,
"bounds": {
"top": 760,
"left": 798,
"width": 760,
"height": 304
},
"tileFilter": {},
"filterConfig": {
"type": "MIXED",
"customName": "Response time, Throughput 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:E2E"
]
}
}
}
},
{
"name": "Service1 - PROD",
"tileType": "HEADER",
"configured": true,
"bounds": {
"top": 722,
"left": 38,
"width": 760,
"height": 38
},
"tileFilter": {}
},
{
"name": "Custom chart",
"tileType": "CUSTOM_CHARTING",
"configured": true,
"bounds": {
"top": 760,
"left": 38,
"width": 760,
"height": 304
},
"tileFilter": {},
"filterConfig": {
"type": "MIXED",
"customName": "Response time, Throughput 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:PROD"
]
}
}
}
},
{
"name": "Custom chart",
"tileType": "CUSTOM_CHARTING",
"configured": true,
"bounds": {
"top": 380,
"left": 798,
"width": 760,
"height": 266
},
"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": 1595276148986,
"customColor": "#ef651f"
}
}
},
"filtersPerEntityType": {
"SERVICE": {
"AUTO_TAGS": [
"Environment:E2E"
]
}
}
}
},
{
"name": "Markdown",
"tileType": "MARKDOWN",
"configured": true,
"bounds": {
"top": 304,
"left": 38,
"width": 1520,
"height": 38
},
"tileFilter": {},
"markdown": "---\n"
},
{
"name": "Failure rate - E2E (HTTP 4xx/5xx errors)",
"tileType": "HEADER",
"configured": true,
"bounds": {
"top": 342,
"left": 798,
"width": 760,
"height": 38
},
"tileFilter": {}
},
{
"name": "Failure rate - PROD (HTTP 4xx/5xx errors)",
"tileType": "HEADER",
"configured": true,
"bounds": {
"top": 342,
"left": 38,
"width": 760,
"height": 38
},
"tileFilter": {}
},
{
"name": "",
"tileType": "DATABASES_OVERVIEW",
"configured": true,
"bounds": {
"top": 76,
"left": 570,
"width": 228,
"height": 190
},
"tileFilter": {},
"filterConfig": {
"type": "DATABASE",
"customName": "Databases",
"defaultName": "Databases",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [],
"resultMetadata": {}
},
"filtersPerEntityType": {
"DATABASE": {
"AUTO_TAGS": [
"Component:{{.tag}}",
"Environment:PROD"
]
}
}
},
"chartVisible": true
},
{
"name": "Overall Health - E2E",
"tileType": "HEADER",
"configured": true,
"bounds": {
"top": 38,
"left": 798,
"width": 760,
"height": 38
},
"tileFilter": {}
},
{
"name": "",
"tileType": "DATABASES_OVERVIEW",
"configured": true,
"bounds": {
"top": 76,
"left": 1330,
"width": 228,
"height": 190
},
"tileFilter": {},
"filterConfig": {
"type": "DATABASE",
"customName": "Databases",
"defaultName": "Databases",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [],
"resultMetadata": {}
},
"filtersPerEntityType": {
"DATABASE": {
"AUTO_TAGS": [
"Environment:E2E",
"Component:{{.tag}}"
]
}
}
},
"chartVisible": true
},
{
"name": "",
"tileType": "SERVICES",
"configured": true,
"bounds": {
"top": 76,
"left": 304,
"width": 228,
"height": 190
},
"tileFilter": {},
"filterConfig": {
"type": "SERVICE",
"customName": "Services",
"defaultName": "Services",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [],
"resultMetadata": {}
},
"filtersPerEntityType": {
"SERVICE": {
"AUTO_TAGS": [
"Component:{{.tag}}",
"Environment:PROD"
]
}
}
},
"chartVisible": true
},
{
"name": "",
"tileType": "HOSTS",
"configured": true,
"bounds": {
"top": 76,
"left": 798,
"width": 228,
"height": 190
},
"tileFilter": {},
"filterConfig": {
"type": "HOST",
"customName": "Hosts",
"defaultName": "Hosts",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [],
"resultMetadata": {}
},
"filtersPerEntityType": {
"HOST": {
"AUTO_TAGS": [
"Environment:E2E",
"Component:{{.tag}}"
]
}
}
},
"chartVisible": true
},
{
"name": "",
"tileType": "HOSTS",
"configured": true,
"bounds": {
"top": 76,
"left": 38,
"width": 228,
"height": 190
},
"tileFilter": {},
"filterConfig": {
"type": "HOST",
"customName": "Hosts",
"defaultName": "Hosts",
"chartConfig": {
"legendShown": true,
"type": "TIMESERIES",
"series": [],
"resultMetadata": {}
},
"filtersPerEntityType": {
"HOST": {
"AUTO_TAGS": [
"Component:{{.tag}}",
"Environment:PROD"
]
}
}
},
"chartVisible": true
}
]
}

View File

@ -0,0 +1,76 @@
## 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

@ -18,42 +18,6 @@
"key": {
"attribute": "SERVICE_TAGS"
}
},
{
"comparisonInfo": {
"caseSensitive": true,
"negate": true,
"operator": "CONTAINS",
"type": "STRING",
"value": "HealthResource"
},
"key": {
"attribute": "SERVICE_NAME"
}
},
{
"comparisonInfo": {
"caseSensitive": true,
"negate": true,
"operator": "CONTAINS",
"type": "STRING",
"value": "PingResource"
},
"key": {
"attribute": "SERVICE_NAME"
}
},
{
"comparisonInfo": {
"caseSensitive": true,
"negate": true,
"operator": "CONTAINS",
"type": "STRING",
"value": "PrometheusResource"
},
"key": {
"attribute": "SERVICE_NAME"
}
}
],
"enabled": true,
@ -86,6 +50,27 @@
"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,20 +1,6 @@
CDconnected-oauth-service.CN-PreProd:
- name: CD_connected-oauth-service
- tag: connected-oauth-service-apim
CDconnected-oauth-service.CN-Prod:
- name: CD_connected-oauth-service
- tag: connected-oauth-service-apim
CDconnected-oauth-service.EMEA-PreProd:
- name: CD_connected-oauth-service
- tag: connected-oauth-service-apim
CDconnected-oauth-service.EMEA-Prod:
- name: CD_connected-oauth-service
- tag: connected-oauth-service-apim
CDconnected-oauth-service.NA-PreProd:
- name: CD_connected-oauth-service
- tag: connected-oauth-service-apim
CDconnected-oauth-service.NA-Prod:
- name: CD_connected-oauth-service
- tag: connected-oauth-service-apim
config:
- CDconnected-oauth-service: CDconnected-oauth-service.json
- CDconnected-oauth-service: default.json
CDconnected-oauth-service:
- name: CD_connected-oauth-service
- tag: connected-oauth-service

View File

@ -0,0 +1,60 @@
## 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

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

View File

@ -0,0 +1,11 @@
{
"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

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

View File

@ -0,0 +1,12 @@
# Synthetic Configuration
To calculate the Availability KPI, a synthetic must be configured.
1. Modify the synthetic-monitor.yaml file, providing the endpoint that will be tested, and location where the synthetic will run.
2. Change the skipDeployment to 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

@ -0,0 +1,85 @@
{
"anomalyDetection": {
"loadingTimeThresholds": {
"enabled": false,
"thresholds": [
{
"type": "TOTAL",
"valueMs": 0
}
]
},
"outageHandling": {
"globalOutage": true,
"localOutage": false,
"localOutagePolicy": {
"affectedLocations": 1,
"consecutiveRuns": 3
}
}
},
"automaticallyAssignedApps": [],
"createdFrom": "GUI",
"enabled": true,
"entityId": "HTTP_CHECK-3A93AE1CD9A029F7",
"frequencyMin": 1,
"locations": [
"SYNTHETIC_LOCATION-6A36EDD481FAEB5D"
],
"managementZones": [
{
"id": "-2133422980246552080",
"name": "CD_SMS-Gateway"
}
],
"manuallyAssignedApps": [],
"name": "{{.name}}",
"requests": [
{
"entityId": "HTTP_CHECK_STEP-0BA53EC80CD7EE5A",
"name": "SMS GW EMEA PROD",
"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": "SMS GW EMEA PROD",
"method": "POST",
"requestBody": "{\n \"sender\": \"CDE2EMonitoring\",\n \"msg\": \n [ \n {\"to\": \n [ \n {\n \"number\": 49151601XXXX\n \n }\n ],\n \"contentType\":\"text\",\n \"content\": \"Test SMS GW MONITORING\" \n \n }\n ]\n \n}",
"url": "https://smsgw-emea-prod.bmwgroup.net/sms/v1/message",
"validation": {
"rules": [
{
"passIfFound": true,
"type": "httpStatusesList",
"value": "400"
}
],
"rulesChaining": "or"
}
}
],
"version": "1.0"
},
"tags": [],
"type": "HTTP"
}

View File

@ -0,0 +1,10 @@
config:
- connected-oauth-service: default.json
connected-oauth-service:
- name: CD_connected-oauth-service - <endpoint>
- mzName: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.name
- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id
- endpoint: <endpoint>
- location: <location>
- skipDeployment: "true"

View File

@ -53,7 +53,7 @@ To monitor your application with Dynatrace, please follow these steps:
- 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))
- 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)

View File

@ -4,78 +4,84 @@ config:
- CDnewComponentTag-INT: default.json
#Prod dashboards for EMEA/NA/CN
#Dry-run needed for all hubs
CDnewComponentTag-PROD:
- name: CD_newComponentTag 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_newComponentTag PROD
- name: CD_managementZone PROD
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: PROD
- skipDeployment: "false"
CDnewComponentTag-PROD.NA-Prod:
- name: CD_newComponentTag PROD
- name: CD_managementZone PROD
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: PROD
- skipDeployment: "false"
CDnewComponentTag-PROD.CN-Prod:
- name: CD_newComponentTag PROD
- name: CD_managementZone PROD
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: PROD
- skipDeployment: "false"
#E2E dashboards for EMEA/NA/CN
#Dry-run needed for all hubs
CDnewComponentTag-E2E:
- name: CD_newComponentTag E2E
- name: CD_managementZone E2E
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: E2E
- skipDeployment: "true"
#Configuration
CDnewComponentTag-E2E.EMEA-Prod:
- name: CD_newComponentTag E2E
- name: CD_managementZone E2E
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: E2E
- skipDeployment: "false"
CDnewComponentTag-E2E.NA-Prod:
- name: CD_newComponentTag E2E
- name: CD_managementZone E2E
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: E2E
- skipDeployment: "false"
CDnewComponentTag-E2E.CN-Prod:
- name: CD_newComponentTag E2E
- name: CD_managementZone E2E
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: E2E
- skipDeployment: "false"
#INT dashboards for EMEA/NA/CN
#Dry-run needed for all hubs
CDnewComponentTag-INT:
- name: CD_newComponentTag 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_newComponentTag INT
- name: CD_managementZone INT
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: INT
- skipDeployment: "false"
CDnewComponentTag-INT.NA-PreProd:
- name: CD_newComponentTag INT
- name: CD_managementZone INT
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: INT
- skipDeployment: "false"
CDnewComponentTag-INT.CN-PreProd:
- name: CD_newComponentTag INT
- name: CD_managementZone INT
- tag: newComponentTag
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- env: INT

View File

@ -1,10 +1,10 @@
## Custom metrics - Multidimensional Analysis
In case you want to create a metric from the Multidimensional Analysis view, these are the steps to follow:
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
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>)
- 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,13 +1,13 @@
## What is a custom service in Dynatrace?
- *If your application services aren't built on standard technologies, they may not be recognized out-of-the box.*
- *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.
2. Use customService1 as a template. Copy and paste it below, changing the skipDeployment to true.
3. Fill up all the remaining inputs with the details of the endpoint you're interested to monitor (className, methodName, etc...)
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"`

View File

@ -1,7 +1,13 @@
## Update dashboard configuration
If you need to change your dashboard in one of your environments, follow these steps:
1. Modify the dashboard within the UI
2. Copy the JSON
3. Overwrite the JSON in your monaco configuration
4. add, commit, push
- 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

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

View File

@ -6,69 +6,71 @@
#### HealthResource, PingResource, PrometheusResource services
*After the deployment of the OneAgent, you will be able to see all your services under Transactions & Services. For many other components,*
*we have been required to exclude some noisy services such as HealthResource, PingResource, PrometheusResource*
*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 default.json configuration under the management-zone folder
2. Under the `"type": "SERVICE"` rule, add one extra condition:
`{
` "comparisonInfo": {`
` "caseSensitive": true,`
` "negate": true,`
` "operator": "CONTAINS",`
` "type": "STRING",`
` "value": "HealthResource"`
` },`
` "key": {`
` "attribute": "SERVICE_NAME"`
` }`
`}`
The rule 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"`
`}`
Note: you can apply the same logic for PingResource, PrometheusResource or any other entity it's intended to be excluded
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>`
```
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,20 +1,6 @@
config:
- CDnewComponentTag: default.json
CDnewComponentTag.CN-PreProd:
- name: CD_newComponentTag
- tag: newComponentTag
CDnewComponentTag.CN-Prod:
- name: CD_newComponentTag
- tag: newComponentTag
CDnewComponentTag.EMEA-PreProd:
- name: CD_newComponentTag
- tag: newComponentTag
CDnewComponentTag.EMEA-Prod:
- name: CD_newComponentTag
- tag: newComponentTag
CDnewComponentTag.NA-PreProd:
- name: CD_newComponentTag
- tag: newComponentTag
CDnewComponentTag.NA-Prod:
- name: CD_newComponentTag
CDnewComponentTag:
- name: CD_managementZone
- tag: newComponentTag

View File

@ -2,58 +2,59 @@
## Configure Notification System
### MS Teams - Default
1. Open *notification.yaml* under your application configuration folder. You will see that all notification systems are via MS Teams by default with an
https://empty webhook (not configured).
2. Let's suppose you want to start receiving alerts from Dynatrace via MS Teams just for your *EMEA PROD*. Create an incoming webhook in MS Teams
Follow [this](https://www.dynatrace.com/support/help/shortlink/set-up-msteams-integration#configuration-in-microsoft-teams) link
3. Add the incoming webhook to this line:
*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: <here>
- webhook: <Add webhook here>
- skipDeployment: "false"
```
4. Save and commit changes:
```
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>.<env>-<stage>:`
`<app_name>-<stage>.<dynatrace-env>-<stage>:`
### Email
In the following example, the team intends to use email instead of the default one (MS Teams) for the EMEA PROD notification system. For that, the following changes have to be done:
1. Keep the MS Teams integration disabled, with the https://empty webhook
*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

@ -4,67 +4,73 @@ config:
- CDnewComponentTag-INT: msTeams.json
#Prod notification system for EMEA/NA/CN
#Dry-run needed for all hubs
CDnewComponentTag-PROD:
- name: CD_newComponentTag 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_newComponentTag PROD
- name: CD_managementZone PROD
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-PROD.id
- webhook: https://empty
- skipDeployment: "false"
CDnewComponentTag-PROD.NA-Prod:
- name: CD_newComponentTag PROD
- name: CD_managementZone PROD
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-PROD.id
- webhook: https://empty
- skipDeployment: "false"
CDnewComponentTag-PROD.CN-Prod:
- name: CD_newComponentTag PROD
- name: CD_managementZone PROD
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-PROD.id
- webhook: https://empty
- skipDeployment: "false"
#E2E notification system for EMEA/NA/CN
#Dry-run needed for all hubs
CDnewComponentTag-E2E:
- name: CD_newComponentTag E2E
- name: CD_managementZone E2E
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-E2E.id
- webhook: https://empty
- skipDeployment: "true"
#Configuration
CDnewComponentTag-E2E.EMEA-Prod:
- name: CD_newComponentTag E2E
- name: CD_managementZone E2E
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-E2E.id
- webhook: https://empty
- skipDeployment: "false"
CDnewComponentTag-E2E.NA-Prod:
- name: CD_newComponentTag E2E
- name: CD_managementZone E2E
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-E2E.id
- webhook: https://empty
- skipDeployment: "false"
CDnewComponentTag-E2E.CN-Prod:
- name: CD_newComponentTag E2E
- name: CD_managementZone E2E
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-E2E.id
- webhook: https://empty
- skipDeployment: "false"
#INT notification system for EMEA/NA/CN
#Dry-run needed for all hubs
CDnewComponentTag-INT:
- name: CD_newComponentTag 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_newComponentTag INT
- name: CD_managementZone INT
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-INT.id
- webhook: https://empty
- skipDeployment: "false"
CDnewComponentTag-INT.NA-PreProd:
- name: CD_newComponentTag INT
- name: CD_managementZone INT
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-INT.id
- webhook: https://empty
- skipDeployment: "false"
CDnewComponentTag-INT.CN-PreProd:
- name: CD_newComponentTag INT
- name: CD_managementZone INT
- alertingProfile: CD_managementZone/alerting-profile/CDnewComponentTag-INT.id
- webhook: https://empty
- skipDeployment: "false"

View File

@ -1,13 +1,12 @@
# Synthetic Configuration
If you're required to calculate the KPI for Availability, a synthetic must be configured.
To calculate the Availability KPI, a synthetic must be configured.
1. Modify the synthetic-monitor.yaml file, providing the endpoint that will be tested, and location where the synthetic will run
2. Change the skipDeployment to false
1. Modify the synthetic-monitor.yaml file, providing the endpoint that will be tested, and location where the synthetic will run.
2. Change the skipDeployment to 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>`
```
git add <changes>
git commit -m "<app_name> configuration changes"
git push -u origin <branch>
```

View File

@ -2,7 +2,7 @@ config:
- newComponentTag: default.json
newComponentTag:
- name: newComponentTag - <endpoint>
- name: CD_managementZone - <endpoint>
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
- endpoint: <endpoint>