Dynatrace Onboarding missing lsc components
parent
9e503e38cb
commit
1906fa8d13
|
|
@ -0,0 +1,60 @@
|
|||
config:
|
||||
- CDnewComponentTag-PROD: default.json
|
||||
- CDnewComponentTag-INT: default.json
|
||||
|
||||
#Prod alerting profiles for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-PROD:
|
||||
- name: CD_lsc-hr PROD
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: PROD
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-PROD.EMEA-Prod:
|
||||
- name: CD_lsc-hr PROD
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.NA-Prod:
|
||||
- name: CD_lsc-hr PROD
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.CN-Prod:
|
||||
- name: CD_lsc-hr PROD
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
|
||||
|
||||
#INT alerting profiles for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-INT:
|
||||
- name: CD_lsc-hr INT
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-INT.EMEA-PreProd:
|
||||
- name: CD_lsc-hr INT
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.NA-PreProd:
|
||||
- name: CD_lsc-hr INT
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.CN-PreProd:
|
||||
- name: CD_lsc-hr INT
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "false"
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
{
|
||||
"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}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
## Custom metrics - Multidimensional Analysis
|
||||
|
||||
Under the Multidimensional Analysis you're able to save a view but not to create a metric. Instead, you can do it in here:
|
||||
|
||||
1. Create the metric within the Dynatrace UI using the Mutidimensional Analysis view.
|
||||
2. Save the view and create a ticket for the OPAPM team [here](link). Please provide the following information:
|
||||
- View created in the Dynatrace UI
|
||||
- Your Dynatrace configuration folder (i.e. CD_<app_name>)
|
||||
|
||||
The OPAPM team will proceed creating the metric and updating your configuration in monaco.
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
|
||||
## What is a custom service in Dynatrace?
|
||||
- *If your application's services aren't built on standard technologies, they may not be recognized out-of-the box.*
|
||||
- *You can monitor these technologies, but you'll need to define them as custom services with specific service entry points.*
|
||||
- *Another use case for custom services are microservices that are used by a larger application that aren't exposed via communication technologies.*
|
||||
|
||||
## How to create a custom service?
|
||||
1. Open the file *custom-service-java.yaml* under your *CD_<app_name>/custom-service-java* configuration folder.
|
||||
2. Use customService1 as a template. Copy and paste it below, changing the skipDeployment to "false".
|
||||
3. Fill up all the remaining inputs with the details of the endpoint you're interested to monitor. (className, methodName, etc...)
|
||||
4. Commit and pull request to merge the branch to the master:
|
||||
`git add <changes>`
|
||||
`git commit -m "<app_name> configuration changes"`
|
||||
`git push -u origin <branch>`
|
||||
5. Restart the application where the custom service has been created.
|
||||
6. Check if the custom service appears in Dynatrace.
|
||||
|
||||
Notes:
|
||||
- As this configuration needs a restart, it's better to create it in a non-Prod application.
|
||||
- The custom service will appear in Dynatrace iff there's traffic going through.
|
||||
|
||||
## What if i have multiple classes?
|
||||
1. Clone *template-1-1.json* to a new one called *template-2-1.json*.
|
||||
2. Edit *template-2-1.json* adding a 2nd rule separated with a coma.
|
||||
3. For the 2nd rule, change the name of the {{.values}} to {{.values2}} i.e.
|
||||
4. The template is ready to be used in the YAML file.
|
||||
|
||||
## What if i have multiple methods?
|
||||
1. Same process as before, just call it template-1-2.json
|
||||
2. In this way you can extend to a custom service with n classes and k methods: template-n-k.json
|
||||
|
|
@ -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"
|
||||
|
|
@ -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}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
## Update dashboard configuration
|
||||
|
||||
- Configuration changes (like in dashboards, alerting profiles) must be done via a pull request. Changing a dashboard just in the environment, will cause that it will be overwritten by Monaco.
|
||||
- How to generate changes in your dashboards?
|
||||
1. Modify the dashboard within the Dynatrace UI with the intended changes.
|
||||
2. Copy the JSON of the dashboards. (Can be found under the dashboard settings)
|
||||
3. Paste the copied JSON under the Monaco JSON, overwrite it.
|
||||
4. Commit and pull request to merge the branch to the master:
|
||||
```
|
||||
git add <changes>
|
||||
git commit -m "<app_name> configuration changes"
|
||||
git push -u origin <branch>
|
||||
```
|
||||
|
|
@ -0,0 +1,127 @@
|
|||
config:
|
||||
- CDnewComponentTag-PROD: default.json
|
||||
- CDnewComponentTag-E2E: default.json
|
||||
- CDnewComponentTag-INT: default.json
|
||||
- CDnewComponentTag-TEST: default.json
|
||||
|
||||
#PROD dashboards for EMEA/NA/CN Prod
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-PROD:
|
||||
- name: CD_lsc-hr PROD
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: PROD
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-PROD.EMEA-Prod:
|
||||
- name: CD_lsc-hr PROD
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- tag: newComponentTag
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.NA-Prod:
|
||||
- name: CD_lsc-hr PROD
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- tag: newComponentTag
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.CN-Prod:
|
||||
- name: CD_lsc-hr PROD
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- tag: newComponentTag
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
|
||||
#E2E dashboards for EMEA/NA/CN E2E
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-E2E:
|
||||
- name: CD_lsc-hr E2E
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: E2E
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-E2E.EMEA-Prod:
|
||||
- name: CD_lsc-hr E2E
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: E2E
|
||||
- tag: newComponentTag
|
||||
- skipDeployment: "true"
|
||||
CDnewComponentTag-E2E.NA-Prod:
|
||||
- name: CD_lsc-hr E2E
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: E2E
|
||||
- tag: newComponentTag
|
||||
- skipDeployment: "true"
|
||||
CDnewComponentTag-E2E.CN-Prod:
|
||||
- name: CD_lsc-hr E2E
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: E2E
|
||||
- tag: newComponentTag
|
||||
- skipDeployment: "true"
|
||||
|
||||
#INT dashboards for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-INT:
|
||||
- name: CD_lsc-hr INT
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- tag: newComponentTag
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-INT.EMEA-PreProd:
|
||||
- name: CD_lsc-hr INT
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- tag: newComponentTag
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.NA-PreProd:
|
||||
- name: CD_lsc-hr INT
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.CN-PreProd:
|
||||
- name: CD_lsc-hr INT
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "false"
|
||||
|
||||
#TEST dashboards for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-TEST:
|
||||
- name: CD_lsc-hr TEST
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- tag: newComponentTag
|
||||
- env: TEST
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-TEST.EMEA-PreProd:
|
||||
- name: CD_lsc-hr TEST
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- tag: newComponentTag
|
||||
- env: TEST
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-TEST.NA-PreProd:
|
||||
- name: CD_lsc-hr TEST
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: TEST
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-TEST.CN-PreProd:
|
||||
- name: CD_lsc-hr TEST
|
||||
- mzName: CD_lsc-hr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-hr/management-zone/CDnewComponentTag.id
|
||||
- env: TEST
|
||||
- skipDeployment: "false"
|
||||
|
|
@ -0,0 +1,308 @@
|
|||
{
|
||||
"metadata": {
|
||||
"configurationVersions": [
|
||||
3
|
||||
],
|
||||
"clusterVersion": "1.214.107.20210407-223952"
|
||||
},
|
||||
"dashboardMetadata": {
|
||||
"name": "{{.name}}",
|
||||
"shared": true,
|
||||
"owner": "Ignacio.Goldman@partner.bmwgroup.com",
|
||||
"dashboardFilter": {
|
||||
"timeframe": "-24h to now"
|
||||
},
|
||||
"tags": [
|
||||
"{{.tag}}"
|
||||
]
|
||||
},
|
||||
"tiles": [
|
||||
{
|
||||
"name": "Custom chart",
|
||||
"tileType": "CUSTOM_CHARTING",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 228,
|
||||
"left": 38,
|
||||
"width": 1064,
|
||||
"height": 304
|
||||
},
|
||||
"tileFilter": {},
|
||||
"filterConfig": {
|
||||
"type": "MIXED",
|
||||
"customName": "Failure rate (HTTP 4xx/5xx errors)",
|
||||
"defaultName": "Custom chart",
|
||||
"chartConfig": {
|
||||
"legendShown": true,
|
||||
"type": "TIMESERIES",
|
||||
"series": [
|
||||
{
|
||||
"metric": "builtin:service.errors.fourxx.rate",
|
||||
"aggregation": "AVG",
|
||||
"type": "BAR",
|
||||
"entityType": "SERVICE",
|
||||
"dimensions": [],
|
||||
"sortAscending": false,
|
||||
"sortColumn": false,
|
||||
"aggregationRate": "TOTAL"
|
||||
},
|
||||
{
|
||||
"metric": "builtin:service.errors.fivexx.rate",
|
||||
"aggregation": "AVG",
|
||||
"type": "BAR",
|
||||
"entityType": "SERVICE",
|
||||
"dimensions": [],
|
||||
"sortAscending": false,
|
||||
"sortColumn": true,
|
||||
"aggregationRate": "TOTAL"
|
||||
}
|
||||
],
|
||||
"resultMetadata": {
|
||||
"nullbuiltin:service.errors.fivexx.rate|AVG|TOTAL|BAR|SERVICE": {
|
||||
"lastModified": 1617956393463,
|
||||
"customColor": "#ff0000"
|
||||
},
|
||||
"nullbuiltin:service.errors.fourxx.rate|AVG|TOTAL|BAR|SERVICE": {
|
||||
"lastModified": 1617956441725,
|
||||
"customColor": "#fff29a"
|
||||
}
|
||||
}
|
||||
},
|
||||
"filtersPerEntityType": {
|
||||
"SERVICE": {
|
||||
"AUTO_TAGS": [
|
||||
"Environment:{{.env}}",
|
||||
"Component:{{.tag}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Problems",
|
||||
"tileType": "OPEN_PROBLEMS",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 38,
|
||||
"left": 950,
|
||||
"width": 152,
|
||||
"height": 152
|
||||
},
|
||||
"tileFilter": {
|
||||
"managementZone": {
|
||||
"id": "{{.mzId}}",
|
||||
"name": "{{.mzName}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Overall Health",
|
||||
"tileType": "HEADER",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 0,
|
||||
"left": 38,
|
||||
"width": 1064,
|
||||
"height": 38
|
||||
},
|
||||
"tileFilter": {}
|
||||
},
|
||||
{
|
||||
"name": "Markdown",
|
||||
"tileType": "MARKDOWN",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 532,
|
||||
"left": 38,
|
||||
"width": 1064,
|
||||
"height": 38
|
||||
},
|
||||
"tileFilter": {},
|
||||
"markdown": "---\n"
|
||||
},
|
||||
{
|
||||
"name": "Custom chart",
|
||||
"tileType": "CUSTOM_CHARTING",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 570,
|
||||
"left": 38,
|
||||
"width": 1064,
|
||||
"height": 304
|
||||
},
|
||||
"tileFilter": {},
|
||||
"filterConfig": {
|
||||
"type": "MIXED",
|
||||
"customName": "Response time, Request Count and Number of Errors",
|
||||
"defaultName": "Custom chart",
|
||||
"chartConfig": {
|
||||
"legendShown": true,
|
||||
"type": "TIMESERIES",
|
||||
"series": [
|
||||
{
|
||||
"metric": "builtin:service.response.time",
|
||||
"aggregation": "AVG",
|
||||
"type": "LINE",
|
||||
"entityType": "SERVICE",
|
||||
"dimensions": [],
|
||||
"sortAscending": false,
|
||||
"sortColumn": false,
|
||||
"aggregationRate": "TOTAL"
|
||||
},
|
||||
{
|
||||
"metric": "builtin:service.requestCount.total",
|
||||
"aggregation": "NONE",
|
||||
"type": "BAR",
|
||||
"entityType": "SERVICE",
|
||||
"dimensions": [],
|
||||
"sortAscending": false,
|
||||
"sortColumn": false,
|
||||
"aggregationRate": "TOTAL"
|
||||
},
|
||||
{
|
||||
"metric": "builtin:service.errors.total.count",
|
||||
"aggregation": "NONE",
|
||||
"type": "BAR",
|
||||
"entityType": "SERVICE",
|
||||
"dimensions": [],
|
||||
"sortAscending": false,
|
||||
"sortColumn": true,
|
||||
"aggregationRate": "TOTAL"
|
||||
}
|
||||
],
|
||||
"resultMetadata": {
|
||||
"nullbuiltin:service.requestCount.total|NONE|TOTAL|BAR|SERVICE": {
|
||||
"lastModified": 1595275720776,
|
||||
"customColor": "#008cdb"
|
||||
},
|
||||
"nullbuiltin:service.errors.total.count|NONE|TOTAL|BAR|SERVICE": {
|
||||
"lastModified": 1595275955999,
|
||||
"customColor": "#ef651f"
|
||||
},
|
||||
"nullbuiltin:service.response.time|AVG|TOTAL|LINE|SERVICE": {
|
||||
"lastModified": 1595275686773,
|
||||
"customColor": "#b4e5f9"
|
||||
}
|
||||
}
|
||||
},
|
||||
"filtersPerEntityType": {
|
||||
"SERVICE": {
|
||||
"AUTO_TAGS": [
|
||||
"Environment:{{.env}}",
|
||||
"Component:{{.tag}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown",
|
||||
"tileType": "MARKDOWN",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 190,
|
||||
"left": 38,
|
||||
"width": 1064,
|
||||
"height": 38
|
||||
},
|
||||
"tileFilter": {},
|
||||
"markdown": "---\n"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"tileType": "DATABASES_OVERVIEW",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 38,
|
||||
"left": 646,
|
||||
"width": 190,
|
||||
"height": 152
|
||||
},
|
||||
"tileFilter": {},
|
||||
"filterConfig": {
|
||||
"type": "DATABASE",
|
||||
"customName": "Databases",
|
||||
"defaultName": "Databases",
|
||||
"chartConfig": {
|
||||
"legendShown": true,
|
||||
"type": "TIMESERIES",
|
||||
"series": [],
|
||||
"resultMetadata": {}
|
||||
},
|
||||
"filtersPerEntityType": {
|
||||
"DATABASE": {
|
||||
"AUTO_TAGS": [
|
||||
"Environment:{{.env}}",
|
||||
"Component:{{.tag}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"chartVisible": true
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"tileType": "SERVICES",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 38,
|
||||
"left": 342,
|
||||
"width": 190,
|
||||
"height": 152
|
||||
},
|
||||
"tileFilter": {},
|
||||
"filterConfig": {
|
||||
"type": "SERVICE",
|
||||
"customName": "Services",
|
||||
"defaultName": "Services",
|
||||
"chartConfig": {
|
||||
"legendShown": true,
|
||||
"type": "TIMESERIES",
|
||||
"series": [],
|
||||
"resultMetadata": {}
|
||||
},
|
||||
"filtersPerEntityType": {
|
||||
"SERVICE": {
|
||||
"AUTO_TAGS": [
|
||||
"Environment:{{.env}}",
|
||||
"Component:{{.tag}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"chartVisible": true
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"tileType": "HOSTS",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 38,
|
||||
"left": 38,
|
||||
"width": 190,
|
||||
"height": 152
|
||||
},
|
||||
"tileFilter": {},
|
||||
"filterConfig": {
|
||||
"type": "HOST",
|
||||
"customName": "Hosts",
|
||||
"defaultName": "Hosts",
|
||||
"chartConfig": {
|
||||
"legendShown": true,
|
||||
"type": "TIMESERIES",
|
||||
"series": [],
|
||||
"resultMetadata": {}
|
||||
},
|
||||
"filtersPerEntityType": {
|
||||
"HOST": {
|
||||
"AUTO_TAGS": [
|
||||
"Environment:{{.env}}",
|
||||
"Component:{{.tag}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"chartVisible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
## Management Zones configuration
|
||||
|
||||
### Excluding noisy services
|
||||
|
||||
*If you find services that are not relevant for the analysis, you can exclude them from the MZ.*
|
||||
|
||||
#### HealthResource, PingResource, PrometheusResource services
|
||||
|
||||
*After the deployment of the OneAgent, your services should appear under Transactions & Services. A good practice would be to exclude*
|
||||
*the ones that are not relevant for monitoring. i.e. For some BMW's teams, HealthResource, PingResource, PrometheusResource have been excluded.*
|
||||
|
||||
**How to exclude HealthResource?**
|
||||
1. Open the file *default.json* configuration under the *CD_<app_name>/management-zone/* folder.
|
||||
2. Copy the following rule template:
|
||||
```
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"caseSensitive": true,
|
||||
"negate": true,
|
||||
"operator": "CONTAINS",
|
||||
"type": "STRING",
|
||||
"value": "HealthResource"
|
||||
},
|
||||
"key": {
|
||||
"attribute": "SERVICE_NAME"
|
||||
}
|
||||
}
|
||||
```
|
||||
2. Add it under the `"type": "SERVICE"` rule's conditions. It should look like this:
|
||||
```
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"negate": false,
|
||||
"operator": "EQUALS",
|
||||
"type": "TAG",
|
||||
"value": {
|
||||
"context": "CONTEXTLESS",
|
||||
"key": "Component",
|
||||
"value": "{{.tag}}"
|
||||
},
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"caseSensitive": true,
|
||||
"negate": true,
|
||||
"operator": "CONTAINS",
|
||||
"type": "STRING",
|
||||
"value": "HealthResource"
|
||||
},
|
||||
"key": {
|
||||
"attribute": "SERVICE_NAME"
|
||||
}
|
||||
}
|
||||
},
|
||||
"key": {
|
||||
"attribute": "SERVICE_TAGS"
|
||||
}
|
||||
}
|
||||
],
|
||||
"enabled": true,
|
||||
"propagationTypes": [
|
||||
"SERVICE_TO_PROCESS_GROUP_LIKE",
|
||||
"SERVICE_TO_HOST_LIKE"
|
||||
],
|
||||
"type": "SERVICE"
|
||||
}
|
||||
```
|
||||
|
||||
3. Commit and pull request to merge the branch to the master:
|
||||
```
|
||||
git add <changes>
|
||||
git commit -m "<app_name> configuration changes"
|
||||
git push -u origin <branch>
|
||||
```
|
||||
Note: you can use the same logic to exclude (or include) any other entity to your Management Zone.
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
"dimensionalRules": [],
|
||||
"name": "{{.name}}",
|
||||
"rules": [
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"negate": false,
|
||||
"operator": "EQUALS",
|
||||
"type": "TAG",
|
||||
"value": {
|
||||
"context": "CONTEXTLESS",
|
||||
"key": "Component",
|
||||
"value": "{{.tag}}"
|
||||
}
|
||||
},
|
||||
"key": {
|
||||
"attribute": "SERVICE_TAGS"
|
||||
}
|
||||
}
|
||||
],
|
||||
"enabled": true,
|
||||
"propagationTypes": [
|
||||
"SERVICE_TO_PROCESS_GROUP_LIKE",
|
||||
"SERVICE_TO_HOST_LIKE"
|
||||
],
|
||||
"type": "SERVICE"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"negate": false,
|
||||
"operator": "EQUALS",
|
||||
"type": "TAG",
|
||||
"value": {
|
||||
"context": "CONTEXTLESS",
|
||||
"key": "Component",
|
||||
"value": "{{.tag}}"
|
||||
}
|
||||
},
|
||||
"key": {
|
||||
"attribute": "PROCESS_GROUP_TAGS"
|
||||
}
|
||||
}
|
||||
],
|
||||
"enabled": true,
|
||||
"propagationTypes": [
|
||||
"PROCESS_GROUP_TO_HOST"
|
||||
],
|
||||
"type": "PROCESS_GROUP"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"negate": false,
|
||||
"operator": "EQUALS",
|
||||
"type": "TAG",
|
||||
"value": {
|
||||
"context": "CONTEXTLESS",
|
||||
"key": "Component",
|
||||
"value": "{{.tag}}"
|
||||
}
|
||||
},
|
||||
"key": {
|
||||
"attribute": "HOST_TAGS"
|
||||
}
|
||||
}
|
||||
],
|
||||
"enabled": true,
|
||||
"type": "HOST"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
config:
|
||||
- CDnewComponentTag: default.json
|
||||
|
||||
CDnewComponentTag:
|
||||
- name: CD_lsc-hr
|
||||
- tag: newComponentTag
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
|
||||
## Configure Notification System
|
||||
|
||||
### MS Teams - Default
|
||||
|
||||
*Let's suppose you would like to start receiving alerts from Dynatrace via MS Teams just for your *EMEA PROD*.*
|
||||
|
||||
1. Open *notification.yaml* under your application configuration folder. By default, all notification systems are configured via MS Teams with an
|
||||
https://empty webhook (not configured).
|
||||
2. Create an incoming webhook in MS Teams. [How to?](https://www.dynatrace.com/support/help/shortlink/set-up-msteams-integration#configuration-in-microsoft-teams)
|
||||
3. Add the incoming webhook under the webhook parameter for the `<app_name>-PROD.EMEA-Prod`:
|
||||
```
|
||||
<app_name>-PROD.EMEA-Prod:
|
||||
- name: CD_<app_name> PROD
|
||||
- alertingProfile: CD_<app_name>/alerting-profile/CD<app_name>-PROD.id
|
||||
- webhook: <Add webhook here>
|
||||
- skipDeployment: "false"
|
||||
```
|
||||
4. Save and commit changes:
|
||||
```
|
||||
git add <changes>
|
||||
git commit -m "<app_name> configuration changes"
|
||||
git push -u origin <branch>
|
||||
```
|
||||
Note: If you want to enable MS Teams for any other hub/stage, follow the same steps but make sure you're under the right configuration:
|
||||
`<app_name>-<stage>.<dynatrace-env>-<stage>:`
|
||||
|
||||
### Email
|
||||
|
||||
*The team prefers to be alerted via email, not MS Teams*
|
||||
|
||||
1. Keep the MS Teams integration disabled, with the https://empty webhook:
|
||||
```
|
||||
<app_name>-PROD.EMEA-Prod:
|
||||
- name: CD_<app_name> PROD
|
||||
- alertingProfile: CD_<app_name>/alerting-profile/CD<app_name>-PROD.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
```
|
||||
2. Create a new configuration template under config, using the email template:
|
||||
```
|
||||
config:
|
||||
- CD<app_name>email: email.json
|
||||
```
|
||||
3. Describe the configuration below, using the following template:
|
||||
```
|
||||
CD<app_name>email.EMEA-Prod:
|
||||
- name: CD_<app_name> PROD
|
||||
- alertingProfile: CD_<app_name>/alerting-profile/CD<app_name>-PROD.id
|
||||
- receivers: distributionEmailexample@bmw.de`
|
||||
```
|
||||
4. Save and commit changes:
|
||||
```
|
||||
git add <changes>
|
||||
git commit -m "<app_name> configuration changes"
|
||||
git push -u origin <branch>
|
||||
```
|
||||
|
||||
### ITSM
|
||||
Coming soon!
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"active": true,
|
||||
"alertingProfile": "{{.alertingProfile}}",
|
||||
"bccReceivers": [],
|
||||
"body": "{ProblemDetailsHTML}",
|
||||
"ccReceivers": [],
|
||||
"name": "{{.name}}",
|
||||
"receivers": [
|
||||
"{{.receivers}}"
|
||||
],
|
||||
"subject": "{State} Problem {ProblemID}: {ImpactedEntity}",
|
||||
"type": "EMAIL"
|
||||
}
|
||||
|
|
@ -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}}"
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
config:
|
||||
- CDnewComponentTag-PROD: msTeams.json
|
||||
- CDnewComponentTag-INT: msTeams.json
|
||||
|
||||
#Prod notification system for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-PROD:
|
||||
- name: CD_lsc-hr PROD
|
||||
- alertingProfile: CD_lsc-hr/alerting-profile/CDnewComponentTag-PROD.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-PROD.EMEA-Prod:
|
||||
- name: CD_lsc-hr PROD
|
||||
- alertingProfile: CD_lsc-hr/alerting-profile/CDnewComponentTag-PROD.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.NA-Prod:
|
||||
- name: CD_lsc-hr PROD
|
||||
- alertingProfile: CD_lsc-hr/alerting-profile/CDnewComponentTag-PROD.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.CN-Prod:
|
||||
- name: CD_lsc-hr PROD
|
||||
- alertingProfile: CD_lsc-hr/alerting-profile/CDnewComponentTag-PROD.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
|
||||
#INT notification system for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-INT:
|
||||
- name: CD_lsc-hr INT
|
||||
- alertingProfile: CD_lsc-hr/alerting-profile/CDnewComponentTag-INT.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-INT.EMEA-PreProd:
|
||||
- name: CD_lsc-hr INT
|
||||
- alertingProfile: CD_lsc-hr/alerting-profile/CDnewComponentTag-INT.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.NA-PreProd:
|
||||
- name: CD_lsc-hr INT
|
||||
- alertingProfile: CD_lsc-hr/alerting-profile/CDnewComponentTag-INT.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.CN-PreProd:
|
||||
- name: CD_lsc-hr INT
|
||||
- alertingProfile: CD_lsc-hr/alerting-profile/CDnewComponentTag-INT.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
# Synthetic Configuration
|
||||
|
||||
To calculate the Availability KPI, a synthetic must be configured.
|
||||
|
||||
1. Modify the synthetic-monitor.yaml file, providing:
|
||||
- **Endpoint**: url intended to check the availability.
|
||||
- **Location**:
|
||||
- *synthetic private location*: If the endpoint is reachable within the BMW network.
|
||||
```
|
||||
- location: BMW-Dynatrace-config/00_Global-Config/synthetic-location/BMW-AWS-Frankfurt.id
|
||||
```
|
||||
- *synthetic public location*: If the endpoint is reachable from the internet.
|
||||
```
|
||||
- location: GEOLOCATION-45AB48D9D6925ECC
|
||||
```
|
||||
2. Change `skipDeployment` to false.
|
||||
|
||||
i.e.
|
||||
```
|
||||
config:
|
||||
- my-synthetic: default.json
|
||||
|
||||
my-synthetic:
|
||||
- name: CD_BMW - bmw.com
|
||||
- mzName: CD_google/management-zone/CDgoogle.name
|
||||
- mzId: CD_google/management-zone/CDgoogle.id
|
||||
- endpoint: https://google.com
|
||||
- location: GEOLOCATION-45AB48D9D6925ECC
|
||||
- skipDeployment: "false"
|
||||
```
|
||||
|
||||
3. Commit and pull request to merge the branch to the master:
|
||||
```
|
||||
git add <changes>
|
||||
git commit -m "<app_name> configuration changes"
|
||||
git push -u origin <branch>
|
||||
```
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
{
|
||||
"anomalyDetection": {
|
||||
"loadingTimeThresholds": {
|
||||
"enabled": false,
|
||||
"thresholds": [
|
||||
{
|
||||
"type": "TOTAL",
|
||||
"valueMs": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"outageHandling": {
|
||||
"globalOutage": true,
|
||||
"localOutage": false,
|
||||
"localOutagePolicy": {
|
||||
"affectedLocations": 1,
|
||||
"consecutiveRuns": 3
|
||||
}
|
||||
}
|
||||
},
|
||||
"automaticallyAssignedApps": [],
|
||||
"enabled": true,
|
||||
"frequencyMin": 1,
|
||||
"locations": [
|
||||
"{{.location}}"
|
||||
],
|
||||
"managementZones": [
|
||||
{
|
||||
"id": "{{.mzId}}",
|
||||
"name": "{{.mzName}}"
|
||||
}
|
||||
],
|
||||
"manuallyAssignedApps": [],
|
||||
"name": "{{.name}}",
|
||||
"requests": [
|
||||
{
|
||||
"entityId": "HTTP_CHECK_STEP-0BA53EC80CD7EE5A",
|
||||
"name": "{{.name}}",
|
||||
"sequenceNumber": 1
|
||||
}
|
||||
],
|
||||
"script": {
|
||||
"requests": [
|
||||
{
|
||||
"configuration": {
|
||||
"acceptAnyCertificate": true,
|
||||
"followRedirects": true,
|
||||
"requestHeaders": [
|
||||
{
|
||||
"name": "accept",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "api_key",
|
||||
"value": "355DE89C-7B72-4EA3-BDD8-157C79EB2C23"
|
||||
}
|
||||
]
|
||||
},
|
||||
"description": "{{.name}}",
|
||||
"method": "GET",
|
||||
"url": "{{.endpoint}}",
|
||||
"validation": {
|
||||
"rules": [
|
||||
{
|
||||
"passIfFound": true,
|
||||
"type": "httpStatusesList",
|
||||
"value": "200"
|
||||
}
|
||||
],
|
||||
"rulesChaining": "or"
|
||||
}
|
||||
}
|
||||
],
|
||||
"version": "1.0"
|
||||
},
|
||||
"tags": [],
|
||||
"type": "HTTP"
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
config:
|
||||
- newComponentTag: default.json
|
||||
|
||||
newComponentTag:
|
||||
- name: CD_managementZone - <synthetic-name>
|
||||
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
|
||||
- endpoint: <url>
|
||||
- location: <location>
|
||||
- skipDeployment: "true"
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
config:
|
||||
- CDnewComponentTag-PROD: default.json
|
||||
- CDnewComponentTag-INT: default.json
|
||||
|
||||
#Prod alerting profiles for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-PROD:
|
||||
- name: CD_lsc-jr PROD
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: PROD
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-PROD.EMEA-Prod:
|
||||
- name: CD_lsc-jr PROD
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.NA-Prod:
|
||||
- name: CD_lsc-jr PROD
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.CN-Prod:
|
||||
- name: CD_lsc-jr PROD
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
|
||||
|
||||
#INT alerting profiles for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-INT:
|
||||
- name: CD_lsc-jr INT
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-INT.EMEA-PreProd:
|
||||
- name: CD_lsc-jr INT
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.NA-PreProd:
|
||||
- name: CD_lsc-jr INT
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.CN-PreProd:
|
||||
- name: CD_lsc-jr INT
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "false"
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
{
|
||||
"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}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
## Custom metrics - Multidimensional Analysis
|
||||
|
||||
Under the Multidimensional Analysis you're able to save a view but not to create a metric. Instead, you can do it in here:
|
||||
|
||||
1. Create the metric within the Dynatrace UI using the Mutidimensional Analysis view.
|
||||
2. Save the view and create a ticket for the OPAPM team [here](link). Please provide the following information:
|
||||
- View created in the Dynatrace UI
|
||||
- Your Dynatrace configuration folder (i.e. CD_<app_name>)
|
||||
|
||||
The OPAPM team will proceed creating the metric and updating your configuration in monaco.
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
|
||||
## What is a custom service in Dynatrace?
|
||||
- *If your application's services aren't built on standard technologies, they may not be recognized out-of-the box.*
|
||||
- *You can monitor these technologies, but you'll need to define them as custom services with specific service entry points.*
|
||||
- *Another use case for custom services are microservices that are used by a larger application that aren't exposed via communication technologies.*
|
||||
|
||||
## How to create a custom service?
|
||||
1. Open the file *custom-service-java.yaml* under your *CD_<app_name>/custom-service-java* configuration folder.
|
||||
2. Use customService1 as a template. Copy and paste it below, changing the skipDeployment to "false".
|
||||
3. Fill up all the remaining inputs with the details of the endpoint you're interested to monitor. (className, methodName, etc...)
|
||||
4. Commit and pull request to merge the branch to the master:
|
||||
`git add <changes>`
|
||||
`git commit -m "<app_name> configuration changes"`
|
||||
`git push -u origin <branch>`
|
||||
5. Restart the application where the custom service has been created.
|
||||
6. Check if the custom service appears in Dynatrace.
|
||||
|
||||
Notes:
|
||||
- As this configuration needs a restart, it's better to create it in a non-Prod application.
|
||||
- The custom service will appear in Dynatrace iff there's traffic going through.
|
||||
|
||||
## What if i have multiple classes?
|
||||
1. Clone *template-1-1.json* to a new one called *template-2-1.json*.
|
||||
2. Edit *template-2-1.json* adding a 2nd rule separated with a coma.
|
||||
3. For the 2nd rule, change the name of the {{.values}} to {{.values2}} i.e.
|
||||
4. The template is ready to be used in the YAML file.
|
||||
|
||||
## What if i have multiple methods?
|
||||
1. Same process as before, just call it template-1-2.json
|
||||
2. In this way you can extend to a custom service with n classes and k methods: template-n-k.json
|
||||
|
|
@ -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"
|
||||
|
|
@ -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}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
## Update dashboard configuration
|
||||
|
||||
- Configuration changes (like in dashboards, alerting profiles) must be done via a pull request. Changing a dashboard just in the environment, will cause that it will be overwritten by Monaco.
|
||||
- How to generate changes in your dashboards?
|
||||
1. Modify the dashboard within the Dynatrace UI with the intended changes.
|
||||
2. Copy the JSON of the dashboards. (Can be found under the dashboard settings)
|
||||
3. Paste the copied JSON under the Monaco JSON, overwrite it.
|
||||
4. Commit and pull request to merge the branch to the master:
|
||||
```
|
||||
git add <changes>
|
||||
git commit -m "<app_name> configuration changes"
|
||||
git push -u origin <branch>
|
||||
```
|
||||
|
|
@ -0,0 +1,127 @@
|
|||
config:
|
||||
- CDnewComponentTag-PROD: default.json
|
||||
- CDnewComponentTag-E2E: default.json
|
||||
- CDnewComponentTag-INT: default.json
|
||||
- CDnewComponentTag-TEST: default.json
|
||||
|
||||
#PROD dashboards for EMEA/NA/CN Prod
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-PROD:
|
||||
- name: CD_lsc-jr PROD
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: PROD
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-PROD.EMEA-Prod:
|
||||
- name: CD_lsc-jr PROD
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- tag: newComponentTag
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.NA-Prod:
|
||||
- name: CD_lsc-jr PROD
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- tag: newComponentTag
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.CN-Prod:
|
||||
- name: CD_lsc-jr PROD
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- tag: newComponentTag
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
|
||||
#E2E dashboards for EMEA/NA/CN E2E
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-E2E:
|
||||
- name: CD_lsc-jr E2E
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: E2E
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-E2E.EMEA-Prod:
|
||||
- name: CD_lsc-jr E2E
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: E2E
|
||||
- tag: newComponentTag
|
||||
- skipDeployment: "true"
|
||||
CDnewComponentTag-E2E.NA-Prod:
|
||||
- name: CD_lsc-jr E2E
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: E2E
|
||||
- tag: newComponentTag
|
||||
- skipDeployment: "true"
|
||||
CDnewComponentTag-E2E.CN-Prod:
|
||||
- name: CD_lsc-jr E2E
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: E2E
|
||||
- tag: newComponentTag
|
||||
- skipDeployment: "true"
|
||||
|
||||
#INT dashboards for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-INT:
|
||||
- name: CD_lsc-jr INT
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- tag: newComponentTag
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-INT.EMEA-PreProd:
|
||||
- name: CD_lsc-jr INT
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- tag: newComponentTag
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.NA-PreProd:
|
||||
- name: CD_lsc-jr INT
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.CN-PreProd:
|
||||
- name: CD_lsc-jr INT
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "false"
|
||||
|
||||
#TEST dashboards for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-TEST:
|
||||
- name: CD_lsc-jr TEST
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- tag: newComponentTag
|
||||
- env: TEST
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-TEST.EMEA-PreProd:
|
||||
- name: CD_lsc-jr TEST
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- tag: newComponentTag
|
||||
- env: TEST
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-TEST.NA-PreProd:
|
||||
- name: CD_lsc-jr TEST
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: TEST
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-TEST.CN-PreProd:
|
||||
- name: CD_lsc-jr TEST
|
||||
- mzName: CD_lsc-jr/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-jr/management-zone/CDnewComponentTag.id
|
||||
- env: TEST
|
||||
- skipDeployment: "false"
|
||||
|
|
@ -0,0 +1,308 @@
|
|||
{
|
||||
"metadata": {
|
||||
"configurationVersions": [
|
||||
3
|
||||
],
|
||||
"clusterVersion": "1.214.107.20210407-223952"
|
||||
},
|
||||
"dashboardMetadata": {
|
||||
"name": "{{.name}}",
|
||||
"shared": true,
|
||||
"owner": "Ignacio.Goldman@partner.bmwgroup.com",
|
||||
"dashboardFilter": {
|
||||
"timeframe": "-24h to now"
|
||||
},
|
||||
"tags": [
|
||||
"{{.tag}}"
|
||||
]
|
||||
},
|
||||
"tiles": [
|
||||
{
|
||||
"name": "Custom chart",
|
||||
"tileType": "CUSTOM_CHARTING",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 228,
|
||||
"left": 38,
|
||||
"width": 1064,
|
||||
"height": 304
|
||||
},
|
||||
"tileFilter": {},
|
||||
"filterConfig": {
|
||||
"type": "MIXED",
|
||||
"customName": "Failure rate (HTTP 4xx/5xx errors)",
|
||||
"defaultName": "Custom chart",
|
||||
"chartConfig": {
|
||||
"legendShown": true,
|
||||
"type": "TIMESERIES",
|
||||
"series": [
|
||||
{
|
||||
"metric": "builtin:service.errors.fourxx.rate",
|
||||
"aggregation": "AVG",
|
||||
"type": "BAR",
|
||||
"entityType": "SERVICE",
|
||||
"dimensions": [],
|
||||
"sortAscending": false,
|
||||
"sortColumn": false,
|
||||
"aggregationRate": "TOTAL"
|
||||
},
|
||||
{
|
||||
"metric": "builtin:service.errors.fivexx.rate",
|
||||
"aggregation": "AVG",
|
||||
"type": "BAR",
|
||||
"entityType": "SERVICE",
|
||||
"dimensions": [],
|
||||
"sortAscending": false,
|
||||
"sortColumn": true,
|
||||
"aggregationRate": "TOTAL"
|
||||
}
|
||||
],
|
||||
"resultMetadata": {
|
||||
"nullbuiltin:service.errors.fivexx.rate|AVG|TOTAL|BAR|SERVICE": {
|
||||
"lastModified": 1617956393463,
|
||||
"customColor": "#ff0000"
|
||||
},
|
||||
"nullbuiltin:service.errors.fourxx.rate|AVG|TOTAL|BAR|SERVICE": {
|
||||
"lastModified": 1617956441725,
|
||||
"customColor": "#fff29a"
|
||||
}
|
||||
}
|
||||
},
|
||||
"filtersPerEntityType": {
|
||||
"SERVICE": {
|
||||
"AUTO_TAGS": [
|
||||
"Environment:{{.env}}",
|
||||
"Component:{{.tag}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Problems",
|
||||
"tileType": "OPEN_PROBLEMS",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 38,
|
||||
"left": 950,
|
||||
"width": 152,
|
||||
"height": 152
|
||||
},
|
||||
"tileFilter": {
|
||||
"managementZone": {
|
||||
"id": "{{.mzId}}",
|
||||
"name": "{{.mzName}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Overall Health",
|
||||
"tileType": "HEADER",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 0,
|
||||
"left": 38,
|
||||
"width": 1064,
|
||||
"height": 38
|
||||
},
|
||||
"tileFilter": {}
|
||||
},
|
||||
{
|
||||
"name": "Markdown",
|
||||
"tileType": "MARKDOWN",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 532,
|
||||
"left": 38,
|
||||
"width": 1064,
|
||||
"height": 38
|
||||
},
|
||||
"tileFilter": {},
|
||||
"markdown": "---\n"
|
||||
},
|
||||
{
|
||||
"name": "Custom chart",
|
||||
"tileType": "CUSTOM_CHARTING",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 570,
|
||||
"left": 38,
|
||||
"width": 1064,
|
||||
"height": 304
|
||||
},
|
||||
"tileFilter": {},
|
||||
"filterConfig": {
|
||||
"type": "MIXED",
|
||||
"customName": "Response time, Request Count and Number of Errors",
|
||||
"defaultName": "Custom chart",
|
||||
"chartConfig": {
|
||||
"legendShown": true,
|
||||
"type": "TIMESERIES",
|
||||
"series": [
|
||||
{
|
||||
"metric": "builtin:service.response.time",
|
||||
"aggregation": "AVG",
|
||||
"type": "LINE",
|
||||
"entityType": "SERVICE",
|
||||
"dimensions": [],
|
||||
"sortAscending": false,
|
||||
"sortColumn": false,
|
||||
"aggregationRate": "TOTAL"
|
||||
},
|
||||
{
|
||||
"metric": "builtin:service.requestCount.total",
|
||||
"aggregation": "NONE",
|
||||
"type": "BAR",
|
||||
"entityType": "SERVICE",
|
||||
"dimensions": [],
|
||||
"sortAscending": false,
|
||||
"sortColumn": false,
|
||||
"aggregationRate": "TOTAL"
|
||||
},
|
||||
{
|
||||
"metric": "builtin:service.errors.total.count",
|
||||
"aggregation": "NONE",
|
||||
"type": "BAR",
|
||||
"entityType": "SERVICE",
|
||||
"dimensions": [],
|
||||
"sortAscending": false,
|
||||
"sortColumn": true,
|
||||
"aggregationRate": "TOTAL"
|
||||
}
|
||||
],
|
||||
"resultMetadata": {
|
||||
"nullbuiltin:service.requestCount.total|NONE|TOTAL|BAR|SERVICE": {
|
||||
"lastModified": 1595275720776,
|
||||
"customColor": "#008cdb"
|
||||
},
|
||||
"nullbuiltin:service.errors.total.count|NONE|TOTAL|BAR|SERVICE": {
|
||||
"lastModified": 1595275955999,
|
||||
"customColor": "#ef651f"
|
||||
},
|
||||
"nullbuiltin:service.response.time|AVG|TOTAL|LINE|SERVICE": {
|
||||
"lastModified": 1595275686773,
|
||||
"customColor": "#b4e5f9"
|
||||
}
|
||||
}
|
||||
},
|
||||
"filtersPerEntityType": {
|
||||
"SERVICE": {
|
||||
"AUTO_TAGS": [
|
||||
"Environment:{{.env}}",
|
||||
"Component:{{.tag}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown",
|
||||
"tileType": "MARKDOWN",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 190,
|
||||
"left": 38,
|
||||
"width": 1064,
|
||||
"height": 38
|
||||
},
|
||||
"tileFilter": {},
|
||||
"markdown": "---\n"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"tileType": "DATABASES_OVERVIEW",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 38,
|
||||
"left": 646,
|
||||
"width": 190,
|
||||
"height": 152
|
||||
},
|
||||
"tileFilter": {},
|
||||
"filterConfig": {
|
||||
"type": "DATABASE",
|
||||
"customName": "Databases",
|
||||
"defaultName": "Databases",
|
||||
"chartConfig": {
|
||||
"legendShown": true,
|
||||
"type": "TIMESERIES",
|
||||
"series": [],
|
||||
"resultMetadata": {}
|
||||
},
|
||||
"filtersPerEntityType": {
|
||||
"DATABASE": {
|
||||
"AUTO_TAGS": [
|
||||
"Environment:{{.env}}",
|
||||
"Component:{{.tag}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"chartVisible": true
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"tileType": "SERVICES",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 38,
|
||||
"left": 342,
|
||||
"width": 190,
|
||||
"height": 152
|
||||
},
|
||||
"tileFilter": {},
|
||||
"filterConfig": {
|
||||
"type": "SERVICE",
|
||||
"customName": "Services",
|
||||
"defaultName": "Services",
|
||||
"chartConfig": {
|
||||
"legendShown": true,
|
||||
"type": "TIMESERIES",
|
||||
"series": [],
|
||||
"resultMetadata": {}
|
||||
},
|
||||
"filtersPerEntityType": {
|
||||
"SERVICE": {
|
||||
"AUTO_TAGS": [
|
||||
"Environment:{{.env}}",
|
||||
"Component:{{.tag}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"chartVisible": true
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"tileType": "HOSTS",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 38,
|
||||
"left": 38,
|
||||
"width": 190,
|
||||
"height": 152
|
||||
},
|
||||
"tileFilter": {},
|
||||
"filterConfig": {
|
||||
"type": "HOST",
|
||||
"customName": "Hosts",
|
||||
"defaultName": "Hosts",
|
||||
"chartConfig": {
|
||||
"legendShown": true,
|
||||
"type": "TIMESERIES",
|
||||
"series": [],
|
||||
"resultMetadata": {}
|
||||
},
|
||||
"filtersPerEntityType": {
|
||||
"HOST": {
|
||||
"AUTO_TAGS": [
|
||||
"Environment:{{.env}}",
|
||||
"Component:{{.tag}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"chartVisible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
## Management Zones configuration
|
||||
|
||||
### Excluding noisy services
|
||||
|
||||
*If you find services that are not relevant for the analysis, you can exclude them from the MZ.*
|
||||
|
||||
#### HealthResource, PingResource, PrometheusResource services
|
||||
|
||||
*After the deployment of the OneAgent, your services should appear under Transactions & Services. A good practice would be to exclude*
|
||||
*the ones that are not relevant for monitoring. i.e. For some BMW's teams, HealthResource, PingResource, PrometheusResource have been excluded.*
|
||||
|
||||
**How to exclude HealthResource?**
|
||||
1. Open the file *default.json* configuration under the *CD_<app_name>/management-zone/* folder.
|
||||
2. Copy the following rule template:
|
||||
```
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"caseSensitive": true,
|
||||
"negate": true,
|
||||
"operator": "CONTAINS",
|
||||
"type": "STRING",
|
||||
"value": "HealthResource"
|
||||
},
|
||||
"key": {
|
||||
"attribute": "SERVICE_NAME"
|
||||
}
|
||||
}
|
||||
```
|
||||
2. Add it under the `"type": "SERVICE"` rule's conditions. It should look like this:
|
||||
```
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"negate": false,
|
||||
"operator": "EQUALS",
|
||||
"type": "TAG",
|
||||
"value": {
|
||||
"context": "CONTEXTLESS",
|
||||
"key": "Component",
|
||||
"value": "{{.tag}}"
|
||||
},
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"caseSensitive": true,
|
||||
"negate": true,
|
||||
"operator": "CONTAINS",
|
||||
"type": "STRING",
|
||||
"value": "HealthResource"
|
||||
},
|
||||
"key": {
|
||||
"attribute": "SERVICE_NAME"
|
||||
}
|
||||
}
|
||||
},
|
||||
"key": {
|
||||
"attribute": "SERVICE_TAGS"
|
||||
}
|
||||
}
|
||||
],
|
||||
"enabled": true,
|
||||
"propagationTypes": [
|
||||
"SERVICE_TO_PROCESS_GROUP_LIKE",
|
||||
"SERVICE_TO_HOST_LIKE"
|
||||
],
|
||||
"type": "SERVICE"
|
||||
}
|
||||
```
|
||||
|
||||
3. Commit and pull request to merge the branch to the master:
|
||||
```
|
||||
git add <changes>
|
||||
git commit -m "<app_name> configuration changes"
|
||||
git push -u origin <branch>
|
||||
```
|
||||
Note: you can use the same logic to exclude (or include) any other entity to your Management Zone.
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
"dimensionalRules": [],
|
||||
"name": "{{.name}}",
|
||||
"rules": [
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"negate": false,
|
||||
"operator": "EQUALS",
|
||||
"type": "TAG",
|
||||
"value": {
|
||||
"context": "CONTEXTLESS",
|
||||
"key": "Component",
|
||||
"value": "{{.tag}}"
|
||||
}
|
||||
},
|
||||
"key": {
|
||||
"attribute": "SERVICE_TAGS"
|
||||
}
|
||||
}
|
||||
],
|
||||
"enabled": true,
|
||||
"propagationTypes": [
|
||||
"SERVICE_TO_PROCESS_GROUP_LIKE",
|
||||
"SERVICE_TO_HOST_LIKE"
|
||||
],
|
||||
"type": "SERVICE"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"negate": false,
|
||||
"operator": "EQUALS",
|
||||
"type": "TAG",
|
||||
"value": {
|
||||
"context": "CONTEXTLESS",
|
||||
"key": "Component",
|
||||
"value": "{{.tag}}"
|
||||
}
|
||||
},
|
||||
"key": {
|
||||
"attribute": "PROCESS_GROUP_TAGS"
|
||||
}
|
||||
}
|
||||
],
|
||||
"enabled": true,
|
||||
"propagationTypes": [
|
||||
"PROCESS_GROUP_TO_HOST"
|
||||
],
|
||||
"type": "PROCESS_GROUP"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"negate": false,
|
||||
"operator": "EQUALS",
|
||||
"type": "TAG",
|
||||
"value": {
|
||||
"context": "CONTEXTLESS",
|
||||
"key": "Component",
|
||||
"value": "{{.tag}}"
|
||||
}
|
||||
},
|
||||
"key": {
|
||||
"attribute": "HOST_TAGS"
|
||||
}
|
||||
}
|
||||
],
|
||||
"enabled": true,
|
||||
"type": "HOST"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
config:
|
||||
- CDnewComponentTag: default.json
|
||||
|
||||
CDnewComponentTag:
|
||||
- name: CD_lsc-jr
|
||||
- tag: newComponentTag
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
|
||||
## Configure Notification System
|
||||
|
||||
### MS Teams - Default
|
||||
|
||||
*Let's suppose you would like to start receiving alerts from Dynatrace via MS Teams just for your *EMEA PROD*.*
|
||||
|
||||
1. Open *notification.yaml* under your application configuration folder. By default, all notification systems are configured via MS Teams with an
|
||||
https://empty webhook (not configured).
|
||||
2. Create an incoming webhook in MS Teams. [How to?](https://www.dynatrace.com/support/help/shortlink/set-up-msteams-integration#configuration-in-microsoft-teams)
|
||||
3. Add the incoming webhook under the webhook parameter for the `<app_name>-PROD.EMEA-Prod`:
|
||||
```
|
||||
<app_name>-PROD.EMEA-Prod:
|
||||
- name: CD_<app_name> PROD
|
||||
- alertingProfile: CD_<app_name>/alerting-profile/CD<app_name>-PROD.id
|
||||
- webhook: <Add webhook here>
|
||||
- skipDeployment: "false"
|
||||
```
|
||||
4. Save and commit changes:
|
||||
```
|
||||
git add <changes>
|
||||
git commit -m "<app_name> configuration changes"
|
||||
git push -u origin <branch>
|
||||
```
|
||||
Note: If you want to enable MS Teams for any other hub/stage, follow the same steps but make sure you're under the right configuration:
|
||||
`<app_name>-<stage>.<dynatrace-env>-<stage>:`
|
||||
|
||||
### Email
|
||||
|
||||
*The team prefers to be alerted via email, not MS Teams*
|
||||
|
||||
1. Keep the MS Teams integration disabled, with the https://empty webhook:
|
||||
```
|
||||
<app_name>-PROD.EMEA-Prod:
|
||||
- name: CD_<app_name> PROD
|
||||
- alertingProfile: CD_<app_name>/alerting-profile/CD<app_name>-PROD.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
```
|
||||
2. Create a new configuration template under config, using the email template:
|
||||
```
|
||||
config:
|
||||
- CD<app_name>email: email.json
|
||||
```
|
||||
3. Describe the configuration below, using the following template:
|
||||
```
|
||||
CD<app_name>email.EMEA-Prod:
|
||||
- name: CD_<app_name> PROD
|
||||
- alertingProfile: CD_<app_name>/alerting-profile/CD<app_name>-PROD.id
|
||||
- receivers: distributionEmailexample@bmw.de`
|
||||
```
|
||||
4. Save and commit changes:
|
||||
```
|
||||
git add <changes>
|
||||
git commit -m "<app_name> configuration changes"
|
||||
git push -u origin <branch>
|
||||
```
|
||||
|
||||
### ITSM
|
||||
Coming soon!
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"active": true,
|
||||
"alertingProfile": "{{.alertingProfile}}",
|
||||
"bccReceivers": [],
|
||||
"body": "{ProblemDetailsHTML}",
|
||||
"ccReceivers": [],
|
||||
"name": "{{.name}}",
|
||||
"receivers": [
|
||||
"{{.receivers}}"
|
||||
],
|
||||
"subject": "{State} Problem {ProblemID}: {ImpactedEntity}",
|
||||
"type": "EMAIL"
|
||||
}
|
||||
|
|
@ -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}}"
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
config:
|
||||
- CDnewComponentTag-PROD: msTeams.json
|
||||
- CDnewComponentTag-INT: msTeams.json
|
||||
|
||||
#Prod notification system for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-PROD:
|
||||
- name: CD_lsc-jr PROD
|
||||
- alertingProfile: CD_lsc-jr/alerting-profile/CDnewComponentTag-PROD.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-PROD.EMEA-Prod:
|
||||
- name: CD_lsc-jr PROD
|
||||
- alertingProfile: CD_lsc-jr/alerting-profile/CDnewComponentTag-PROD.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.NA-Prod:
|
||||
- name: CD_lsc-jr PROD
|
||||
- alertingProfile: CD_lsc-jr/alerting-profile/CDnewComponentTag-PROD.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.CN-Prod:
|
||||
- name: CD_lsc-jr PROD
|
||||
- alertingProfile: CD_lsc-jr/alerting-profile/CDnewComponentTag-PROD.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
|
||||
#INT notification system for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-INT:
|
||||
- name: CD_lsc-jr INT
|
||||
- alertingProfile: CD_lsc-jr/alerting-profile/CDnewComponentTag-INT.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-INT.EMEA-PreProd:
|
||||
- name: CD_lsc-jr INT
|
||||
- alertingProfile: CD_lsc-jr/alerting-profile/CDnewComponentTag-INT.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.NA-PreProd:
|
||||
- name: CD_lsc-jr INT
|
||||
- alertingProfile: CD_lsc-jr/alerting-profile/CDnewComponentTag-INT.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.CN-PreProd:
|
||||
- name: CD_lsc-jr INT
|
||||
- alertingProfile: CD_lsc-jr/alerting-profile/CDnewComponentTag-INT.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
# Synthetic Configuration
|
||||
|
||||
To calculate the Availability KPI, a synthetic must be configured.
|
||||
|
||||
1. Modify the synthetic-monitor.yaml file, providing:
|
||||
- **Endpoint**: url intended to check the availability.
|
||||
- **Location**:
|
||||
- *synthetic private location*: If the endpoint is reachable within the BMW network.
|
||||
```
|
||||
- location: BMW-Dynatrace-config/00_Global-Config/synthetic-location/BMW-AWS-Frankfurt.id
|
||||
```
|
||||
- *synthetic public location*: If the endpoint is reachable from the internet.
|
||||
```
|
||||
- location: GEOLOCATION-45AB48D9D6925ECC
|
||||
```
|
||||
2. Change `skipDeployment` to false.
|
||||
|
||||
i.e.
|
||||
```
|
||||
config:
|
||||
- my-synthetic: default.json
|
||||
|
||||
my-synthetic:
|
||||
- name: CD_BMW - bmw.com
|
||||
- mzName: CD_google/management-zone/CDgoogle.name
|
||||
- mzId: CD_google/management-zone/CDgoogle.id
|
||||
- endpoint: https://google.com
|
||||
- location: GEOLOCATION-45AB48D9D6925ECC
|
||||
- skipDeployment: "false"
|
||||
```
|
||||
|
||||
3. Commit and pull request to merge the branch to the master:
|
||||
```
|
||||
git add <changes>
|
||||
git commit -m "<app_name> configuration changes"
|
||||
git push -u origin <branch>
|
||||
```
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
{
|
||||
"anomalyDetection": {
|
||||
"loadingTimeThresholds": {
|
||||
"enabled": false,
|
||||
"thresholds": [
|
||||
{
|
||||
"type": "TOTAL",
|
||||
"valueMs": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"outageHandling": {
|
||||
"globalOutage": true,
|
||||
"localOutage": false,
|
||||
"localOutagePolicy": {
|
||||
"affectedLocations": 1,
|
||||
"consecutiveRuns": 3
|
||||
}
|
||||
}
|
||||
},
|
||||
"automaticallyAssignedApps": [],
|
||||
"enabled": true,
|
||||
"frequencyMin": 1,
|
||||
"locations": [
|
||||
"{{.location}}"
|
||||
],
|
||||
"managementZones": [
|
||||
{
|
||||
"id": "{{.mzId}}",
|
||||
"name": "{{.mzName}}"
|
||||
}
|
||||
],
|
||||
"manuallyAssignedApps": [],
|
||||
"name": "{{.name}}",
|
||||
"requests": [
|
||||
{
|
||||
"entityId": "HTTP_CHECK_STEP-0BA53EC80CD7EE5A",
|
||||
"name": "{{.name}}",
|
||||
"sequenceNumber": 1
|
||||
}
|
||||
],
|
||||
"script": {
|
||||
"requests": [
|
||||
{
|
||||
"configuration": {
|
||||
"acceptAnyCertificate": true,
|
||||
"followRedirects": true,
|
||||
"requestHeaders": [
|
||||
{
|
||||
"name": "accept",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "api_key",
|
||||
"value": "355DE89C-7B72-4EA3-BDD8-157C79EB2C23"
|
||||
}
|
||||
]
|
||||
},
|
||||
"description": "{{.name}}",
|
||||
"method": "GET",
|
||||
"url": "{{.endpoint}}",
|
||||
"validation": {
|
||||
"rules": [
|
||||
{
|
||||
"passIfFound": true,
|
||||
"type": "httpStatusesList",
|
||||
"value": "200"
|
||||
}
|
||||
],
|
||||
"rulesChaining": "or"
|
||||
}
|
||||
}
|
||||
],
|
||||
"version": "1.0"
|
||||
},
|
||||
"tags": [],
|
||||
"type": "HTTP"
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
config:
|
||||
- newComponentTag: default.json
|
||||
|
||||
newComponentTag:
|
||||
- name: CD_managementZone - <synthetic-name>
|
||||
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
|
||||
- endpoint: <url>
|
||||
- location: <location>
|
||||
- skipDeployment: "true"
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
config:
|
||||
- CDnewComponentTag-PROD: default.json
|
||||
- CDnewComponentTag-INT: default.json
|
||||
|
||||
#Prod alerting profiles for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-PROD:
|
||||
- name: CD_lsc-wo PROD
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: PROD
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-PROD.EMEA-Prod:
|
||||
- name: CD_lsc-wo PROD
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.NA-Prod:
|
||||
- name: CD_lsc-wo PROD
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.CN-Prod:
|
||||
- name: CD_lsc-wo PROD
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
|
||||
|
||||
#INT alerting profiles for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-INT:
|
||||
- name: CD_lsc-wo INT
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-INT.EMEA-PreProd:
|
||||
- name: CD_lsc-wo INT
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.NA-PreProd:
|
||||
- name: CD_lsc-wo INT
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.CN-PreProd:
|
||||
- name: CD_lsc-wo INT
|
||||
- tag: newComponentTag
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "false"
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
{
|
||||
"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}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
## Custom metrics - Multidimensional Analysis
|
||||
|
||||
Under the Multidimensional Analysis you're able to save a view but not to create a metric. Instead, you can do it in here:
|
||||
|
||||
1. Create the metric within the Dynatrace UI using the Mutidimensional Analysis view.
|
||||
2. Save the view and create a ticket for the OPAPM team [here](link). Please provide the following information:
|
||||
- View created in the Dynatrace UI
|
||||
- Your Dynatrace configuration folder (i.e. CD_<app_name>)
|
||||
|
||||
The OPAPM team will proceed creating the metric and updating your configuration in monaco.
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
|
||||
## What is a custom service in Dynatrace?
|
||||
- *If your application's services aren't built on standard technologies, they may not be recognized out-of-the box.*
|
||||
- *You can monitor these technologies, but you'll need to define them as custom services with specific service entry points.*
|
||||
- *Another use case for custom services are microservices that are used by a larger application that aren't exposed via communication technologies.*
|
||||
|
||||
## How to create a custom service?
|
||||
1. Open the file *custom-service-java.yaml* under your *CD_<app_name>/custom-service-java* configuration folder.
|
||||
2. Use customService1 as a template. Copy and paste it below, changing the skipDeployment to "false".
|
||||
3. Fill up all the remaining inputs with the details of the endpoint you're interested to monitor. (className, methodName, etc...)
|
||||
4. Commit and pull request to merge the branch to the master:
|
||||
`git add <changes>`
|
||||
`git commit -m "<app_name> configuration changes"`
|
||||
`git push -u origin <branch>`
|
||||
5. Restart the application where the custom service has been created.
|
||||
6. Check if the custom service appears in Dynatrace.
|
||||
|
||||
Notes:
|
||||
- As this configuration needs a restart, it's better to create it in a non-Prod application.
|
||||
- The custom service will appear in Dynatrace iff there's traffic going through.
|
||||
|
||||
## What if i have multiple classes?
|
||||
1. Clone *template-1-1.json* to a new one called *template-2-1.json*.
|
||||
2. Edit *template-2-1.json* adding a 2nd rule separated with a coma.
|
||||
3. For the 2nd rule, change the name of the {{.values}} to {{.values2}} i.e.
|
||||
4. The template is ready to be used in the YAML file.
|
||||
|
||||
## What if i have multiple methods?
|
||||
1. Same process as before, just call it template-1-2.json
|
||||
2. In this way you can extend to a custom service with n classes and k methods: template-n-k.json
|
||||
|
|
@ -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"
|
||||
|
|
@ -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}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
## Update dashboard configuration
|
||||
|
||||
- Configuration changes (like in dashboards, alerting profiles) must be done via a pull request. Changing a dashboard just in the environment, will cause that it will be overwritten by Monaco.
|
||||
- How to generate changes in your dashboards?
|
||||
1. Modify the dashboard within the Dynatrace UI with the intended changes.
|
||||
2. Copy the JSON of the dashboards. (Can be found under the dashboard settings)
|
||||
3. Paste the copied JSON under the Monaco JSON, overwrite it.
|
||||
4. Commit and pull request to merge the branch to the master:
|
||||
```
|
||||
git add <changes>
|
||||
git commit -m "<app_name> configuration changes"
|
||||
git push -u origin <branch>
|
||||
```
|
||||
|
|
@ -0,0 +1,127 @@
|
|||
config:
|
||||
- CDnewComponentTag-PROD: default.json
|
||||
- CDnewComponentTag-E2E: default.json
|
||||
- CDnewComponentTag-INT: default.json
|
||||
- CDnewComponentTag-TEST: default.json
|
||||
|
||||
#PROD dashboards for EMEA/NA/CN Prod
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-PROD:
|
||||
- name: CD_lsc-wo PROD
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: PROD
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-PROD.EMEA-Prod:
|
||||
- name: CD_lsc-wo PROD
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- tag: newComponentTag
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.NA-Prod:
|
||||
- name: CD_lsc-wo PROD
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- tag: newComponentTag
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.CN-Prod:
|
||||
- name: CD_lsc-wo PROD
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- tag: newComponentTag
|
||||
- env: PROD
|
||||
- skipDeployment: "false"
|
||||
|
||||
#E2E dashboards for EMEA/NA/CN E2E
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-E2E:
|
||||
- name: CD_lsc-wo E2E
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: E2E
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-E2E.EMEA-Prod:
|
||||
- name: CD_lsc-wo E2E
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: E2E
|
||||
- tag: newComponentTag
|
||||
- skipDeployment: "true"
|
||||
CDnewComponentTag-E2E.NA-Prod:
|
||||
- name: CD_lsc-wo E2E
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: E2E
|
||||
- tag: newComponentTag
|
||||
- skipDeployment: "true"
|
||||
CDnewComponentTag-E2E.CN-Prod:
|
||||
- name: CD_lsc-wo E2E
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: E2E
|
||||
- tag: newComponentTag
|
||||
- skipDeployment: "true"
|
||||
|
||||
#INT dashboards for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-INT:
|
||||
- name: CD_lsc-wo INT
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- tag: newComponentTag
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-INT.EMEA-PreProd:
|
||||
- name: CD_lsc-wo INT
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- tag: newComponentTag
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.NA-PreProd:
|
||||
- name: CD_lsc-wo INT
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.CN-PreProd:
|
||||
- name: CD_lsc-wo INT
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: INT
|
||||
- skipDeployment: "false"
|
||||
|
||||
#TEST dashboards for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-TEST:
|
||||
- name: CD_lsc-wo TEST
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- tag: newComponentTag
|
||||
- env: TEST
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-TEST.EMEA-PreProd:
|
||||
- name: CD_lsc-wo TEST
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- tag: newComponentTag
|
||||
- env: TEST
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-TEST.NA-PreProd:
|
||||
- name: CD_lsc-wo TEST
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: TEST
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-TEST.CN-PreProd:
|
||||
- name: CD_lsc-wo TEST
|
||||
- mzName: CD_lsc-wo/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_lsc-wo/management-zone/CDnewComponentTag.id
|
||||
- env: TEST
|
||||
- skipDeployment: "false"
|
||||
|
|
@ -0,0 +1,308 @@
|
|||
{
|
||||
"metadata": {
|
||||
"configurationVersions": [
|
||||
3
|
||||
],
|
||||
"clusterVersion": "1.214.107.20210407-223952"
|
||||
},
|
||||
"dashboardMetadata": {
|
||||
"name": "{{.name}}",
|
||||
"shared": true,
|
||||
"owner": "Ignacio.Goldman@partner.bmwgroup.com",
|
||||
"dashboardFilter": {
|
||||
"timeframe": "-24h to now"
|
||||
},
|
||||
"tags": [
|
||||
"{{.tag}}"
|
||||
]
|
||||
},
|
||||
"tiles": [
|
||||
{
|
||||
"name": "Custom chart",
|
||||
"tileType": "CUSTOM_CHARTING",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 228,
|
||||
"left": 38,
|
||||
"width": 1064,
|
||||
"height": 304
|
||||
},
|
||||
"tileFilter": {},
|
||||
"filterConfig": {
|
||||
"type": "MIXED",
|
||||
"customName": "Failure rate (HTTP 4xx/5xx errors)",
|
||||
"defaultName": "Custom chart",
|
||||
"chartConfig": {
|
||||
"legendShown": true,
|
||||
"type": "TIMESERIES",
|
||||
"series": [
|
||||
{
|
||||
"metric": "builtin:service.errors.fourxx.rate",
|
||||
"aggregation": "AVG",
|
||||
"type": "BAR",
|
||||
"entityType": "SERVICE",
|
||||
"dimensions": [],
|
||||
"sortAscending": false,
|
||||
"sortColumn": false,
|
||||
"aggregationRate": "TOTAL"
|
||||
},
|
||||
{
|
||||
"metric": "builtin:service.errors.fivexx.rate",
|
||||
"aggregation": "AVG",
|
||||
"type": "BAR",
|
||||
"entityType": "SERVICE",
|
||||
"dimensions": [],
|
||||
"sortAscending": false,
|
||||
"sortColumn": true,
|
||||
"aggregationRate": "TOTAL"
|
||||
}
|
||||
],
|
||||
"resultMetadata": {
|
||||
"nullbuiltin:service.errors.fivexx.rate|AVG|TOTAL|BAR|SERVICE": {
|
||||
"lastModified": 1617956393463,
|
||||
"customColor": "#ff0000"
|
||||
},
|
||||
"nullbuiltin:service.errors.fourxx.rate|AVG|TOTAL|BAR|SERVICE": {
|
||||
"lastModified": 1617956441725,
|
||||
"customColor": "#fff29a"
|
||||
}
|
||||
}
|
||||
},
|
||||
"filtersPerEntityType": {
|
||||
"SERVICE": {
|
||||
"AUTO_TAGS": [
|
||||
"Environment:{{.env}}",
|
||||
"Component:{{.tag}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Problems",
|
||||
"tileType": "OPEN_PROBLEMS",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 38,
|
||||
"left": 950,
|
||||
"width": 152,
|
||||
"height": 152
|
||||
},
|
||||
"tileFilter": {
|
||||
"managementZone": {
|
||||
"id": "{{.mzId}}",
|
||||
"name": "{{.mzName}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Overall Health",
|
||||
"tileType": "HEADER",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 0,
|
||||
"left": 38,
|
||||
"width": 1064,
|
||||
"height": 38
|
||||
},
|
||||
"tileFilter": {}
|
||||
},
|
||||
{
|
||||
"name": "Markdown",
|
||||
"tileType": "MARKDOWN",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 532,
|
||||
"left": 38,
|
||||
"width": 1064,
|
||||
"height": 38
|
||||
},
|
||||
"tileFilter": {},
|
||||
"markdown": "---\n"
|
||||
},
|
||||
{
|
||||
"name": "Custom chart",
|
||||
"tileType": "CUSTOM_CHARTING",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 570,
|
||||
"left": 38,
|
||||
"width": 1064,
|
||||
"height": 304
|
||||
},
|
||||
"tileFilter": {},
|
||||
"filterConfig": {
|
||||
"type": "MIXED",
|
||||
"customName": "Response time, Request Count and Number of Errors",
|
||||
"defaultName": "Custom chart",
|
||||
"chartConfig": {
|
||||
"legendShown": true,
|
||||
"type": "TIMESERIES",
|
||||
"series": [
|
||||
{
|
||||
"metric": "builtin:service.response.time",
|
||||
"aggregation": "AVG",
|
||||
"type": "LINE",
|
||||
"entityType": "SERVICE",
|
||||
"dimensions": [],
|
||||
"sortAscending": false,
|
||||
"sortColumn": false,
|
||||
"aggregationRate": "TOTAL"
|
||||
},
|
||||
{
|
||||
"metric": "builtin:service.requestCount.total",
|
||||
"aggregation": "NONE",
|
||||
"type": "BAR",
|
||||
"entityType": "SERVICE",
|
||||
"dimensions": [],
|
||||
"sortAscending": false,
|
||||
"sortColumn": false,
|
||||
"aggregationRate": "TOTAL"
|
||||
},
|
||||
{
|
||||
"metric": "builtin:service.errors.total.count",
|
||||
"aggregation": "NONE",
|
||||
"type": "BAR",
|
||||
"entityType": "SERVICE",
|
||||
"dimensions": [],
|
||||
"sortAscending": false,
|
||||
"sortColumn": true,
|
||||
"aggregationRate": "TOTAL"
|
||||
}
|
||||
],
|
||||
"resultMetadata": {
|
||||
"nullbuiltin:service.requestCount.total|NONE|TOTAL|BAR|SERVICE": {
|
||||
"lastModified": 1595275720776,
|
||||
"customColor": "#008cdb"
|
||||
},
|
||||
"nullbuiltin:service.errors.total.count|NONE|TOTAL|BAR|SERVICE": {
|
||||
"lastModified": 1595275955999,
|
||||
"customColor": "#ef651f"
|
||||
},
|
||||
"nullbuiltin:service.response.time|AVG|TOTAL|LINE|SERVICE": {
|
||||
"lastModified": 1595275686773,
|
||||
"customColor": "#b4e5f9"
|
||||
}
|
||||
}
|
||||
},
|
||||
"filtersPerEntityType": {
|
||||
"SERVICE": {
|
||||
"AUTO_TAGS": [
|
||||
"Environment:{{.env}}",
|
||||
"Component:{{.tag}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown",
|
||||
"tileType": "MARKDOWN",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 190,
|
||||
"left": 38,
|
||||
"width": 1064,
|
||||
"height": 38
|
||||
},
|
||||
"tileFilter": {},
|
||||
"markdown": "---\n"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"tileType": "DATABASES_OVERVIEW",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 38,
|
||||
"left": 646,
|
||||
"width": 190,
|
||||
"height": 152
|
||||
},
|
||||
"tileFilter": {},
|
||||
"filterConfig": {
|
||||
"type": "DATABASE",
|
||||
"customName": "Databases",
|
||||
"defaultName": "Databases",
|
||||
"chartConfig": {
|
||||
"legendShown": true,
|
||||
"type": "TIMESERIES",
|
||||
"series": [],
|
||||
"resultMetadata": {}
|
||||
},
|
||||
"filtersPerEntityType": {
|
||||
"DATABASE": {
|
||||
"AUTO_TAGS": [
|
||||
"Environment:{{.env}}",
|
||||
"Component:{{.tag}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"chartVisible": true
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"tileType": "SERVICES",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 38,
|
||||
"left": 342,
|
||||
"width": 190,
|
||||
"height": 152
|
||||
},
|
||||
"tileFilter": {},
|
||||
"filterConfig": {
|
||||
"type": "SERVICE",
|
||||
"customName": "Services",
|
||||
"defaultName": "Services",
|
||||
"chartConfig": {
|
||||
"legendShown": true,
|
||||
"type": "TIMESERIES",
|
||||
"series": [],
|
||||
"resultMetadata": {}
|
||||
},
|
||||
"filtersPerEntityType": {
|
||||
"SERVICE": {
|
||||
"AUTO_TAGS": [
|
||||
"Environment:{{.env}}",
|
||||
"Component:{{.tag}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"chartVisible": true
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"tileType": "HOSTS",
|
||||
"configured": true,
|
||||
"bounds": {
|
||||
"top": 38,
|
||||
"left": 38,
|
||||
"width": 190,
|
||||
"height": 152
|
||||
},
|
||||
"tileFilter": {},
|
||||
"filterConfig": {
|
||||
"type": "HOST",
|
||||
"customName": "Hosts",
|
||||
"defaultName": "Hosts",
|
||||
"chartConfig": {
|
||||
"legendShown": true,
|
||||
"type": "TIMESERIES",
|
||||
"series": [],
|
||||
"resultMetadata": {}
|
||||
},
|
||||
"filtersPerEntityType": {
|
||||
"HOST": {
|
||||
"AUTO_TAGS": [
|
||||
"Environment:{{.env}}",
|
||||
"Component:{{.tag}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"chartVisible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
## Management Zones configuration
|
||||
|
||||
### Excluding noisy services
|
||||
|
||||
*If you find services that are not relevant for the analysis, you can exclude them from the MZ.*
|
||||
|
||||
#### HealthResource, PingResource, PrometheusResource services
|
||||
|
||||
*After the deployment of the OneAgent, your services should appear under Transactions & Services. A good practice would be to exclude*
|
||||
*the ones that are not relevant for monitoring. i.e. For some BMW's teams, HealthResource, PingResource, PrometheusResource have been excluded.*
|
||||
|
||||
**How to exclude HealthResource?**
|
||||
1. Open the file *default.json* configuration under the *CD_<app_name>/management-zone/* folder.
|
||||
2. Copy the following rule template:
|
||||
```
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"caseSensitive": true,
|
||||
"negate": true,
|
||||
"operator": "CONTAINS",
|
||||
"type": "STRING",
|
||||
"value": "HealthResource"
|
||||
},
|
||||
"key": {
|
||||
"attribute": "SERVICE_NAME"
|
||||
}
|
||||
}
|
||||
```
|
||||
2. Add it under the `"type": "SERVICE"` rule's conditions. It should look like this:
|
||||
```
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"negate": false,
|
||||
"operator": "EQUALS",
|
||||
"type": "TAG",
|
||||
"value": {
|
||||
"context": "CONTEXTLESS",
|
||||
"key": "Component",
|
||||
"value": "{{.tag}}"
|
||||
},
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"caseSensitive": true,
|
||||
"negate": true,
|
||||
"operator": "CONTAINS",
|
||||
"type": "STRING",
|
||||
"value": "HealthResource"
|
||||
},
|
||||
"key": {
|
||||
"attribute": "SERVICE_NAME"
|
||||
}
|
||||
}
|
||||
},
|
||||
"key": {
|
||||
"attribute": "SERVICE_TAGS"
|
||||
}
|
||||
}
|
||||
],
|
||||
"enabled": true,
|
||||
"propagationTypes": [
|
||||
"SERVICE_TO_PROCESS_GROUP_LIKE",
|
||||
"SERVICE_TO_HOST_LIKE"
|
||||
],
|
||||
"type": "SERVICE"
|
||||
}
|
||||
```
|
||||
|
||||
3. Commit and pull request to merge the branch to the master:
|
||||
```
|
||||
git add <changes>
|
||||
git commit -m "<app_name> configuration changes"
|
||||
git push -u origin <branch>
|
||||
```
|
||||
Note: you can use the same logic to exclude (or include) any other entity to your Management Zone.
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
"dimensionalRules": [],
|
||||
"name": "{{.name}}",
|
||||
"rules": [
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"negate": false,
|
||||
"operator": "EQUALS",
|
||||
"type": "TAG",
|
||||
"value": {
|
||||
"context": "CONTEXTLESS",
|
||||
"key": "Component",
|
||||
"value": "{{.tag}}"
|
||||
}
|
||||
},
|
||||
"key": {
|
||||
"attribute": "SERVICE_TAGS"
|
||||
}
|
||||
}
|
||||
],
|
||||
"enabled": true,
|
||||
"propagationTypes": [
|
||||
"SERVICE_TO_PROCESS_GROUP_LIKE",
|
||||
"SERVICE_TO_HOST_LIKE"
|
||||
],
|
||||
"type": "SERVICE"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"negate": false,
|
||||
"operator": "EQUALS",
|
||||
"type": "TAG",
|
||||
"value": {
|
||||
"context": "CONTEXTLESS",
|
||||
"key": "Component",
|
||||
"value": "{{.tag}}"
|
||||
}
|
||||
},
|
||||
"key": {
|
||||
"attribute": "PROCESS_GROUP_TAGS"
|
||||
}
|
||||
}
|
||||
],
|
||||
"enabled": true,
|
||||
"propagationTypes": [
|
||||
"PROCESS_GROUP_TO_HOST"
|
||||
],
|
||||
"type": "PROCESS_GROUP"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"comparisonInfo": {
|
||||
"negate": false,
|
||||
"operator": "EQUALS",
|
||||
"type": "TAG",
|
||||
"value": {
|
||||
"context": "CONTEXTLESS",
|
||||
"key": "Component",
|
||||
"value": "{{.tag}}"
|
||||
}
|
||||
},
|
||||
"key": {
|
||||
"attribute": "HOST_TAGS"
|
||||
}
|
||||
}
|
||||
],
|
||||
"enabled": true,
|
||||
"type": "HOST"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
config:
|
||||
- CDnewComponentTag: default.json
|
||||
|
||||
CDnewComponentTag:
|
||||
- name: CD_lsc-wo
|
||||
- tag: newComponentTag
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
|
||||
## Configure Notification System
|
||||
|
||||
### MS Teams - Default
|
||||
|
||||
*Let's suppose you would like to start receiving alerts from Dynatrace via MS Teams just for your *EMEA PROD*.*
|
||||
|
||||
1. Open *notification.yaml* under your application configuration folder. By default, all notification systems are configured via MS Teams with an
|
||||
https://empty webhook (not configured).
|
||||
2. Create an incoming webhook in MS Teams. [How to?](https://www.dynatrace.com/support/help/shortlink/set-up-msteams-integration#configuration-in-microsoft-teams)
|
||||
3. Add the incoming webhook under the webhook parameter for the `<app_name>-PROD.EMEA-Prod`:
|
||||
```
|
||||
<app_name>-PROD.EMEA-Prod:
|
||||
- name: CD_<app_name> PROD
|
||||
- alertingProfile: CD_<app_name>/alerting-profile/CD<app_name>-PROD.id
|
||||
- webhook: <Add webhook here>
|
||||
- skipDeployment: "false"
|
||||
```
|
||||
4. Save and commit changes:
|
||||
```
|
||||
git add <changes>
|
||||
git commit -m "<app_name> configuration changes"
|
||||
git push -u origin <branch>
|
||||
```
|
||||
Note: If you want to enable MS Teams for any other hub/stage, follow the same steps but make sure you're under the right configuration:
|
||||
`<app_name>-<stage>.<dynatrace-env>-<stage>:`
|
||||
|
||||
### Email
|
||||
|
||||
*The team prefers to be alerted via email, not MS Teams*
|
||||
|
||||
1. Keep the MS Teams integration disabled, with the https://empty webhook:
|
||||
```
|
||||
<app_name>-PROD.EMEA-Prod:
|
||||
- name: CD_<app_name> PROD
|
||||
- alertingProfile: CD_<app_name>/alerting-profile/CD<app_name>-PROD.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
```
|
||||
2. Create a new configuration template under config, using the email template:
|
||||
```
|
||||
config:
|
||||
- CD<app_name>email: email.json
|
||||
```
|
||||
3. Describe the configuration below, using the following template:
|
||||
```
|
||||
CD<app_name>email.EMEA-Prod:
|
||||
- name: CD_<app_name> PROD
|
||||
- alertingProfile: CD_<app_name>/alerting-profile/CD<app_name>-PROD.id
|
||||
- receivers: distributionEmailexample@bmw.de`
|
||||
```
|
||||
4. Save and commit changes:
|
||||
```
|
||||
git add <changes>
|
||||
git commit -m "<app_name> configuration changes"
|
||||
git push -u origin <branch>
|
||||
```
|
||||
|
||||
### ITSM
|
||||
Coming soon!
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"active": true,
|
||||
"alertingProfile": "{{.alertingProfile}}",
|
||||
"bccReceivers": [],
|
||||
"body": "{ProblemDetailsHTML}",
|
||||
"ccReceivers": [],
|
||||
"name": "{{.name}}",
|
||||
"receivers": [
|
||||
"{{.receivers}}"
|
||||
],
|
||||
"subject": "{State} Problem {ProblemID}: {ImpactedEntity}",
|
||||
"type": "EMAIL"
|
||||
}
|
||||
|
|
@ -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}}"
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
config:
|
||||
- CDnewComponentTag-PROD: msTeams.json
|
||||
- CDnewComponentTag-INT: msTeams.json
|
||||
|
||||
#Prod notification system for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-PROD:
|
||||
- name: CD_lsc-wo PROD
|
||||
- alertingProfile: CD_lsc-wo/alerting-profile/CDnewComponentTag-PROD.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-PROD.EMEA-Prod:
|
||||
- name: CD_lsc-wo PROD
|
||||
- alertingProfile: CD_lsc-wo/alerting-profile/CDnewComponentTag-PROD.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.NA-Prod:
|
||||
- name: CD_lsc-wo PROD
|
||||
- alertingProfile: CD_lsc-wo/alerting-profile/CDnewComponentTag-PROD.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-PROD.CN-Prod:
|
||||
- name: CD_lsc-wo PROD
|
||||
- alertingProfile: CD_lsc-wo/alerting-profile/CDnewComponentTag-PROD.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
|
||||
#INT notification system for EMEA/NA/CN
|
||||
#Dry-run needed for all hubs
|
||||
CDnewComponentTag-INT:
|
||||
- name: CD_lsc-wo INT
|
||||
- alertingProfile: CD_lsc-wo/alerting-profile/CDnewComponentTag-INT.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "true"
|
||||
#Configuration
|
||||
CDnewComponentTag-INT.EMEA-PreProd:
|
||||
- name: CD_lsc-wo INT
|
||||
- alertingProfile: CD_lsc-wo/alerting-profile/CDnewComponentTag-INT.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.NA-PreProd:
|
||||
- name: CD_lsc-wo INT
|
||||
- alertingProfile: CD_lsc-wo/alerting-profile/CDnewComponentTag-INT.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
CDnewComponentTag-INT.CN-PreProd:
|
||||
- name: CD_lsc-wo INT
|
||||
- alertingProfile: CD_lsc-wo/alerting-profile/CDnewComponentTag-INT.id
|
||||
- webhook: https://empty
|
||||
- skipDeployment: "false"
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
# Synthetic Configuration
|
||||
|
||||
To calculate the Availability KPI, a synthetic must be configured.
|
||||
|
||||
1. Modify the synthetic-monitor.yaml file, providing:
|
||||
- **Endpoint**: url intended to check the availability.
|
||||
- **Location**:
|
||||
- *synthetic private location*: If the endpoint is reachable within the BMW network.
|
||||
```
|
||||
- location: BMW-Dynatrace-config/00_Global-Config/synthetic-location/BMW-AWS-Frankfurt.id
|
||||
```
|
||||
- *synthetic public location*: If the endpoint is reachable from the internet.
|
||||
```
|
||||
- location: GEOLOCATION-45AB48D9D6925ECC
|
||||
```
|
||||
2. Change `skipDeployment` to false.
|
||||
|
||||
i.e.
|
||||
```
|
||||
config:
|
||||
- my-synthetic: default.json
|
||||
|
||||
my-synthetic:
|
||||
- name: CD_BMW - bmw.com
|
||||
- mzName: CD_google/management-zone/CDgoogle.name
|
||||
- mzId: CD_google/management-zone/CDgoogle.id
|
||||
- endpoint: https://google.com
|
||||
- location: GEOLOCATION-45AB48D9D6925ECC
|
||||
- skipDeployment: "false"
|
||||
```
|
||||
|
||||
3. Commit and pull request to merge the branch to the master:
|
||||
```
|
||||
git add <changes>
|
||||
git commit -m "<app_name> configuration changes"
|
||||
git push -u origin <branch>
|
||||
```
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
{
|
||||
"anomalyDetection": {
|
||||
"loadingTimeThresholds": {
|
||||
"enabled": false,
|
||||
"thresholds": [
|
||||
{
|
||||
"type": "TOTAL",
|
||||
"valueMs": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"outageHandling": {
|
||||
"globalOutage": true,
|
||||
"localOutage": false,
|
||||
"localOutagePolicy": {
|
||||
"affectedLocations": 1,
|
||||
"consecutiveRuns": 3
|
||||
}
|
||||
}
|
||||
},
|
||||
"automaticallyAssignedApps": [],
|
||||
"enabled": true,
|
||||
"frequencyMin": 1,
|
||||
"locations": [
|
||||
"{{.location}}"
|
||||
],
|
||||
"managementZones": [
|
||||
{
|
||||
"id": "{{.mzId}}",
|
||||
"name": "{{.mzName}}"
|
||||
}
|
||||
],
|
||||
"manuallyAssignedApps": [],
|
||||
"name": "{{.name}}",
|
||||
"requests": [
|
||||
{
|
||||
"entityId": "HTTP_CHECK_STEP-0BA53EC80CD7EE5A",
|
||||
"name": "{{.name}}",
|
||||
"sequenceNumber": 1
|
||||
}
|
||||
],
|
||||
"script": {
|
||||
"requests": [
|
||||
{
|
||||
"configuration": {
|
||||
"acceptAnyCertificate": true,
|
||||
"followRedirects": true,
|
||||
"requestHeaders": [
|
||||
{
|
||||
"name": "accept",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "api_key",
|
||||
"value": "355DE89C-7B72-4EA3-BDD8-157C79EB2C23"
|
||||
}
|
||||
]
|
||||
},
|
||||
"description": "{{.name}}",
|
||||
"method": "GET",
|
||||
"url": "{{.endpoint}}",
|
||||
"validation": {
|
||||
"rules": [
|
||||
{
|
||||
"passIfFound": true,
|
||||
"type": "httpStatusesList",
|
||||
"value": "200"
|
||||
}
|
||||
],
|
||||
"rulesChaining": "or"
|
||||
}
|
||||
}
|
||||
],
|
||||
"version": "1.0"
|
||||
},
|
||||
"tags": [],
|
||||
"type": "HTTP"
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
config:
|
||||
- newComponentTag: default.json
|
||||
|
||||
newComponentTag:
|
||||
- name: CD_managementZone - <synthetic-name>
|
||||
- mzName: CD_managementZone/management-zone/CDnewComponentTag.name
|
||||
- mzId: CD_managementZone/management-zone/CDnewComponentTag.id
|
||||
- endpoint: <url>
|
||||
- location: <location>
|
||||
- skipDeployment: "true"
|
||||
Loading…
Reference in New Issue