From 41c8db422923cae1943453a7fe3ffa6fea0e4218 Mon Sep 17 00:00:00 2001 From: SoTrx <--> Date: Tue, 21 Feb 2023 17:16:27 +0100 Subject: [PATCH] [Lab 2 - monitoring ] Update to docker compose v2 --- instructions/_entries/03-05 monitoring.md | 15 ++-- src/Lab2/5-metrics/docker-compose.yml | 83 ++--------------------- 2 files changed, 13 insertions(+), 85 deletions(-) diff --git a/instructions/_entries/03-05 monitoring.md b/instructions/_entries/03-05 monitoring.md index 3c7a375..42d89ec 100644 --- a/instructions/_entries/03-05 monitoring.md +++ b/instructions/_entries/03-05 monitoring.md @@ -58,7 +58,8 @@ En plus du déploiement de Zipkin en lui-même, la configuration de Dapr est app Dans un contexte Kubernetes, la configuration serait appliquée à l'aide d'un `kubectl apply -f config-tracing.yml` {% endcollapsible %} -Déployez `src/Lab2/4-observability/docker-compose.yml` et passez quelques commandes via l'interface. Naviguez à l'adresse `localhost:9415` pour vous rendre sur l'interface de Zipkin. Dans l'onglet "dépendances", prenez une plage large (ex: [j-1, j+1]) et observez le diagramme. +Déployez `src/Lab2/4-observability/docker-compose.yml` à l'aide de la commande suivante +et passez quelques commandes via l'interface. Naviguez à l'adresse `localhost:9415` pour vous rendre sur l'interface de Zipkin. Dans l'onglet "dépendances", prenez une plage large (ex: [j-1, j+1]) et observez le diagramme. > **Question** : Quels sont les services affichés ? Comment ces services communiquent-ils ? @@ -137,18 +138,18 @@ Solution: On observe que les métriques présentes sont celles des latences et des composants. -L'utilisation CPU/RAM n'est elle pas renseignée pour cet exemple. En effet, ces données sont extrapolées à partir des [métriques Kubernetes](https://github.com/kubernetes/kubernetes/blob/master/test/instrumentation/testdata/stable-metrics-list.yaml), qui ne sont pas présentes dans un contexte docker-compose +L'utilisation CPU/RAM n'est elle pas renseignée pour cet exemple. En effet, ces données sont extrapolées à partir des [métriques Kubernetes](https://github.com/kubernetes/kubernetes/blob/master/test/instrumentation/testdata/stable-metrics-list.yaml), qui ne sont pas présentes dans un contexte docker compose {% endcollapsible %} -##### Par curiosité : Quelques détails sur Prometheus et docker-compose +##### Par curiosité : Quelques détails sur Prometheus et docker compose -Le déploiement de cette section n'est pas expliqué à proprement parler, seulement exécuté. La raison à cela est que faire fonctionner Prometheus avec Dapr sur docker-compose demande d'utiliser une configuration particulière qui n'a pas sa place dans un scénario de production. +Le déploiement de cette section n'est pas expliqué à proprement parler, seulement exécuté. La raison à cela est que faire fonctionner Prometheus avec Dapr sur docker compose demande d'utiliser une configuration particulière qui n'a pas sa place dans un scénario de production. En effet, les métriques de Dapr sont émises par chaque sidecar sur leur port respectif 9090 (par défaut). Dans le contexte d'une utilisation sur Kubernetes ou sans orchestrateur, chaque sidecar émettrait sur le même endpoint sur le port 9090. Il n'y aurait plus qu'alors qu'à renseigner ce endpoint dans Prometheus. -Cependant, la gestion des [docker networks](https://docs.docker.com/network/) dans docker-compose ne permet pas à chaque sidecar d'émettre sur le même endpoint. Afin de retrouver le comportement voulu, il faut alors lister explicitement chacun des services dans la configuration de Prometheus. +Cependant, la gestion des [docker networks](https://docs.docker.com/network/) dans docker compose ne permet pas à chaque sidecar d'émettre sur le même endpoint. Afin de retrouver le comportement voulu, il faut alors lister explicitement chacun des services dans la configuration de Prometheus. ```yml global: @@ -271,7 +272,7 @@ Une ligne de log a cette forme "level": ["info"], // Meta -> Temps de reception de la ligne de log "@timestamp": ["2022-07-04T13:37:51.345Z"], - // Meta -> Nom du conteneur vu par docker-compose + // Meta -> Nom du conteneur vu par docker compose "container_name": ["/6-logs_order-processing-dapr_1"], // Meta -> UUID du conteneur docker "container_id": [ @@ -308,6 +309,6 @@ Dapr est ensuite configuré pour afficher les logs en format JSON sur stdout ave + tag: httpd.access ``` -Cette méthode étant propre à l'orchestrateur docker-compose, elle n'est pas détaillée dans le coeur de l'activité. +Cette méthode étant propre à l'orchestrateur docker compose, elle n'est pas détaillée dans le coeur de l'activité. Sur Kubernetes le déploiement serait toutefois similaire. Il suffirait en effet de déployer FluentD sur le cluster et d'ajouter l'annotation `log-as-json` au déploiement des services pour obtenir le même resultat. Un tutoriel complet est disponible [sur le site de Dapr](https://docs.dapr.io/operations/monitoring/logging/fluentd/). diff --git a/src/Lab2/5-metrics/docker-compose.yml b/src/Lab2/5-metrics/docker-compose.yml index bded07b..e0ed927 100644 --- a/src/Lab2/5-metrics/docker-compose.yml +++ b/src/Lab2/5-metrics/docker-compose.yml @@ -1,19 +1,13 @@ -version: '3' services: ############################ # Frontend ############################ command-frontend: image: dockerutils/command-frontend - #build: ../implementations/command-frontend ports: - "8089:80" environment: - COMMAND_API_HOST=command-api - depends_on: - - redis - networks: - - hello-dapr ############################ # Command API @@ -22,27 +16,19 @@ services: image: dockerutils/command-api expose: - 9090 - #build: ../implementations/command-api - networks: - - hello-dapr environment: - PUB_URL=http://localhost:3500/v1.0/publish/order-pub-sub/orders - depends_on: - - redis command-api-dapr: image: "daprio/daprd:edge" command: ["./daprd", "-app-id", "command-api", "-app-port", "80", - "-dapr-grpc-port", "50002", + "-log-level", "warn", "-config", "/config/tracing-config.yml", "-components-path", "/components"] volumes: - "./components/:/components" - "./config/:/config" - depends_on: - - command-api - - zipkin network_mode: "service:command-api" @@ -53,28 +39,20 @@ services: image: dockerutils/order-processing expose: - 9090 - #build: ../implementations/order-processing - depends_on: - - redis environment: - STOCK_MANAGER_INVOKE_URL=http://localhost:3500/v1.0/invoke/stock-manager/method/stock - RECEIPT_GEN_INVOKE_URL=http://localhost:3500/v1.0/invoke/receipt-generator/method/ - networks: - - hello-dapr order-processing-dapr: image: "daprio/daprd:edge" command: ["./daprd", "-app-id", "order-processing", "-app-port", "8080", "-config", "/config/tracing-config.yml", - "-dapr-grpc-port", "50002", + "-log-level", "warn", "-components-path", "/components"] volumes: - "./components/:/components" - "./config/:/config" - depends_on: - - order-processing - - zipkin network_mode: "service:order-processing" @@ -85,25 +63,17 @@ services: image: dockerutils/stock-manager expose: - 9090 - #build: ../implementations/stock-manager - depends_on: - - redis - networks: - - hello-dapr stock-manager-dapr: image: "daprio/daprd:edge" command: ["./daprd", "-app-id", "stock-manager", "-app-port", "8081", + "-log-level", "warn", "-config", "/config/tracing-config.yml", - "-dapr-grpc-port", "50002", "-components-path", "/components"] volumes: - "./components/:/components" - "./config/:/config" - depends_on: - - stock-manager - - zipkin network_mode: "service:stock-manager" @@ -114,11 +84,6 @@ services: image: dockerutils/receipt-generator expose: - 9090 - #build: ../implementations/receipt-generator - depends_on: - - redis - networks: - - hello-dapr environment: - RUST_LOG=debug - MAIL_TO= @@ -128,15 +93,12 @@ services: command: ["./daprd", "-app-id", "receipt-generator", "-app-port", "8081", + "-log-level", "warn", "-config", "/config/tracing-config.yml", - "-dapr-grpc-port", "50002", "-components-path", "/components"] volumes: - "./components/:/components" - "./config/:/config" - depends_on: - - receipt-generator - - zipkin network_mode: "service:receipt-generator" ############################ @@ -148,8 +110,6 @@ services: - TZ=CET ports: - 9415:9411 - networks: - - hello-dapr ############################ # Prometheus @@ -167,8 +127,6 @@ services: - '--web.listen-address=:9416' ports: - 9416:9416 - networks: - - hello-dapr ############################ # Grafana @@ -183,40 +141,9 @@ services: - "./grafana/dashboards:/etc/grafana/provisioning/dashboards/" ports: - 9417:3000 - networks: - - hello-dapr - - # ############################ - # # Dashboard - # ############################ - # dashboard: - # image: daprio/dashboard - # environment: - # - TZ=CET - # volumes: - # - "./grafana/config/grafana.ini:/etc/grafana/grafana.ini" - # - "./grafana/datasources:/etc/grafana/provisioning/datasources" - # - "./grafana/dashboards:/etc/grafana/provisioning/dashboards/" - # ports: - # - 9417:3000 - # networks: - # - hello-dapr ############################ # Redis state stores ############################ redis: - image: "redis:alpine" - networks: - - hello-dapr - - # mongo: - # image: mongo - # networks: - # - hello-dapr - # environment: - # MONGO_INITDB_ROOT_USERNAME: root - # MONGO_INITDB_ROOT_PASSWORD: example - -networks: - hello-dapr: + image: "redis:alpine" \ No newline at end of file