diff --git a/README.md b/README.md index 0b7bddca..555ff2c5 100644 --- a/README.md +++ b/README.md @@ -1,53 +1,79 @@ - # BMW Monaco -## Overview -- **BMW-Dynatrace-config/**: Contains the configuration of all Dynatrace tenants. - - Composed by: - - Global config folder (**00_Global_Config**): contains configuration not related to any components in specific. - - Component config folder (**CD_Component**): contains configuration related to a speficic component. -- **Environment.yaml**: Contains the information about all BMW's tenants. -- **bin/monaco**: executable. -- **onboarding/CD_newComponentTag**: template for new onboardings. -- **onboard.sh**: onboarding script. (To be replaced by pipeline, used for local onboardings) -## Get Started -1. Clone repository in your local machine -2. Define environmental variables for the environment.yaml file. +## Dynatrace - Get Started! + +If you and your team want to monitor BMW's applications with Dynatrace, please follow these steps: + +1. Make sure you have access to Dynatrace. +2. Clone this repository in your local machine. With this repo, you will be able to handle all the configuration of your application within Dynatrace. +3. Create a branch of the repo with the following name format: CD_"ApplicationName" + - ApplicationName should have the value of the provided annotation/property DT_CUSTOM_PROP. +5. Execute the onboard.sh script with the following parameters: +*./onboard.sh CD_"ApplicationName" "ApplicationName"* +i.e. +*./onboard.sh CD_Infotainment Infotainment* + +The script will automatically create: +- Management Zone: Used to filter entities. Can be used when navigating in the environment, creating dashboards and alerting profiles. +- Dashboards (PROD, E2E, INT): Based on a template, an initial dashboard with a general overview of the health of the application. +- Alerting Profile (PROD, E2E, INT): It's used to filter specific problems of your applications. +- Notification System: linked to your alerting profile to notify via email, MS Teams, ITSM, etc. + +4. Open the notification.yaml under the notification folder and add the webhook of the MS Teams you want to be notified +How to create an MS Teams webhook: https://www.dynatrace.com/support/help/shortlink/set-up-msteams-integration#configuration-in-microsoft-teams +5. Open the Component.json file (https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/cd_e2e_monitoring_config/browse/BMW-Dynatrace-config/00_Global-Config/auto-tag/Component.json) and add a rule for your DB +6. Commit and pull request to merge the branch to the master. + +Recommended: participate in one of the trainings given by a Dynatrace expert to understand how to use the tool in the most efficient way and the following configuration: + +7. (optional) Custom services +8. (optional) Request Attributes +9. (optional) Custom metrics +10. (optional) Synthetics? +11. (optional) Naming Rules (Services / Process Groups) + +Important! All changes (in dashboards, alerting profiles or any type of configuration) must be done via a pull request. Changing a dashboard just in the environment, will cause that it will be overwritten by Monaco. + +If you have any problems in the steps mentioned above, please contact opapm@bmw.de + +## (Dynatrace Admins) Testing Monaco - Tokens needed + +This guide contain the steps to set up monaco and automatically onboard and application called "ABC" under the MZ "CD_ABC" +1. Clone repository in your local machine. +2. Define environment variables for the environment.yaml file. i.e. *export xxu26128_TOKEN= Dynatrace API token* Do the same for the rest of the environments. Follow [this](https://www.dynatrace.com/support/help/shortlink/api-authentication#generate-a-token) link to learn how to generate a token in Dynatrace. 3. *mv bin/monaco /usr/bin* - -## Update configuration -1. Execute the following command: -*monaco --environments="environment.yaml" -p="CD_Component-Template" BMW-Dynatrace-config/* - - Under -p you can select the configuration you want to update - -## Onboard a new application -1. Run the following command to create a folder under BMW-Dynatrace-config with a template configuration for the new application to be onboarded: -*./onboard.sh ManagementZone Tag* -i.e. +4. Execute the onboard.sh script with the following parameters: +*./onboard.sh CD_ ApplicationName* *./onboard.sh CD_ABC ABC* -2. Execute monaco: -*monaco --environments="environment.yaml" -p="CD_ABC" BMW-Dynatrace-config/* -3. To remove all CD_ABC configuration: +5. To remove all CD_ABC configuration: 1. Uncomment CD_ABC lines from delete.yaml. - 2. Execute monaco again to apply changes from delete.yaml: *monaco --environments="environment.yaml" -p="CD_ABC" BMW-Dynatrace-config/* - 2. Remove CD_ABC configuration folder + 2. Execute monaco again to apply changes from delete.yaml: *monaco deploy -e="environment.yaml" -p="CD_ABC" BMW-Dynatrace-config/* + 3. Remove CD_ABC configuration folder + ### Results - CD_ABC Management Zone created containing all entities with ABC tag. - PROD/E2E/INT Dashboards for CD_ABC components. - PROD/E2E/INT Alerting Profiles for CD_ABC components. - -## Debugging +### Update configuration +1. Execute the following command: +*monaco deploy -e="environment.yaml" -p="00_Global-Config" BMW-Dynatrace-config/* + - Under -p you can select the configuration you want to update + +### Debugging - set environment variable MONACO_REQUEST_LOG=mylogfile.log to see what exactly gets sent to DT - -## Download configuration +### Download configuration Configuration has been downloaded and set up under BMW-Dynatrace-config. It's not necessary to be downloaded again. -1. execute the following command: - *monaco -e environment.yaml -download* +To download the existing configuration for all tenants, execute the following commands: + 1. cd downloaded-config + 2. *monaco download -e='../environment.yaml'* +To download the existing configuration for a specific tenant, execute the following commands: + 1. cd downloaded-config + 2. *monaco download -e='../environment.yaml' -s EMEA-Prod* -## Automatic config environment variables +### Automatic config environment variables - source ./exports.sh \ No newline at end of file