diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/alerting-profile/alerting-profile.yaml b/BMW-Dynatrace-config/CD_connected-oauth-service/alerting-profile/alerting-profile.yaml index 84055cf4..97d6140c 100644 --- a/BMW-Dynatrace-config/CD_connected-oauth-service/alerting-profile/alerting-profile.yaml +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/alerting-profile/alerting-profile.yaml @@ -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" \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/alerting-profile/connected-oauth-service.json b/BMW-Dynatrace-config/CD_connected-oauth-service/alerting-profile/default.json similarity index 66% rename from BMW-Dynatrace-config/CD_connected-oauth-service/alerting-profile/connected-oauth-service.json rename to BMW-Dynatrace-config/CD_connected-oauth-service/alerting-profile/default.json index d10ad44a..681a4c64 100644 --- a/BMW-Dynatrace-config/CD_connected-oauth-service/alerting-profile/connected-oauth-service.json +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/alerting-profile/default.json @@ -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}}" } ] } diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/calculated-metrics-service/README.md b/BMW-Dynatrace-config/CD_connected-oauth-service/calculated-metrics-service/README.md new file mode 100644 index 00000000..0bf8efbc --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/calculated-metrics-service/README.md @@ -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_) + +The OPAPM team will proceed creating the metric and updating your configuration in monaco. \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/custom-service-java/README.md b/BMW-Dynatrace-config/CD_connected-oauth-service/custom-service-java/README.md new file mode 100644 index 00000000..d41c4c77 --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/custom-service-java/README.md @@ -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_/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 ` + `git commit -m " configuration changes"` + `git push -u origin ` +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 \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/custom-service-java/custom-service-java.yaml b/BMW-Dynatrace-config/CD_connected-oauth-service/custom-service-java/custom-service-java.yaml new file mode 100644 index 00000000..25f8a028 --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/custom-service-java/custom-service-java.yaml @@ -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" \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/custom-service-java/template-1-1.json b/BMW-Dynatrace-config/CD_connected-oauth-service/custom-service-java/template-1-1.json new file mode 100644 index 00000000..b3003515 --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/custom-service-java/template-1-1.json @@ -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}}" + } + ] + } + ] +} \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/dashboard/README.md b/BMW-Dynatrace-config/CD_connected-oauth-service/dashboard/README.md new file mode 100644 index 00000000..dffcdc8a --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/dashboard/README.md @@ -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 + git commit -m " configuration changes" + git push -u origin + ``` \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/dashboard/dashboard.yaml b/BMW-Dynatrace-config/CD_connected-oauth-service/dashboard/dashboard.yaml new file mode 100644 index 00000000..495a68a2 --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/dashboard/dashboard.yaml @@ -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" \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/dashboard/defaultINTTEST.json b/BMW-Dynatrace-config/CD_connected-oauth-service/dashboard/defaultINTTEST.json new file mode 100644 index 00000000..e08e9260 --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/dashboard/defaultINTTEST.json @@ -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 + } + ] +} \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/dashboard/defaultPRODE2E.json b/BMW-Dynatrace-config/CD_connected-oauth-service/dashboard/defaultPRODE2E.json new file mode 100644 index 00000000..3bc85568 --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/dashboard/defaultPRODE2E.json @@ -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 + } + ] +} \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/management-zone/README.md b/BMW-Dynatrace-config/CD_connected-oauth-service/management-zone/README.md new file mode 100644 index 00000000..3244b3e6 --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/management-zone/README.md @@ -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_/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 + git commit -m " configuration changes" + git push -u origin + ``` +Note: you can use the same logic to exclude (or include) any other entity to your Management Zone. diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/management-zone/CDconnected-oauth-service.json b/BMW-Dynatrace-config/CD_connected-oauth-service/management-zone/default.json similarity index 60% rename from BMW-Dynatrace-config/CD_connected-oauth-service/management-zone/CDconnected-oauth-service.json rename to BMW-Dynatrace-config/CD_connected-oauth-service/management-zone/default.json index b2a9367b..e827aaff 100644 --- a/BMW-Dynatrace-config/CD_connected-oauth-service/management-zone/CDconnected-oauth-service.json +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/management-zone/default.json @@ -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" } ] } \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/management-zone/management-zone.yaml b/BMW-Dynatrace-config/CD_connected-oauth-service/management-zone/management-zone.yaml index de479e53..744efacb 100644 --- a/BMW-Dynatrace-config/CD_connected-oauth-service/management-zone/management-zone.yaml +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/management-zone/management-zone.yaml @@ -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 diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/notification/README.md b/BMW-Dynatrace-config/CD_connected-oauth-service/notification/README.md new file mode 100644 index 00000000..e1a6af84 --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/notification/README.md @@ -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 `-PROD.EMEA-Prod`: + ``` + -PROD.EMEA-Prod: + - name: CD_ PROD + - alertingProfile: CD_/alerting-profile/CD-PROD.id + - webhook: + - skipDeployment: "false" + ``` +4. Save and commit changes: + ``` + git add + git commit -m " configuration changes" + git push -u origin + ``` +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: +`-.-:` + +### Email + +*The team prefers to be alerted via email, not MS Teams* + +1. Keep the MS Teams integration disabled, with the https://empty webhook: + ``` + -PROD.EMEA-Prod: + - name: CD_ PROD + - alertingProfile: CD_/alerting-profile/CD-PROD.id + - webhook: https://empty + - skipDeployment: "false" + ``` +2. Create a new configuration template under config, using the email template: + ``` + config: + - CDemail: email.json + ``` +3. Describe the configuration below, using the following template: + ``` + CDemail.EMEA-Prod: + - name: CD_ PROD + - alertingProfile: CD_/alerting-profile/CD-PROD.id + - receivers: distributionEmailexample@bmw.de` + ``` +4. Save and commit changes: + ``` + git add + git commit -m " configuration changes" + git push -u origin + ``` + +### ITSM +Coming soon! \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/notification/email.json b/BMW-Dynatrace-config/CD_connected-oauth-service/notification/email.json new file mode 100644 index 00000000..486642a7 --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/notification/email.json @@ -0,0 +1,13 @@ +{ + "active": true, + "alertingProfile": "{{.alertingProfile}}", + "bccReceivers": [], + "body": "{ProblemDetailsHTML}", + "ccReceivers": [], + "name": "{{.name}}", + "receivers": [ + "{{.receivers}}" + ], + "subject": "{State} Problem {ProblemID}: {ImpactedEntity}", + "type": "EMAIL" +} \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/notification/msTeams.json b/BMW-Dynatrace-config/CD_connected-oauth-service/notification/msTeams.json new file mode 100644 index 00000000..33e92cf6 --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/notification/msTeams.json @@ -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}}" +} \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/notification/notification.yaml b/BMW-Dynatrace-config/CD_connected-oauth-service/notification/notification.yaml new file mode 100644 index 00000000..31e779af --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/notification/notification.yaml @@ -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" \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/synthetic-monitor/README.md b/BMW-Dynatrace-config/CD_connected-oauth-service/synthetic-monitor/README.md new file mode 100644 index 00000000..58273541 --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/synthetic-monitor/README.md @@ -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 + git commit -m " configuration changes" + git push -u origin + ``` \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/synthetic-monitor/default.json b/BMW-Dynatrace-config/CD_connected-oauth-service/synthetic-monitor/default.json new file mode 100644 index 00000000..7e91d5ba --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/synthetic-monitor/default.json @@ -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" +} \ No newline at end of file diff --git a/BMW-Dynatrace-config/CD_connected-oauth-service/synthetic-monitor/synthetic-monitor.yaml b/BMW-Dynatrace-config/CD_connected-oauth-service/synthetic-monitor/synthetic-monitor.yaml new file mode 100644 index 00000000..35fe7c99 --- /dev/null +++ b/BMW-Dynatrace-config/CD_connected-oauth-service/synthetic-monitor/synthetic-monitor.yaml @@ -0,0 +1,10 @@ +config: +- connected-oauth-service: default.json + +connected-oauth-service: +- name: CD_connected-oauth-service - +- mzName: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.name +- mzId: CD_connected-oauth-service/management-zone/CDconnected-oauth-service.id +- endpoint: +- location: +- skipDeployment: "true" \ No newline at end of file diff --git a/README - Runtime.md b/README - Runtime.md index 58fef0a7..f4928877 100644 --- a/README - Runtime.md +++ b/README - Runtime.md @@ -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) diff --git a/onboarding/CD_managementZone/alerting-profile/alerting-profile.yaml b/onboarding/CD_managementZone/alerting-profile/alerting-profile.yaml index c8700d41..affdfe5d 100644 --- a/onboarding/CD_managementZone/alerting-profile/alerting-profile.yaml +++ b/onboarding/CD_managementZone/alerting-profile/alerting-profile.yaml @@ -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 diff --git a/onboarding/CD_managementZone/calculated-metrics-service/README.md b/onboarding/CD_managementZone/calculated-metrics-service/README.md index ef5889a9..0bf8efbc 100644 --- a/onboarding/CD_managementZone/calculated-metrics-service/README.md +++ b/onboarding/CD_managementZone/calculated-metrics-service/README.md @@ -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_) + - View created in the Dynatrace UI + - Your Dynatrace configuration folder (i.e. CD_) The OPAPM team will proceed creating the metric and updating your configuration in monaco. \ No newline at end of file diff --git a/onboarding/CD_managementZone/calculated-metrics-service/calculated-metrics-service.yaml b/onboarding/CD_managementZone/calculated-metrics-service/calculated-metrics-service.yaml deleted file mode 100644 index b5172fe6..00000000 --- a/onboarding/CD_managementZone/calculated-metrics-service/calculated-metrics-service.yaml +++ /dev/null @@ -1 +0,0 @@ -config: \ No newline at end of file diff --git a/onboarding/CD_managementZone/custom-service-java/README.md b/onboarding/CD_managementZone/custom-service-java/README.md index 1715a46a..d41c4c77 100644 --- a/onboarding/CD_managementZone/custom-service-java/README.md +++ b/onboarding/CD_managementZone/custom-service-java/README.md @@ -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_/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 ` `git commit -m " configuration changes"` diff --git a/onboarding/CD_managementZone/dashboard/README.md b/onboarding/CD_managementZone/dashboard/README.md index b4975a87..dffcdc8a 100644 --- a/onboarding/CD_managementZone/dashboard/README.md +++ b/onboarding/CD_managementZone/dashboard/README.md @@ -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 \ No newline at end of file +- 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 + git commit -m " configuration changes" + git push -u origin + ``` \ No newline at end of file diff --git a/onboarding/CD_managementZone/dashboard/dashboard.yaml b/onboarding/CD_managementZone/dashboard/dashboard.yaml index 19f07dd3..08033f18 100644 --- a/onboarding/CD_managementZone/dashboard/dashboard.yaml +++ b/onboarding/CD_managementZone/dashboard/dashboard.yaml @@ -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 diff --git a/onboarding/CD_managementZone/management-zone/README.md b/onboarding/CD_managementZone/management-zone/README.md index 7a8798dc..3244b3e6 100644 --- a/onboarding/CD_managementZone/management-zone/README.md +++ b/onboarding/CD_managementZone/management-zone/README.md @@ -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_/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 ` - - `git commit -m " configuration changes"` - - `git push -u origin ` \ No newline at end of file + ``` + git add + git commit -m " configuration changes" + git push -u origin + ``` +Note: you can use the same logic to exclude (or include) any other entity to your Management Zone. diff --git a/onboarding/CD_managementZone/management-zone/management-zone.yaml b/onboarding/CD_managementZone/management-zone/management-zone.yaml index 77458776..635e9e71 100644 --- a/onboarding/CD_managementZone/management-zone/management-zone.yaml +++ b/onboarding/CD_managementZone/management-zone/management-zone.yaml @@ -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 diff --git a/onboarding/CD_managementZone/notification/README.md b/onboarding/CD_managementZone/notification/README.md index e342a4fb..e1a6af84 100644 --- a/onboarding/CD_managementZone/notification/README.md +++ b/onboarding/CD_managementZone/notification/README.md @@ -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 `-PROD.EMEA-Prod`: ``` -PROD.EMEA-Prod: - name: CD_ PROD - alertingProfile: CD_/alerting-profile/CD-PROD.id - - webhook: + - webhook: - skipDeployment: "false" - ``` - -4. Save and commit changes: - + ``` +4. Save and commit changes: ``` git add git commit -m " configuration changes" git push -u origin ``` - 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: -`-.-:` +`-.-:` ### 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: ``` -PROD.EMEA-Prod: - name: CD_ PROD - alertingProfile: CD_/alerting-profile/CD-PROD.id - webhook: https://empty - skipDeployment: "false" - ``` - + ``` 2. Create a new configuration template under config, using the email template: - ``` config: - CDemail: email.json ``` - 3. Describe the configuration below, using the following template: - ``` CDemail.EMEA-Prod: - name: CD_ PROD - alertingProfile: CD_/alerting-profile/CD-PROD.id - receivers: distributionEmailexample@bmw.de` ``` - +4. Save and commit changes: + ``` + git add + git commit -m " configuration changes" + git push -u origin + ``` + ### ITSM Coming soon! \ No newline at end of file diff --git a/onboarding/CD_managementZone/notification/notification.yaml b/onboarding/CD_managementZone/notification/notification.yaml index efbaddbc..3e6b24a3 100644 --- a/onboarding/CD_managementZone/notification/notification.yaml +++ b/onboarding/CD_managementZone/notification/notification.yaml @@ -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" \ No newline at end of file diff --git a/onboarding/CD_managementZone/synthetic-monitor/README.md b/onboarding/CD_managementZone/synthetic-monitor/README.md index fbf2529a..58273541 100644 --- a/onboarding/CD_managementZone/synthetic-monitor/README.md +++ b/onboarding/CD_managementZone/synthetic-monitor/README.md @@ -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 ` - - `git commit -m " configuration changes"` - - `git push -u origin ` \ No newline at end of file + ``` + git add + git commit -m " configuration changes" + git push -u origin + ``` \ No newline at end of file diff --git a/onboarding/CD_managementZone/synthetic-monitor/synthetic-monitor.yaml b/onboarding/CD_managementZone/synthetic-monitor/synthetic-monitor.yaml index 997ca3eb..ab749d1a 100644 --- a/onboarding/CD_managementZone/synthetic-monitor/synthetic-monitor.yaml +++ b/onboarding/CD_managementZone/synthetic-monitor/synthetic-monitor.yaml @@ -2,7 +2,7 @@ config: - newComponentTag: default.json newComponentTag: -- name: newComponentTag - +- name: CD_managementZone - - mzName: CD_managementZone/management-zone/CDnewComponentTag.name - mzId: CD_managementZone/management-zone/CDnewComponentTag.id - endpoint: