- Install the Monaco (docs)
- Prepare the API token with permissions
- CaptureRequestData
- credentialVault.read
- credentialVault.write
- DataExport
- ReadConfig
- settings.read
- settings.write
- WriteConfig
- Prepare OAuthClient
- app-engine:apps:run
- app-engine:apps:install
- automation:calendars:read
- automation:calendars:write
- automation:rules:write
- automation:rules:read
- automation:workflows:run
- automation:workflows:write
- automation:workflows:read
- settings:schemas:read
- settings:objects:write
- settings:objects:read
- Set the env vars for tenant
- TENANT_URL - base url of tenant (eg. https://abc1234.apps.dynatrace.com)
NOTE: when using oAuth client this must be a new Dynatrace (platform) url
- TENANT_TOKEN - API token prepared earlier
- CLIENT_ID - oauth client id
- CLIENT_SECRET - oauth client secret
- DOMAIN - URL of EasyTrade used for application detection
- SLACK_TOKEN - Slack bot token used in the Easytrade validation workflow
- SLACK_CHANNEL - Slack channel ID used in the Easytrade validation workflow
- TENANT_URL - base url of tenant (eg. https://abc1234.apps.dynatrace.com)
NOTE: This configuration contains
allowed-outbound-connectionssettings which is a singleton. Which means if you deploy it, it will override your existing configuration.
If you have outbound connections defined, before deploying this config either back it up:
monaco download --manifest manifest.yaml -e dev -s builtin:dt-javascript-runtime.allowed-outbound-connectionsor add it to this configuration.
The list of available environments and projects can be found in manifest.yaml
# to deploy a project to environment
monaco deploy manifest.yaml -e {{environment-name}} -p {{project-name}}
# when a project is marked as GROUPING
# you can deploy all it's configs at once
monaco deploy manifest.yaml -e staging -p easytrade-validation
# or choose to deploy any individual part of it
monaco deploy mainfest.yaml -e staging -p easytrade-validation.workflows -p easytrade-validation.site-reliability-guardiansNOTE: only 1 level of project nesting is supported for the grouping type
NOTE: If you want to exclude some parts of the configuration, change
skip: falsetoskip: truein correspondingconfig.yaml.
The tokens and oauth clients are provided via env variables, one possible way to make it more manageable is to create .env file (or multiple files) which can then be used to load those envs.
You can use the
.env.exampleas a template for your.envfile. NOTE: don't update it directly as it's tracked by git and you may end up pushing secrets to repository.
# if you followed the .env.example template you can load envs like this
source .env
monaco deploy ...monaco download --manifest manifest.yaml --environment dev \
-s builtin:bizevents.http.incoming \
-s builtin:bizevents-processing-metrics.rule \
-s builtin:bizevents-processing-pipelines.rulemonaco generate deletefile manifest.yaml
monaco deleteAll bizevents are defined according to these rules:
- rule name:
- request to nginx proxy:
EasyTrade [nginx] - {HTTP method} {endpoint} - request to every other service
EasyTrade [{service-name} | {technology}] - {HTTP method} {endpoint}
- request to nginx proxy:
- triggers: both request
HTTP methodandpath - event provider:
www.easytrade.com - event type:
- request to nginx proxy:
com.easytrade.nginx.{name} - request to every other service:
com.easytrade.{name}
- request to nginx proxy:
- event category:
request path
Example:
- rule name:
EasyTrade [broker-service | .NET] - POST /v1/trade/long/buy - triggers:
HTTP Method equals 'POST'andPath starts with '/v1/trade/long/buy' - event provider:
www.easytrade.com - event type:
com.easytrade.long-buy - event category:
request path(/v1/trade/long/buy)