Informationen für Benutzer, die Probleme beim Öffnen des Azure-Portals haben.
Unmittelbar nach dem Erstellen des AppService wurde dieser deaktiviert. Aktivieren Sie ihn daher über das linke Menü → App Service-Protokoll. Blob kann in Ordnung sein, und ich bin nicht sicher, was die "detaillierte Fehlermeldung" bedeutet.
Wählen Sie im linken Menü die Option "Protokolldatenstrom" und stellen Sie sicher, dass Sie das Protokoll auf dem Webbildschirm anzeigen können. Die folgende Abbildung zeigt, wie der Bot bereitgestellt wird, während auf ein Protokoll gewartet wird.
Von nun an arbeiten wir im Client-Terminal (PowerShell). Vielleicht können Sie die Eingabeaufforderung oder sogar macOS verwenden.
Verwenden Sie das bereitgestellte Docker-Image, da die Installation der Azure-CLI mühsam ist. Starten Sie im nächsten Moment den Azure CLI-Container und geben Sie bash ein.
docker run -it mcr.microsoft.com/azure-cli
bash-5.0#
Sie müssen sich über die CLI bei Azure anmelden, um auf den AppService-Protokolldatenstrom zugreifen zu können. Erstellen Sie einen sogenannten "Dienstprinzipal", damit Sie sich ohne Interaktion mit dem Benutzer anmelden können.
Melden Sie sich zunächst interaktiv bei Azure an.
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.
Wird angezeigt, greifen Sie auf die URL zu, geben Sie den Code ein und melden Sie sich mit dem Browser an.
Führen Sie nach dem Anmelden den folgenden Befehl aus:
bash-5.0# az ad sp create-for-rbac --name <your-service-principal-name>
Geben Sie
Wenn ausgeführt,
Da mag das Ergebnis
Notieren.
Der erstellte Dienstprinzipal hat die Rolle "Mitwirkender" und möchte nur das Protokoll anzeigen, es ist jedoch überprivilegiert und gefährlich. Führen Sie daher den folgenden Befehl aus, um die Rolle zu ändern ..
bash-5.0# az role assignment create --assignee <appId> --role "Website Contributor"
bash-5.0# az role assignment delete --assignee <appId> --role "Contributor"
Die Rolle Website-Mitwirkender liest nur das AppService-Protokoll. Es scheint, dass Sie auch Websites erstellen und verwalten können, aber ich mache Kompromisse, weil ich keine anderen geeigneten integrierten Rollen gefunden habe. Es wäre möglich, nur die gewünschte Funktion durch eine andere Methode als die eingebaute Rolle zuzulassen.
Melden Sie sich "nicht interaktiv" mit der Azure-CLI an, indem Sie die in Schritt 4 angegebenen Informationen verwenden.
Melden Sie sich zuerst ab.
bash-5.0# az logout
Melden Sie sich mit AppId, Passwort, Mandant an.
bash-5.0# az login --service-principal --username <appId> --password "<password>" --tenant <tenant>
Da das Passwort Symbole usw. enthält, ist es sicherer, es in "" einzuschließen.
bash-5.0# az webapp log tail --name <Anwendungsname>--resource-Gruppe <Name der Ressourcengruppe>
Die folgende Abbildung zeigt den AppService-Protokolldatenstrom, der im Windows-Terminal überwacht wird. Sie können jetzt die AppService-Konsolenausgabe sowie den Webbildschirm sehen.
Docker-Ausführung, Az-Login und Az-Webapp-Protokoll sind mühsam. Führen Sie sie daher mit einem einzigen Befehl aus. Es ist einfacher, Docker-Compose zu verwenden.
Erstellen Sie ein geeignetes Verzeichnis (hier das Verzeichnis "log"), erstellen Sie "log_tail.sh" darin und schreiben Sie den folgenden Inhalt.
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
Ersetzen Sie den Parameterteil durch Ihre oben beschriebene eigene Umgebung.
Wir haben auch --output none
zu az login hinzugefügt. Ich habe es verloren, weil es ärgerlich war, dass das Ergebnis der Anmeldung abgeschlossen wurde.
Als nächstes erstellen Sie docker-compose.yml
im selben Verzeichnis und schreiben den folgenden Inhalt.
docker-compose.yml
version: '2'
services:
log-tail:
image: mcr.microsoft.com/azure-cli
volumes:
- .:/work
working_dir: /work
command: bash log_tail.sh
Definieren Sie einen Container aus dem Azure CLI-Image und führen Sie beim Start log_tail.sh
aus.
Tun Sie dies im Terminal.
#Gehen Sie zum Protokollverzeichnis und führen Sie es aus
cd log
docker-compose run --rm log-tail
#Von außerhalb des Protokollverzeichnisses ausführen
cd ..
docker-compose -f ./log/docker-compose.yml run --rm log-tail
Jetzt können Sie das AppService-Protokoll auf einmal überwachen. Ich mache die Bot-Entwicklung in node.js, also habe ich mich in den Skripten in package.json registriert für:
{
"name": "my-bot",
"version": "1.0.0",
"scripts": {
"log-tail": "docker-compose -f ./scripts/log/docker-compose.yml run --rm log-tail",
<Unten weggelassen>
Es kann mit npm run log-tail
oder yarn log-tail
aufgerufen werden. Es ist sehr bequem geworden.
** Achtung: ** Ich habe vertrauliche Informationen wie Passwörter direkt in log_tail.sh geschrieben, daher sollte ich zu Umgebungsvariablen gehen. .. ..
Wenn Sie es nicht mehr verwenden oder als missbraucht empfinden, entfernen Sie das Dienstprinzipal und deaktivieren Sie die nicht interaktive Anmeldung.
az login
durch. az ad sp list --all
, um die Liste der Dienstprinzipien anzuzeigen (Anpassen der Ausgabeergebnisse (https://dev.classmethod.jp/articles/form-aws-cli). -output-by-jmespath /) Es scheint, dass dies möglich ist. Wenn Sie es also anpassen, wird es leichter zu sehen, aber es war zu schwierig für mich ..., --display-name my-first
ist leicht einzugrenzen).az ad sp credential reset --name <appID>
aus. Ein neues Passwort wird ausgegeben.az ad sp delete --id <appID>
aus.