Freigeben über


Azure-Container-Apps: Benutzerdefinierte Containersitzungen

Zusätzlich zum integrierten Codeinterpreter, den dynamische Azure Container Apps-Sitzungen bereitstellen, können Sie auch benutzerdefinierte Container verwenden, um Ihre eigenen Sitzungssandboxes zu definieren.

Hinweis

Dieser Artikel gilt nur für benutzerdefinierte Container-Sitzungspools. Sofern nicht angegeben, sind die hier beschriebenen Features für Codedolmetschersitzungspools nicht verfügbar.

Verwendungsmöglichkeiten für benutzerdefinierte Containersitzungen

Mit benutzerdefinierten Containern können Sie Lösungen erstellen, die speziell auf Ihre Anforderungen zugeschnitten sind. Sie ermöglichen es Ihnen, Code oder Anwendungen in Umgebungen auszuführen, die schnell und kurzlebig sind und sichere Sandkastenbereiche mit Hyper-V bieten. Darüber hinaus können sie mit optionaler Netzwerkisolation konfiguriert werden. Beispiele hierfür sind:

  • Codeinterpreter: Wenn Sie nicht vertrauenswürdigen Code in sicheren Sandboxes mit einer Sprache ausführen müssen, die im integrierten Interpreter nicht unterstützt wird, oder Sie die vollständige Kontrolle über die Codeinterpreterumgebung benötigen.

  • Isolierte Ausführung: Wenn Sie Anwendungen in feindlichen Szenarien mit mehreren Mandanten ausführen müssen, in denen jeder Mandant oder Benutzer über eine eigene Sandkastenumgebung verfügt. Diese Umgebungen sind voneinander und von der Hostanwendung isoliert. Beispiele sind u. a. Anwendungen, die vom Benutzer bereitgestellten Code ausführen, Code, der Endbenutzerzugriff auf eine cloudbasierte Shell gewährt, KI-Agents und Entwicklungsumgebungen.

Benutzerdefinierte Containersitzungen verwenden

Um benutzerdefinierte Containersitzungen zu verwenden, erstellen Sie zunächst einen Sitzungspool mit einem benutzerdefinierten Containerimage. Azure Container Apps startet Container in ihren eigenen Hyper-V-Sandboxen automatisch mithilfe der bereitgestellten Images. Sobald der Container gestartet wurde, ist er für den Sitzungspool verfügbar.

Wenn Ihre Anwendung eine Sitzung anfordert, wird sofort eine Instanz aus dem Pool zugeordnet. Die Sitzung bleibt aktiv, bis sie in einen Leerlaufzustand wechselt, wird dann automatisch beendet und zerstört.

Containersonden für Sitzungspools

Verwenden Sie Containersonden, um Integritätsprüfungen für benutzerdefinierte Containersitzungspools zu konfigurieren und fehlerfreie Sitzungsinstanzen zu verwalten.

Hinweis

Containersonden erfordern API-Version 2025-02-02-preview oder höher.

Mit Containersonden können Sie Integritätsprüfungen für Sitzungscontainer definieren, ähnlich wie Integritätstests in Azure Container-Apps. Bei der Konfiguration überwacht der Sitzungspool jede Sitzungsinstanz und entfernt fehlerhafte Instanzen.

Der Sitzungspool:

  • Stellt sicher, dass verfügbare Sitzungsinstanzen basierend auf den Überprüfungen fehlerfrei sind.
  • Entfernt automatisch unerwünschte Sitzungsinstanzen.
  • Erhöht die Skalierung, um die konfigurierte readySessionInstances Anzahl der gesunden Sitzungen beizubehalten.

Sitzungspools unterstützen die Liveness- und Startup-Überprüfungstypen. Weitere Informationen darüber, wie Probes funktionieren, finden Sie unter Integritätssonden in Azure-Container-Apps.

Konfiguration

Wenn Sie einen Sitzungspool erstellen oder aktualisieren, geben Sie Prüfpunkte im properties.customContainerTemplate.containers Abschnitt Ihrer Anforderungsnutzlast an.

Die vollständige API-Spezifikation finden Sie unter SessionPools-API.

Beispiel

