Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Além do interpretador de código interno que as sessões dinâmicas dos Aplicativos de Contêiner do Azure fornecem, você também pode usar contêineres personalizados para definir suas próprias áreas restritas de sessão.
Observação
Este artigo aplica-se apenas a pools personalizados de sessões de contentores. Salvo indicação em contrário, as funcionalidades descritas aqui não estão disponíveis para pools de sessões de interpretadores de código.
Usos para sessões de contêiner personalizadas
Os contentores personalizados permitem-lhe criar soluções adaptadas às suas necessidades. Permitem-lhe executar código ou aplicações em ambientes rápidos e efémeros. Oferecem espaços seguros e isolados com o Hyper-V. Além disso, podem ser configurados com isolamento de rede opcional. Alguns exemplos incluem:
Interpretadores de código: Use se executar código não confiável em sandboxes seguros por uma linguagem não suportada no interpretador incorporado, ou se precisar de controlo total sobre o ambiente do interpretador de código.
Execução isolada: Use se executar aplicações em cenários hostis e multiinquilinos, onde cada inquilino ou utilizador tem o seu próprio ambiente sandbox. Esses ambientes são isolados uns dos outros e do aplicativo host. Alguns exemplos incluem aplicativos que executam código fornecido pelo usuário, código que concede ao usuário final acesso a um shell baseado em nuvem, agentes de IA e ambientes de desenvolvimento.
Usando sessões de contêiner personalizadas
Para usar sessões personalizadas de contentores, crie um pool de sessões com uma imagem de contentor personalizada. O Azure Container Apps inicia automaticamente os contentores nos seus próprios Hyper-V sandboxes usando a imagem fornecida. Depois de o contentor arrancar, fica disponível para o pool de sessões.
Quando seu aplicativo solicita uma sessão, uma instância é alocada instantaneamente do pool. A sessão permanece ativa até entrar em um estado ocioso, que é automaticamente interrompido e destruído.
Sondas de contentores para conjuntos de sessões
Utilize sondas de contentores para configurar verificações de integridade para pools personalizados de sessões de contentores e manter instâncias de sessão saudáveis.
Observação
A versão API 2025-02-02-preview ou posterior é necessária para as sondas de contentores.
As sondas de contentores permitem-lhe definir verificações de saúde para contentores de sessão, semelhantes às sondas de saúde nas aplicações Azure Container. Quando configurado, o pool de sessões monitoriza cada instância de sessão e remove instâncias pouco saudáveis.
O grupo de sessões
- Garante que as instâncias de sessão prontas estão em condições adequadas, baseado nos testes de sondagem.
- Remove automaticamente instâncias de sessão não saudáveis.
- Realiza escalação para manter a contagem configurada
readySessionInstancescom sessões saudáveis.
Os conjuntos de sessão suportam os tipos de sondas Liveness e Startup. Para mais informações sobre como funcionam as sondas, consulte Sondas de saúde em Azure Container Apps.
Configuração
Quando criar ou atualizar um pool de sessões, especifique sondas na secção properties.customContainerTemplate.containers do seu payload de pedido.
Para a especificação completa da API, consulte a API SessionPools.
Exemplo
{
"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
}
}
}
Troubleshooting
Se o seu pool de sessões não estiver a manter o número esperado de sessões saudáveis readySessionInstances, considere as seguintes correções:
- Verifique os registos dos contentores. Reveja os registos dos contentores de sessão para identificar problemas com endpoints de sonda ou o arranque dos contentores. Veja Ver registos para pools personalizados de sessões de contentores.
- Verifique a configuração da sonda. Certifique-se de que os caminhos das sondas, portas e limiares estão configurados corretamente para a sua aplicação.
- Verifique a saúde dos contentores. Verifique se há problemas dentro do seu contentor que impeçam que os endpoints da sonda respondam com sucesso.
Parar uma sessão
Use a API Stop Session para terminar uma sessão num pool personalizado de sessões com contentores.
Os pools de sessão suportam a gestão automática de sessões através de lifecycleConfiguration, que gere o ciclo de vida da sessão com base na sua configuração. No entanto, há cenários em que pode precisar de mais controlo.
Depois de alocar uma sessão, pode chamar esta API para a terminar manualmente a qualquer momento. Esta abordagem é útil quando:
- Você precisa limpar os recursos antes de uma sessão atingir o seu tempo de vida útil.
- O seu grupo de sessões atinge o limite máximo de sessões concorrentes e precisa de libertar capacidade para novas sessões.
- Uma sessão completa o seu trabalho e deves libertar recursos imediatamente.
Referência da API
Pedido
POST <POOL_MANAGEMENT_ENDPOINT>/.management/stopSession?api-version=2025-02-02-preview&identifier=<SESSION_ID>
Parâmetros
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
api-version |
cadeia (de caracteres) | Sim | A versão da API a usar (por exemplo, 2025-02-02-preview). |
identifier |
cadeia (de caracteres) | Sim | O identificador único da sessão a parar. |
Exemplos
Pedido
POST https://<SESSION_POOL_NAME>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io/.management/stopSession?api-version=2025-02-02-preview&identifier=testSessionIdentifier
Resposta
HTTP/1.1 200 OK
Content-Type: text/plain
Session testSessionIdentifier in session pool testSessionPool stopped.
Recuperar informação da sessão
Pode consultar o seu pool de sessões para verificar o estado da sessão, obter detalhes de expiração e listar todas as sessões ativas. Esta funcionalidade é útil para monitorizar a saúde das sessões, acompanhar o uso de recursos e implementar fluxos de trabalho personalizados de limpeza.
Faz uma única sessão
Para obter detalhes sobre uma sessão específica, use o getSession endpoint:
POST <POOL_MANAGEMENT_ENDPOINT>/.management/getSession?identifier=<SESSION_ID>&api-version=2025-02-02-preview
Authorization: Bearer <TOKEN>
O getSession endpoint devolve metadados da sessão, incluindo o identificador da sessão, a hora de expiração atual e o carimbo temporal da criação.
Esquema de resposta SessionView
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
identifier |
cadeia (de caracteres) | Sim | O identificador de sessão que forneceu |
etag |
cadeia (de caracteres) | Sim | Identificador de versão opaco para a sessão. Pode usar este identificador para deteção de alterações. |
expiresAt |
DateTime | Sim | Timestamp UTC quando a sessão será encerrada |
createdAt |
DateTime | No | Data e hora de criação da sessão |
lastAccessedAt |
DateTime | No | Marca temporal da última solicitação desta sessão |
Exemplo de pedido e resposta
curl -X POST "https://my-pool.env-id.westus2.azurecontainerapps.io/.management/getSession?identifier=user-123&api-version=2025-02-02-preview" \
-H "Authorization: Bearer $TOKEN"
Resposta de sucesso (HTTP 200):
{
"identifier": "user-123",
"etag": "a1b2c3d4",
"expiresAt": "2026-04-30T14:30:00Z",
"createdAt": "2026-04-30T13:30:00Z",
"lastAccessedAt": "2026-04-30T14:29:00Z"
}
Liste todas as sessões num grupo
Para obter uma lista de todas as sessões do seu pool de sessões, use o listSessions endpoint:
POST <POOL_MANAGEMENT_ENDPOINT>/.management/listSessions?skip=0&api-version=2025-02-02-preview
Authorization: Bearer <TOKEN>
Pagination
O endpoint da lista suporta paginação baseada em skip. Por padrão, cada página devolve até 300 sessões. Use o skip parâmetro de consulta para navegar pelos resultados.
| Parâmetro | Descrição |
|---|---|
skip |
Número de sessões a saltar desde o início (padrão: 0) |
nextLink |
URL completo para a página seguinte de resultados (incluído em resposta quando houver mais resultados) |
Esquema de resposta ApiCollectionEnvelope
| Campo | Tipo | Descrição |
|---|---|---|
value |
SessionView[] | Array de objetos de sessão |
count |
número inteiro | Número de sessões na página atual |
nextLink |
cadeia (de caracteres) | URL para a página seguinte (nula se não houver mais resultados) |
Exemplo de ciclo de paginação
POOL_URL="https://my-pool.env-id.westus2.azurecontainerapps.io"
next_url="$POOL_URL/.management/listSessions?skip=0&api-version=2025-02-02-preview"
while [ -n "$next_url" ]; do
response=$(curl -s -X POST "$next_url" \
-H "Authorization: Bearer $TOKEN")
echo "$response" | jq '.value[] | {identifier, expiresAt}'
next_url=$(echo "$response" | jq -r '.nextLink // empty')
done
Resposta de exemplo (HTTP 200):
{
"value": [
{
"identifier": "user-123",
"etag": "a1b2c3d4",
"expiresAt": "2026-04-30T14:30:00Z",
"createdAt": "2026-04-30T13:30:00Z",
"lastAccessedAt": "2026-04-30T14:29:00Z"
},
{
"identifier": "user-456",
"etag": "e5f6a7b8",
"expiresAt": "2026-04-30T14:30:00Z",
"createdAt": "2026-04-30T13:30:00Z",
"lastAccessedAt": "2026-04-30T14:29:00Z"
}
],
"count": 2,
"nextLink": "https://my-pool.env-id.westus2.azurecontainerapps.io/.management/listSessions?skip=300"
}
Logging
Pools personalizados de sessões de contentores integram-se com o Azure Monitor e o Log Analytics. Os registos da aplicação só são capturados se o teu contentor gravar a saída em stdout ou stderr, por isso certifica-te de que a tua aplicação emite registos para a consola.
Pré-requisitos
- Um ambiente Azure Container Apps com um pool personalizado de sessões de contentores
- Um espaço de trabalho de Log Analytics, ou criar um durante a configuração
Configurar registo de logs
Ativar o registo de atividades do Azure Monitor
- No portal do Azure, navegue até ao seu Ambiente de Aplicações de Container.
- Em Monitorização, selecione opções de Registo.
- Definir o destino dos logs no Azure Monitor.
Configurar definições de diagnóstico
- No seu Ambiente de Aplicações Container, em Monitorização, selecione Definições de Diagnóstico.
- Selecione + Adicionar configuração de diagnóstico.
- Dê um nome para a sua configuração de diagnóstico.
- Em Registos, selecione as categorias de registos relacionadas com a sessão que pretende capturar.
- Em Detalhes do destino, selecione Enviar para o espaço de trabalho do Log Analytics.
- Escolha o seu espaço de trabalho de Log Analytics ou crie um novo.
- Selecione Guardar.
Tabelas do Log Analytics
| Categoria do registo | Tabela do Log Analytics | Descrição |
|---|---|---|
| Registos de aplicações | AppEnvSessionConsoleLogs |
Saída padrão (stdout) e erro padrão (stderr) emitido pela aplicação containerizada. |
| Registos da plataforma |
AppEnvSessionLifecycleLogs, AppEnvSessionPoolEvents |
Eventos gerados pela plataforma relacionados com a alocação do pool de sessões, ciclo de vida e estado operacional. |
Se os registos forem enviados diretamente para o Log Analytics, as tabelas usam o sufixo _CL, por exemplo, AppEnvSessionConsoleLogs_CL. Quando os registos são encaminhados através das definições de diagnóstico do Azure Monitor, os nomes das tabelas não incluem o sufixo _CL.
Ver registos de sessão
Depois de configuradas as definições de diagnóstico, os registos são enviados para o seu espaço de trabalho de Log Analytics.
Consultar registos no Log Analytics
- No portal Azure, navegue até ao seu espaço de trabalho de Log Analytics.
- No menu à esquerda, selecione Registos.
- Se a consulta estiver em modo Simples, selecione o modo KQL.
- Use a Linguagem de Consulta Kusto (KQL) para consultar registos de sessão.
Exemplos de consultas
Veja os registos da consola recentes das sessões:
AppEnvSessionConsoleLogs
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc
| take 100
Veja os eventos do ciclo de vida da sessão:
AppEnvSessionLifecycleLogs
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc
Veja os eventos do grupo de sessões:
AppEnvSessionPoolEvents
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc
Métricas
Azure Container Apps emite métricas do Azure Monitor para grupos de sessões personalizados de contentor. Utilize estas métricas para acompanhar a capacidade e a atividade do pool ao longo do tempo.
Métricas suportadas
Para a lista completa, consulte Métricas suportadas - Microsoft.App/sessionpools - Azure Monitor.
| Métrico | Nome na API REST | Unidade | Aggregation | Dimensões | Segmentos de tempo | DS Exportação |
|---|---|---|---|---|---|---|
|
Executando contagem de sessões Número de pods de sessão em execução no pool de sessões |
PoolExecutingPodCount |
Contagem | Total (soma), média, máxima, mínima | poolName |
PT1M | Sim |
|
Criando contagem de sessões Número de pods de sessão criados no pool de sessões |
PoolPendingPodCount |
Contagem | Total (soma), média, máxima, mínima | poolName |
PT1M | Sim |
|
Contagem de sessões disponíveis Número de pods de sessão prontos no pool de sessões |
PoolReadyPodCount |
Contagem | Total (soma), média, máxima, mínima | poolName |
PT1M | Sim |
Ver métricas de sessão
Pode usar métricas de ambiente Azure Monitor ou Container Apps para visualizar métricas baseadas em sessões.
Métricas do Azure Monitor
- Abra a página Azure Monitor Metrics.
- Use Scope para selecionar o seu pool de sessões para contentores personalizado.
- Escolha uma métrica e uma agregação para visualizar.
Métricas do ambiente das Aplicações em Contentores
- No portal Azure, abra o seu Ambiente de Aplicações Container.
- Em Monitorização, selecione Métricas.
- Use Scope para selecionar o seu pool de sessões para contentores personalizado.
- Escolha uma métrica e uma agregação para visualizar.