Surveiller le flux de journaux Azure AppService à partir du terminal (à l'aide de Docker)

Informations pour ceux qui ont des difficultés à ouvrir le portail Azure.

1. Activez le flux de journaux dans Azure AppService

Immédiatement après la création de l'AppService, il a été désactivé, alors activez-le dans le menu de gauche → Journal App Service. Blob peut convenir, et je ne suis pas sûr de la signification du "message d'erreur détaillé".

image.png

2. Vérifiez le flux de journaux

Sélectionnez Log Stream dans le menu de gauche et vérifiez que vous pouvez afficher le journal sur l'écran Web. La figure suivante montre comment le bot est déployé en attendant un journal.

image.png

3. Connectez-vous au terminal

Désormais, nous travaillerons dans le terminal client (PowerShell). Peut-être que ça va avec l'invite de commande, et ça va avec macOS.

Étant donné que l'installation d'Azure CLI est un problème, utilisez l'image Docker fournie. Au moment suivant, lancez le conteneur Azure CLI et entrez bash.

docker run -it mcr.microsoft.com/azure-cli

bash-5.0#

4. Connectez-vous à Azure et créez ce que l'on appelle un «principal de service»

Vous devez vous connecter à Azure à partir de l'interface de ligne de commande pour accéder au flux de journaux AppService. Créez quelque chose appelé «principal de service» afin que vous puissiez vous connecter sans aucune interaction avec l'utilisateur.

Tout d'abord, connectez-vous à Azure de manière interactive.

bash-5.0# az login

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code GD3M62X89 to authenticate.

S'affiche, accédez à l'URL, entrez le code et connectez-vous avec le navigateur.

Une fois connecté, exécutez la commande suivante:

bash-5.0# az ad sp create-for-rbac --name <your-service-principal-name>

Donnez à un nom gérable, mais honnêtement, je ne suis pas sûr, alors laissez-le comme `` mon-premier-principal ''.

Quand tu cours

image.png

Depuis le résultat comme

Faire une note de.

5. Définissez les autorisations du principal du service

Le principal de service que vous avez créé a le rôle «Contributeur», et vous voulez juste voir le journal, mais il est trop privilégié et dangereux, alors exécutez la commande suivante pour changer le rôle ..

bash-5.0# az role assignment create --assignee <appId> --role "Website Contributor"
bash-5.0# az role assignment delete --assignee <appId> --role "Contributor"

est celui qui a été noté dans la section précédente.

Le rôle Contributeur de site Web lit uniquement le journal AppService. Il semble que vous puissiez également créer et gérer des sites Web, mais je fais des compromis car je n'ai pas trouvé d'autres rôles intégrés appropriés. Il serait possible d'autoriser uniquement la fonction souhaitée par une méthode autre que le rôle intégré.

6. Connectez-vous avec Azure CLI en utilisant appId, password, tenant

Connectez-vous «de manière non interactive» avec Azure CLI à l'aide des informations que vous avez notées à l'étape 4.

Tout d'abord, déconnectez-vous.

bash-5.0# az logout

Connectez-vous avec appId, mot de passe, locataire.

bash-5.0# az login --service-principal --username <appId> --password "<password>" --tenant <tenant>

Puisque le mot de passe contient des symboles, etc., il est plus sûr de le mettre entre "".

7. Surveiller le flux de journaux AppService à partir du terminal

bash-5.0# az webapp log tail --nom <nom AppService>--resource-groupe <nom du groupe de ressources>

et se trouvent dans la vue d'ensemble AppService du portail Azure.

image.png

La figure suivante montre le flux de journaux AppService surveillé dans Windows Terminal. Vous pouvez maintenant voir la sortie de la console AppService ainsi que l'écran Web.

image.png

8. Rendre possible d'appeler la surveillance en un seul coup

Il est difficile d'exécuter docker, az login et az webapp log, alors exécutons-le avec une seule commande. Il est plus facile d'utiliser docker-compose.

Créez un répertoire approprié (ici, le répertoire log ''), créez-y log_tail.sh`` et écrivez le contenu suivant.

log_tail.sh

#!/bin/bash

az login --service-principal \
         --username "c22b88da-35d7-4044-xxx-xxxxxxxx" \
         --password "xxxxxxxxxxxxxxxxxxxxx" \
         --tenant "da519484-d2e7-4d6b-xxxx-xxxxxxxx" \
         --output none

az webapp log tail \
         --name mybot001 \
         --resource-group my_bot_001_rc

Remplacez la partie paramètre par votre propre environnement décrit ci-dessus. Nous avons également ajouté `` --output none '' à az login. Je l'ai perdu car il était ennuyeux que le résultat de l'achèvement de la connexion soit sorti.

Ensuite, créez docker-compose.yml dans le même répertoire et écrivez le contenu suivant.

docker-compose.yml

version: '2'
services:
  log-tail:
    image: mcr.microsoft.com/azure-cli
    volumes:
      - .:/work
    working_dir: /work
    command: bash log_tail.sh

Définissez un conteneur à partir de l'image Azure CLI et exécutez `` log_tail.sh '' au démarrage.

Faites cela dans Terminal.

#Accédez au répertoire du journal et exécutez
cd log
docker-compose run --rm log-tail

#Exécuter depuis l'extérieur du répertoire du journal
cd ..
docker-compose -f ./log/docker-compose.yml run --rm log-tail

Vous pouvez désormais surveiller le journal AppService d'un seul coup. Je fais du développement de Bot dans node.js, donc je me suis inscrit dans les scripts de package.json pour:

{
    "name": "my-bot",
    "version": "1.0.0",
    "scripts": {
        "log-tail": "docker-compose -f ./scripts/log/docker-compose.yml run --rm log-tail",
<Omis ci-dessous>

Il peut être appelé avec npm run log-tail '' ou yarn log-tail ''. C'est devenu très pratique.

** Attention: ** J'ai écrit des informations confidentielles telles que des mots de passe directement dans log_tail.sh, je devrais donc consulter les variables d'environnement. .. ..

9. Supprimer le principal du service

Si vous ne l'utilisez plus ou trouvez qu'il a été abusé, supprimez le principal du service et désactivez la connexion non interactive.

  1. Commencez par lancer le dialogue `` az login ''.
  2. Ensuite, utilisez az ad sp list --all '' pour afficher la liste des principaux de service (Personnalisez les résultats de sortie (https://dev.classmethod.jp/articles/form-aws-cli). -output-by-jmespath /) Il semble que cela puisse être fait, donc l'ajuster facilitera la lecture, mais c'était trop difficile pour moi ..., --display-name my-first`` est facile à affiner).
  3. Recherchez le principal de service souhaité et notez l'appID.
  4. Pour changer le mot de passe, etc., exécutez `` az ad sp credential reset --name ''. Un nouveau mot de passe sera émis.
  5. Pour supprimer le principal, exécutez `` az ad sp delete --id ''.

référence

Recommended Posts

Surveiller le flux de journaux Azure AppService à partir du terminal (à l'aide de Docker)
Utilisation de Docker depuis Java Gradle
Traitement des données à l'aide de l'API de flux de Java 8