{
  "properties": {
    "customContainerTemplate": {
      "containers": [
        {
          "name": "my-session-container",
          "image": "myregistry.azurecr.io/my-session-image:latest",
          "probes": [
            {
              "type": "Liveness",
              "httpGet": {
                "path": "/health",
                "port": 8080
              },
              "periodSeconds": 10,
              "failureThreshold": 3
            },
            {
              "type": "Startup",
              "httpGet": {
                "path": "/ready",
                "port": 8080
              },
              "periodSeconds": 5,
              "failureThreshold": 30
            }
          ]
        }
      ]
    },
    "dynamicPoolConfiguration": {
      "readySessionInstances": 5
    }
  }
}

Problembehandlung

Wenn Ihr Sitzungspool die erwartete Anzahl funktionsfähiger readySessionInstances nicht beibehält, sollten Sie Folgendes berücksichtigen:

  1. Überprüfen Sie Containerprotokolle – Überprüfen Sie Sitzungscontainerprotokolle, um Probleme mit Probeendpunkten oder containerstarts zu identifizieren. Siehe Protokolle für benutzerdefinierte Containersitzungspools anzeigen.
  2. Überprüfen Sie die Probekonfiguration – Stellen Sie sicher, dass Prüfpunktpfade, Ports und Schwellenwerte für Ihre Anwendung ordnungsgemäß konfiguriert sind.
  3. Überprüfen Sie den Containerstatus – Überprüfen Sie auf Probleme in Ihrem Container, die verhindern, dass Probeendpunkte erfolgreich reagieren.

Beenden einer Sitzung

Verwenden Sie die Stoppsitzungs-API, um eine Sitzung in einem benutzerdefinierten Containersitzungspool zu beenden.

Sitzungspools unterstützen die automatische Sitzungsverwaltung durch lifecycleConfiguration, die den Sitzungslebenszyklus basierend auf Ihrer Konfiguration verarbeitet. Es gibt jedoch Szenarien, in denen Sie möglicherweise mehr Kontrolle benötigen.

Nachdem Sie eine Sitzung zugewiesen haben, können Sie diese API aufrufen, um sie jederzeit manuell zu beenden. Diese Möglichkeit ist in folgenden Situationen nützlich:

  • Sie müssen Ressourcen bereinigen, bevor eine Sitzung ihre Lebensdauer erreicht.
  • Ihr Sitzungspool hat seinen maximalen Grenzwert für gleichzeitige Sitzungen erreicht, und Sie müssen kapazität für neue Sitzungen freigeben.
  • Eine Sitzung hat ihre Arbeit abgeschlossen und Sie möchten Ressourcen sofort freigeben.

API-Referenz

Anforderung

POST {PoolManagementEndpoint}/.management/stopSession?api-version=2025-10-02-preview&identifier={SessionIdentifier}

Parameter

Parameter Typ Erforderlich Beschreibung
api-version Schnur Ja Die zu verwendende API-Version (z. B 2025-10-02-preview. ).
identifier Schnur Ja Der eindeutige Bezeichner der Sitzung, die beendet werden soll.

Beispiele

Anforderung

POST https://{PoolManagementEndpoint}/.management/stopSession?api-version=2025-10-02-preview&identifier=testSessionIdentifier

Antwort

HTTP/1.1 200 OK
Content-Type: text/plain

Session testSessionIdentifier in session pool testSessionPool stopped.

Protokollierung

Benutzerdefinierte Containersitzungspools integrieren sich in Azure Monitor und Log Analytics. Anwendungsprotokolle werden nur erfasst, wenn Ihr Container die Ausgabe an stdout oder stderr schreibt. Stellen Sie daher sicher, dass Ihre App Protokolle in die Konsole schreibt.

Voraussetzungen

  • Eine Azure-Container-Apps-Umgebung mit einem benutzerdefinierten Containersitzungspool
  • Ein Log Analytics-Arbeitsbereich (oder ein Arbeitsbereich während der Einrichtung erstellen)

Konfigurieren der Protokollierung

Schritt 1: Azure Monitor-Protokollierung aktivieren

  1. Navigieren Sie im Azure-Portal zu Ihrer Container-Apps-Umgebung .
  2. Wählen Sie unter "Überwachung" die Option "Protokollierung" aus.
  3. Legen Sie das Protokollziel auf Azure Monitor fest.

