RousselTMLEARNING

Observabilité

Configuration as Code avec Monaco : tokens, OAuth, projets et CI/CD

Gérer la configuration Dynatrace comme du code avec Monaco : jetons d'API et clients OAuth, manifeste, projets et configurations, téléchargement, déploiement, image Docker et pipelines GitHub Actions et GitLab CI.

1. Pourquoi Monaco ? #

Fini les clics non tracés.

Principe #

Cycle Monaco
La même configuration peut être déployée sur plusieurs environnements.

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 #

TypeUsageCréation
Jeton d'APIAPI d'environnement (configurations classiques, settings)Access tokens, avec uniquement les permissions nécessaires (lecture/écriture des settings et configurations)
Client OAuthAPI 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: environment
monaco 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 proprement
Bonne 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.

Articles liés

ActiveGate et network zones : architecture, routage et haute disponibilité

Comprendre et déployer ActiveGate dans Dynatrace : rôles (routage, API, intégrations cloud, extensions, empla…

Dynatrace Operator sur Kubernetes : DynaKube, modes de supervision et dépannage

Superviser Kubernetes avec le Dynatrace Operator : installation Helm, ressource DynaKube, modes cloudNativeFu…

OpenTelemetry et Dynatrace : OTLP, collecteur et instrumentation

Intégrer OpenTelemetry à Dynatrace : endpoint OTLP et jetons, Dynatrace OTel Collector, traces, métriques (te…

Pour aller plus loin