diff --git a/bin/monaco b/bin/monaco new file mode 100644 index 00000000..f8663fd2 Binary files /dev/null and b/bin/monaco differ diff --git a/onboard.sh b/onboard.sh new file mode 100644 index 00000000..b4b6f89c --- /dev/null +++ b/onboard.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +cp -R onboarding/CD_newComponentTag/ BMW-Dynatrace-config/ +mv BMW-Dynatrace-config/CD_newComponentTag BMW-Dynatrace-config/$1 + +mv BMW-Dynatrace-config/$1/alerting-profile/newComponentTag.json BMW-Dynatrace-config/$1/alerting-profile/$2.json +mv BMW-Dynatrace-config/$1/management-zone/newComponentTag.json BMW-Dynatrace-config/$1/management-zone/$2.json +mv BMW-Dynatrace-config/$1/dashboard/newComponentTag.json BMW-Dynatrace-config/$1/dashboard/$2.json + +sed -i "s/CD_newComponentTag/$1/g" BMW-Dynatrace-config/$1/alerting-profile/alerting-profile.yaml +sed -i "s/CD_newComponentTag/$1/g" BMW-Dynatrace-config/$1/management-zone/management-zone.yaml +sed -i "s/CD_newComponentTag/$1/g" BMW-Dynatrace-config/$1/dashboard/dashboard.yaml + +sed -i "s/newComponentTag/$2/g" BMW-Dynatrace-config/$1/alerting-profile/alerting-profile.yaml +sed -i "s/newComponentTag/$2/g" BMW-Dynatrace-config/$1/management-zone/management-zone.yaml +sed -i "s/newComponentTag/$2/g" BMW-Dynatrace-config/$1/dashboard/dashboard.yaml diff --git a/onboarding/CD_newComponentTag/alerting-profile/alerting-profile.yaml b/onboarding/CD_newComponentTag/alerting-profile/alerting-profile.yaml new file mode 100644 index 00000000..fbab5d09 --- /dev/null +++ b/onboarding/CD_newComponentTag/alerting-profile/alerting-profile.yaml @@ -0,0 +1,82 @@ +config: +- CDnewComponentTag-PROD: newComponentTag.json +- CDnewComponentTag-E2E: newComponentTag.json +- CDnewComponentTag-INT: newComponentTag.json + +#Prod dashboards for EMEA/NA/CN +CDnewComponentTag-PROD: +- name: CD_newComponentTag PROD +- tag: newComponentTag +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: PROD +- skipDeployment: "true" +CDnewComponentTag-PROD.EMEA-Prod: +- name: CD_newComponentTag PROD +- tag: newComponentTag +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: PROD +- skipDeployment: "false" +CDnewComponentTag-PROD.NA-Prod: +- name: CD_newComponentTag PROD +- tag: newComponentTag +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: PROD +- skipDeployment: "false" +CDnewComponentTag-PROD.CN-Prod: +- name: CD_newComponentTag PROD +- tag: newComponentTag +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: PROD +- skipDeployment: "false" + +#E2E dashboards for EMEA/NA/CN +CDnewComponentTag-E2E: +- name: CD_newComponentTag E2E +- tag: newComponentTag +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: E2E +- skipDeployment: "true" +CDnewComponentTag-E2E.EMEA-Prod: +- name: CD_newComponentTag E2E +- tag: newComponentTag +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: E2E +- skipDeployment: "false" +CDnewComponentTag-E2E.NA-Prod: +- name: CD_newComponentTag E2E +- tag: newComponentTag +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: E2E +- skipDeployment: "false" +CDnewComponentTag-E2E.CN-Prod: +- name: CD_newComponentTag E2E +- tag: newComponentTag +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: E2E +- skipDeployment: "false" + +#INT dashboards for EMEA/NA/CN +CDnewComponentTag-INT: +- name: CD_newComponentTag INT +- tag: newComponentTag +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: INT +- skipDeployment: "true" +CDnewComponentTag-INT.EMEA-PreProd: +- name: CD_newComponentTag INT +- tag: newComponentTag +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: INT +- skipDeployment: "false" +CDnewComponentTag-INT.NA-PreProd: +- name: CD_newComponentTag INT +- tag: newComponentTag +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: INT +- skipDeployment: "false" +CDnewComponentTag-INT.CN-PreProd: +- name: CD_newComponentTag INT +- tag: newComponentTag +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: INT +- skipDeployment: "false" \ No newline at end of file diff --git a/onboarding/CD_newComponentTag/alerting-profile/newComponentTag.json b/onboarding/CD_newComponentTag/alerting-profile/newComponentTag.json new file mode 100644 index 00000000..716b4176 --- /dev/null +++ b/onboarding/CD_newComponentTag/alerting-profile/newComponentTag.json @@ -0,0 +1,122 @@ +{ + "displayName": "{{.name}}", + "eventTypeFilters": [], + "managementZoneId": "{{.mzId}}", + "mzId": "{{.mzId}}", + "rules": [ + { + "delayInMinutes": 0, + "severityLevel": "AVAILABILITY", + "tagFilter": { + "includeMode": "INCLUDE_ALL", + "tagFilters": [ + { + "context": "CONTEXTLESS", + "key": "Component", + "value": "{{.tag}}" + }, + { + "context": "CONTEXTLESS", + "key": "Environment", + "value": "{{.env}}" + } + ] + } + }, + { + "delayInMinutes": 10, + "severityLevel": "ERROR", + "tagFilter": { + "includeMode": "INCLUDE_ALL", + "tagFilters": [ + { + "context": "CONTEXTLESS", + "key": "Component", + "value": "{{.tag}}" + }, + { + "context": "CONTEXTLESS", + "key": "Environment", + "value": "{{.env}}" + } + ] + } + }, + { + "delayInMinutes": 30, + "severityLevel": "PERFORMANCE", + "tagFilter": { + "includeMode": "INCLUDE_ALL", + "tagFilters": [ + { + "context": "CONTEXTLESS", + "key": "Component", + "value": "{{.tag}}" + }, + { + "context": "CONTEXTLESS", + "key": "Environment", + "value": "{{.env}}" + } + ] + } + }, + { + "delayInMinutes": 30, + "severityLevel": "RESOURCE_CONTENTION", + "tagFilter": { + "includeMode": "INCLUDE_ALL", + "tagFilters": [ + { + "context": "CONTEXTLESS", + "key": "Component", + "value": "{{.tag}}" + }, + { + "context": "CONTEXTLESS", + "key": "Environment", + "value": "{{.env}}" + } + ] + } + }, + { + "delayInMinutes": 10, + "severityLevel": "CUSTOM_ALERT", + "tagFilter": { + "includeMode": "INCLUDE_ALL", + "tagFilters": [ + { + "context": "CONTEXTLESS", + "key": "Component", + "value": "{{.tag}}" + }, + { + "context": "CONTEXTLESS", + "key": "Environment", + "value": "{{.env}}" + } + ] + } + }, + { + "delayInMinutes": 0, + "severityLevel": "MONITORING_UNAVAILABLE", + "tagFilter": { + "includeMode": "INCLUDE_ALL", + "tagFilters": [ + { + "context": "CONTEXTLESS", + "key": "Component", + "value": "{{.tag}}" + }, + { + "context": "CONTEXTLESS", + "key": "Environment", + "value": "{{.env}}" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/onboarding/CD_newComponentTag/dashboard/dashboard.yaml b/onboarding/CD_newComponentTag/dashboard/dashboard.yaml new file mode 100644 index 00000000..2c144c26 --- /dev/null +++ b/onboarding/CD_newComponentTag/dashboard/dashboard.yaml @@ -0,0 +1,82 @@ +config: +- CDnewComponentTag-PROD: newComponentTag.json +- CDnewComponentTag-E2E: newComponentTag.json +- CDnewComponentTag-INT: newComponentTag.json + +#Prod dashboards for EMEA/NA/CN +CDnewComponentTag-PROD: +- name: CD_newComponentTag PROD +- mzName: CD_newComponentTag/management-zone/CDnewComponentTag.name +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: PROD +- skipDeployment: "true" +CDnewComponentTag-PROD.EMEA-Prod: +- name: CD_newComponentTag PROD +- mzName: CD_newComponentTag/management-zone/CDnewComponentTag.name +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: PROD +- skipDeployment: "false" +CDnewComponentTag-PROD.NA-Prod: +- name: CD_newComponentTag PROD +- mzName: CD_newComponentTag/management-zone/CDnewComponentTag.name +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: PROD +- skipDeployment: "false" +CDnewComponentTag-PROD.CN-Prod: +- name: CD_newComponentTag PROD +- mzName: CD_newComponentTag/management-zone/CDnewComponentTag.name +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: PROD +- skipDeployment: "false" + +#E2E dashboards for EMEA/NA/CN +CDnewComponentTag-E2E: +- name: CD_newComponentTag E2E +- mzName: CD_newComponentTag/management-zone/CDnewComponentTag.name +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: E2E +- skipDeployment: "true" +CDnewComponentTag-E2E.EMEA-Prod: +- name: CD_newComponentTag E2E +- mzName: CD_newComponentTag/management-zone/CDnewComponentTag.name +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: E2E +- skipDeployment: "false" +CDnewComponentTag-E2E.NA-Prod: +- name: CD_newComponentTag E2E +- mzName: CD_newComponentTag/management-zone/CDnewComponentTag.name +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: E2E +- skipDeployment: "false" +CDnewComponentTag-E2E.CN-Prod: +- name: CD_newComponentTag E2E +- mzName: CD_newComponentTag/management-zone/CDnewComponentTag.name +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: E2E +- skipDeployment: "false" + +#INT dashboards for EMEA/NA/CN +CDnewComponentTag-INT: +- name: CD_newComponentTag INT +- mzName: CD_newComponentTag/management-zone/CDnewComponentTag.name +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: INT +- skipDeployment: "true" +CDnewComponentTag-INT.EMEA-PreProd: +- name: CD_newComponentTag INT +- mzName: CD_newComponentTag/management-zone/CDnewComponentTag.name +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: INT +- skipDeployment: "false" +CDnewComponentTag-INT.NA-PreProd: +- name: CD_newComponentTag INT +- mzName: CD_newComponentTag/management-zone/CDnewComponentTag.name +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: INT +- skipDeployment: "false" +CDnewComponentTag-INT.CN-PreProd: +- name: CD_newComponentTag INT +- mzName: CD_newComponentTag/management-zone/CDnewComponentTag.name +- mzId: CD_newComponentTag/management-zone/CDnewComponentTag.id +- env: INT +- skipDeployment: "false" \ No newline at end of file diff --git a/onboarding/CD_newComponentTag/dashboard/newComponentTag.json b/onboarding/CD_newComponentTag/dashboard/newComponentTag.json new file mode 100644 index 00000000..936a4110 --- /dev/null +++ b/onboarding/CD_newComponentTag/dashboard/newComponentTag.json @@ -0,0 +1,285 @@ + { + "metadata": { + "configurationVersions": [ + 3 + ], + "clusterVersion": "1.212.88.20210305-151445" + }, + "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": 38, + "left": 38, + "width": 1216, + "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:{{.env}}" + ] + } + } + } + }, + { + "name": "Custom chart", + "tileType": "CUSTOM_CHARTING", + "configured": true, + "bounds": { + "top": 342, + "left": 38, + "width": 304, + "height": 304 + }, + "tileFilter": {}, + "filterConfig": { + "type": "MIXED", + "customName": "Failure rate (HTTP 4xx/5xx errors)", + "defaultName": "Custom chart", + "chartConfig": { + "legendShown": true, + "type": "TIMESERIES", + "series": [ + { + "metric": "builtin:service.errors.fourxx.rate", + "aggregation": "AVG", + "type": "BAR", + "entityType": "SERVICE", + "dimensions": [], + "sortAscending": false, + "sortColumn": false, + "aggregationRate": "TOTAL" + }, + { + "metric": "builtin:service.errors.fivexx.rate", + "aggregation": "AVG", + "type": "BAR", + "entityType": "SERVICE", + "dimensions": [], + "sortAscending": false, + "sortColumn": true, + "aggregationRate": "TOTAL" + } + ], + "resultMetadata": { + "nullbuiltin:service.errors.fivexx.rate|AVG|TOTAL|BAR|SERVICE": { + "lastModified": 1595276148986, + "customColor": "#ef651f" + } + } + }, + "filtersPerEntityType": { + "SERVICE": { + "AUTO_TAGS": [ + "Environment:{{.env}}" + ] + } + } + } + }, + { + "name": "Markdown", + "tileType": "MARKDOWN", + "configured": true, + "bounds": { + "top": 684, + "left": 38, + "width": 304, + "height": 114 + }, + "tileFilter": {}, + "markdown": "[Top Web Requests](https://vse69518.sprint.dynatracelabs.com/#topglobalwebrequests;gtf=l_2_HOURS;gf=all)\n\n[Top database statements](https://vse69518.sprint.dynatracelabs.com/#topdbstatements;gtf=l_2_HOURS;gf=all)\n\n[Overview of captured exceptions](https://vse69518.sprint.dynatracelabs.com/#exceptionsoverview;gtf=l_2_HOURS;gf=all)" + }, + { + "name": "Problems", + "tileType": "OPEN_PROBLEMS", + "configured": true, + "bounds": { + "top": 646, + "left": 1102, + "width": 152, + "height": 152 + }, + "tileFilter": {} + }, + { + "name": "Markdown", + "tileType": "MARKDOWN", + "configured": true, + "bounds": { + "top": 38, + "left": 1254, + "width": 152, + "height": 304 + }, + "tileFilter": {}, + "markdown": "Response time (line, left axis), number of requests (blue bars, right axis) and number of errors (red bars, right axis)." + }, + { + "name": "", + "tileType": "SERVICES", + "configured": true, + "bounds": { + "top": 342, + "left": 342, + "width": 304, + "height": 304 + }, + "tileFilter": {}, + "filterConfig": { + "type": "SERVICE", + "customName": "Services", + "defaultName": "Services", + "chartConfig": { + "legendShown": true, + "type": "TIMESERIES", + "series": [], + "resultMetadata": {} + }, + "filtersPerEntityType": { + "SERVICE": { + "AUTO_TAGS": [ + "Environment:{{.env}}" + ] + } + } + }, + "chartVisible": true + }, + { + "name": "", + "tileType": "HOSTS", + "configured": true, + "bounds": { + "top": 342, + "left": 646, + "width": 304, + "height": 304 + }, + "tileFilter": {}, + "filterConfig": { + "type": "HOST", + "customName": "Hosts", + "defaultName": "Hosts", + "chartConfig": { + "legendShown": true, + "type": "TIMESERIES", + "series": [], + "resultMetadata": {} + }, + "filtersPerEntityType": { + "HOST": { + "AUTO_TAGS": [ + "Environment:{{.env}}" + ] + } + } + }, + "chartVisible": true + }, + { + "name": "", + "tileType": "DATABASES_OVERVIEW", + "configured": true, + "bounds": { + "top": 342, + "left": 950, + "width": 304, + "height": 304 + }, + "tileFilter": {}, + "filterConfig": { + "type": "DATABASE", + "customName": "Databases", + "defaultName": "Databases", + "chartConfig": { + "legendShown": true, + "type": "TIMESERIES", + "series": [], + "resultMetadata": {} + }, + "filtersPerEntityType": { + "DATABASE": { + "AUTO_TAGS": [ + "Environment:{{.env}}" + ] + } + } + }, + "chartVisible": true + } + ] +} \ No newline at end of file diff --git a/onboarding/CD_newComponentTag/management-zone/management-zone.yaml b/onboarding/CD_newComponentTag/management-zone/management-zone.yaml new file mode 100644 index 00000000..32a9d746 --- /dev/null +++ b/onboarding/CD_newComponentTag/management-zone/management-zone.yaml @@ -0,0 +1,20 @@ +config: +- CDnewComponentTag: newComponentTag.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 +- tag: newComponentTag diff --git a/onboarding/CD_newComponentTag/management-zone/newComponentTag.json b/onboarding/CD_newComponentTag/management-zone/newComponentTag.json new file mode 100644 index 00000000..2e82bb71 --- /dev/null +++ b/onboarding/CD_newComponentTag/management-zone/newComponentTag.json @@ -0,0 +1,112 @@ +{ + "dimensionalRules": [], + "name": "{{.name}}", + "rules": [ + { + "conditions": [ + { + "comparisonInfo": { + "negate": false, + "operator": "EQUALS", + "type": "TAG", + "value": { + "context": "CONTEXTLESS", + "key": "Component", + "value": "{{.tag}}" + } + }, + "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, + "propagationTypes": [ + "SERVICE_TO_PROCESS_GROUP_LIKE", + "SERVICE_TO_HOST_LIKE" + ], + "type": "SERVICE" + }, + { + "conditions": [ + { + "comparisonInfo": { + "negate": false, + "operator": "EQUALS", + "type": "TAG", + "value": { + "context": "CONTEXTLESS", + "key": "Component", + "value": "{{.tag}}" + } + }, + "key": { + "attribute": "PROCESS_GROUP_TAGS" + } + } + ], + "enabled": true, + "propagationTypes": [ + "PROCESS_GROUP_TO_HOST" + ], + "type": "PROCESS_GROUP" + }, + { + "conditions": [ + { + "comparisonInfo": { + "negate": false, + "operator": "EQUALS", + "type": "TAG", + "value": { + "context": "CONTEXTLESS", + "key": "Component", + "value": "{{.tag}}" + } + }, + "key": { + "attribute": "HOST_TAGS" + } + } + ], + "enabled": true, + "type": "HOST" + } + ] +} \ No newline at end of file