Schritt 2: Konfigurieren von Diagnoseeinstellungen

  1. Navigieren Sie in Ihrer Container-Apps-Umgebung zu Diagnoseeinstellungen unter "Überwachung".
  2. Wählen Sie +Diagnoseeinstellung hinzufügen aus.
  3. Geben Sie einen Namen für Ihre Diagnoseeinstellung an.
  4. Wählen Sie unter "Protokolle" die sitzungsbezogenen Protokollkategorien aus, die Sie erfassen möchten.
  5. Wählen Sie unter "Zieldetails" die Option "An Log Analytics-Arbeitsbereich senden" aus.
  6. Wählen Sie Ihren Log Analytics-Arbeitsbereich aus (oder erstellen Sie einen neuen Arbeitsbereich).
  7. Wählen Sie Speichern aus.

Log Analytics-Tabellen

Protokollkategorie Log Analytics-Tabelle Beschreibung
Anwendungsprotokolle AppEnvSessionConsoleLogs Standardausgabe (stdout) und Standardfehler (stderr), der von der containerisierten Anwendung ausgegeben wird.
Plattformprotokolle AppEnvSessionLifecycleLogs, AppEnvSessionPoolEvents Plattformgenerierte Ereignisse im Zusammenhang mit der Zuweisung des Sitzungspools, des Lebenszyklus und des Betriebsstatus.

Wenn Protokolle direkt an Log Analytics gesendet werden, verwenden die Tabellen das suffix _CL (z. B AppEnvSessionConsoleLogs_CL. ). Wenn Protokolle über Die Diagnoseeinstellungen von Azure Monitor weitergeleitet werden, enthalten die Tabellennamen nicht das _CL Suffix.

Anzeigen von Sitzungsprotokollen

Nachdem Diagnoseeinstellungen konfiguriert wurden, werden Protokolle an Ihren Log Analytics-Arbeitsbereich gesendet.

Abfrageprotokolle in Log Analytics

  1. Navigieren Sie im Azure-Portal zu Ihrem Log Analytics-Arbeitsbereich .
  2. Wählen Sie die Option Protokolle unter Allgemein aus.
  3. Verwenden Sie kusto Query Language (KQL), um Sitzungsprotokolle abzufragen.

Beispielabfragen

Anzeigen der letzten Konsolenprotokolle aus Sitzungen:

AppEnvSessionConsoleLogs
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc
| take 100

Anzeigen von Sitzungslebenszyklusereignissen:

AppEnvSessionLifecycleLogs
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc

Anzeigen von Sitzungspoolereignissen:

AppEnvSessionPoolEvents
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc

Metriken

Azure Container Apps gibt Azure Monitor-Metriken für benutzerdefinierte Containersitzungspools aus. Verwenden Sie diese Metriken, um die Poolkapazität und -aktivität im Laufe der Zeit nachzuverfolgen.

Unterstützte Metriken

Die vollständige Liste finden Sie unter "Unterstützte Metriken – Microsoft.App/sessionpools – Azure Monitor".

Metric Name in der REST-API Einheit Aggregation Maße Zeitkörner DS-Export
Anzahl der Ausführungssitzungen
Anzahl der ausgeführten Sitzungspods im Sitzungspool
PoolExecutingPodCount Zählen Summe (Summe), Mittelwert, Maximum, Minimum poolName PT1M Ja
Anzahl der erstellten Sitzungen
Anzahl der Erstellung von Sitzungs pods im Sitzungspool
PoolPendingPodCount Zählen Summe (Summe), Mittelwert, Maximum, Minimum poolName PT1M Ja
Anzahl bereiter Sitzungen
Anzahl der verfügbaren Sitzungspods im Sitzungspool
PoolReadyPodCount Zählen Summe (Summe), Mittelwert, Maximum, Minimum poolName PT1M Ja

Sitzungsmetriken anzeigen

Sie können entweder Azure Monitor- oder Container-Apps-Umgebungsmetriken verwenden, um sitzungsbasierte Metriken anzuzeigen.

Option 1: Azure Monitor-Metriken

  1. Öffnen Sie die Seite "Metriken von Azure Monitor".
  2. Wählen Sie Ihren benutzerdefinierten Containersitzungspool als Scope aus.
  3. Wählen Sie eine Metrik und Aggregation aus, die angezeigt werden soll.

Option 2: Metriken der Container-Apps-Umgebung

  1. Öffnen Sie im Azure-Portal Ihre Container-Apps-Umgebung.
  2. Klicken Sie auf Metriken.
  3. Verwenden Sie Scope, um Ihren benutzerdefinierten Containersitzungspool auszuwählen.
  4. Wählen Sie eine Metrik und Aggregation aus, die angezeigt werden soll.