1. Pourquoi Monaco ? #
Fini les clics non tracés.
Principe #
Monaco (Monitoring as Code) est l'outil en ligne de commande de Dynatrace pour décrire la configuration (zones de gestion, alertes, tags automatiques, tableaux de bord, SLO, workflows...) en fichiers YAML et JSON, puis la déployer de façon reproductible sur un ou plusieurs environnements.
Dynatrace propose aussi un fournisseur Terraform ; Monaco reste l'outil natif, adapté aux équipes qui veulent dupliquer une configuration entre environnements.
2. Authentification #
Jetons et clients OAuth.
Accès #
| Type | Usage | Création |
|---|---|---|
| Jeton d'API | API d'environnement (configurations classiques, settings) | Access tokens, avec uniquement les permissions nécessaires (lecture/écriture des settings et configurations) |
| Client OAuth | API de la plateforme (documents, workflows, buckets, SLO récents) | Account Management > Identity & access > OAuth clients |
Erreur Courante : Ne commitez jamais un jeton : Monaco lit les secrets dans des variables d'environnement, fournies par le coffre de la CI.
3. Manifeste, projets et commandes #
La structure d'un dépôt Monaco.
manifest.yaml #
manifestVersion: 1.0
projects:
- name: socle
environmentGroups:
- name: production
environments:
- name: prod-eu
url: { type: environment, value: DT_URL }
auth:
token: { name: DT_TOKEN }
oAuth:
clientId: { name: OAUTH_CLIENT_ID }
clientSecret: { name: OAUTH_CLIENT_SECRET }# socle/zones/config.yaml
configs:
- id: mz-boutique
config:
name: Boutique
template: mz.json
parameters:
environnement: prod
type:
settings:
schema: builtin:management-zones
scope: environmentmonaco download --manifest manifest.yaml --environment prod-eu # récupérer l'existant
monaco deploy manifest.yaml --dry-run # valider sans rien changer
monaco deploy manifest.yaml --environment prod-eu # appliquer
monaco delete --manifest manifest.yaml --file delete.yaml # supprimer proprementBonne Pratique : Commencez par monaco download sur un environnement existant : vous obtenez immédiatement des exemples réels de chaque type de configuration.4. CI/CD #
Déployer automatiquement.
Image Docker et pipelines #
FROM alpine:3.20
ARG MONACO_VERSION=v2.15.0 # choisir la dernière version publiée
RUN apk add --no-cache curl ca-certificates \
&& curl -fsSL -o /usr/local/bin/monaco \
https://github.com/Dynatrace/dynatrace-configuration-as-code/releases/download/${MONACO_VERSION}/monaco-linux-amd64 \
&& chmod +x /usr/local/bin/monaco
ENTRYPOINT ["monaco"]# .gitlab-ci.yml
stages: [verifier, deployer]
verifier:
stage: verifier
image: registry.example.org/outils/monaco:latest
script: [monaco deploy manifest.yaml --dry-run]
deployer:
stage: deployer
image: registry.example.org/outils/monaco:latest
script: [monaco deploy manifest.yaml --environment prod-eu]
rules: [{ if: '$CI_COMMIT_BRANCH == "main"' }]# .github/workflows/monaco.yml (extrait)
- name: Déployer la configuration Dynatrace
run: monaco deploy manifest.yaml --environment prod-eu
env:
DT_URL: ${{ secrets.DT_URL }}
DT_TOKEN: ${{ secrets.DT_TOKEN }}
OAUTH_CLIENT_ID: ${{ secrets.OAUTH_CLIENT_ID }}
OAUTH_CLIENT_SECRET: ${{ secrets.OAUTH_CLIENT_SECRET }}À savoir : Le projet « Dynatrace Simply Smarter » et les exemples officiels du dépôt dynatrace-configuration-as-code-samples fournissent des configurations prêtes à adapter.