Log de grupo e instância de contêiner com os logs do Azure Monitor

Os workspaces do Log Analytics fornecem uma localização centralizada para armazenar e consultar dados de log não apenas dos recursos do Azure, mas também dos recursos locais e recursos em outras nuvens. As Instâncias de Contêiner do Azure incluem suporte interno para enviar dados de eventos e logs aos logs do Azure Monitor.

Para enviar dados eventos e logs do grupo de contêineres para logs do Azure Monitor, especifique uma chave do workspace e uma ID do workspace do Log Analytics existente ao configurar um grupo de contêineres.

As seções a seguir descrevem como criar um grupo de contêineres habilitado para registro em log e como consultar logs. Você também pode atualizar um grupo de contêineres com uma ID e uma chave do workspace para registro em log.

Observação

Este artigo foi atualizado recentemente para usar o termo logs do Azure Monitor em vez de Log Analytics. Os dados de log ainda são armazenados em um espaço de trabalho do Log Analytics e ainda são coletados e analisados pelo mesmo serviço do Log Analytics. Estamos atualizando a terminologia para refletir melhor a função dos logs no Azure Monitor. Confira as alterações de terminologia do Azure Monitor para obter detalhes.

Pré-requisitos

Para habilitar o registro em log nas instâncias de contêiner, serão necessários o seguinte:

Obter credenciais do Log Analytics

As Instâncias de Contêiner do Azure precisam de permissão para enviar dados ao espaço de trabalho do Log Analytics. Para conceder essa permissão e habilitar o registro em log, será necessário fornecer a ID do espaço de trabalho do Log Analytics e uma de suas chaves (primária ou secundária) ao criar o grupo de contêineres.

Para obter a ID do espaço de trabalho do Log Analytics e a chave primária:

  1. Navegue até o espaço de trabalho do Log Analytics no portal do Azure
  2. Em Configurações, selecione Gerenciamento de agentes
  3. Anote:
    • ID do Workspace
    • Chave primária

Criar grupo de contêineres

Agora que você tem a ID e do espaço de trabalho do Log Analytics e a chave primária, você está pronto para criar um grupo de contêineres habilitado para log.

Os exemplos a seguir demonstram duas maneiras de criar um grupo de contêineres que consiste em um único contêiner fluentd: a CLI do Azure e a CLI do Azure com um modelo YAML. O contêiner fluentd produz várias linhas de saída na configuração padrão. Como essa saída é enviada para o espaço de trabalho do Log Analytics, ela funciona bem para demonstrar a visualização e a consulta de logs.

Implantar com a CLI do Azure

Para implantar com a CLI do Azure, especifique os parâmetros --log-analytics-workspace e --log-analytics-workspace-key no comando az container create. Substitua os dois valores de workspace pelos valores que você obteve na etapa anterior (e atualize o nome do grupo de recursos) antes de executar o comando a seguir.

Observação

O exemplo a seguir efetua pull de uma imagem de contêiner público do Docker Hub. É recomendável configurar um segredo de pull para autenticar-se usando uma conta do Docker Hub em vez de fazer uma solicitação de pull anônima. Para melhorar a confiabilidade ao trabalhar com o conteúdo público, importe e gerencie a imagem em um registro de contêiner privado do Azure. Saiba mais sobre como trabalhar com imagens públicas.

az container create \
    --resource-group myResourceGroup \
    --name mycontainergroup001 \
    --image fluent/fluentd:v1.3-debian-1 \
    --log-analytics-workspace <WORKSPACE_ID> \
    --log-analytics-workspace-key <WORKSPACE_KEY>

Implantar com YAML

Use esse método se você preferir implantar grupos de contêineres com YAML. O YAML a seguir define um grupo de contêineres com um único contêiner. Copie o YAML para em um novo arquivo, então substitua LOG_ANALYTICS_WORKSPACE_ID e LOG_ANALYTICS_WORKSPACE_KEY pelos valores obtidos na etapa anterior. Salve o arquivo como deploy-aci.yaml.

Observação

O exemplo a seguir efetua pull de uma imagem de contêiner público do Docker Hub. É recomendável configurar um segredo de pull para autenticar-se usando uma conta do Docker Hub em vez de fazer uma solicitação de pull anônima. Para melhorar a confiabilidade ao trabalhar com o conteúdo público, importe e gerencie a imagem em um registro de contêiner privado do Azure. Saiba mais sobre como trabalhar com imagens públicas.

apiVersion: 2019-12-01
location: eastus
name: mycontainergroup001
properties:
  containers:
  - name: mycontainer001
    properties:
      environmentVariables: []
      image: fluent/fluentd:v1.3-debian-1
      ports: []
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
  osType: Linux
  restartPolicy: Always
  diagnostics:
    logAnalytics:
      workspaceId: LOG_ANALYTICS_WORKSPACE_ID
      workspaceKey: LOG_ANALYTICS_WORKSPACE_KEY
tags: null
type: Microsoft.ContainerInstance/containerGroups

Em seguida, execute o comando a seguir para implantar o grupo de contêineres. Substitua myResourceGroup por um grupo de recursos em sua assinatura (ou primeiro crie um grupo de recursos chamado "myResourceGroup"):

az container create --resource-group myResourceGroup --name mycontainergroup001 --file deploy-aci.yaml

Você deverá receber uma resposta do Azure contendo detalhes da implantação, logo após a emissão do comando.

Exibir logs

Depois de você implantar o grupo de contêineres, isso talvez demore vários minutos (até 10) para que as primeiras entradas de log apareçam no portal do Azure.

Para exibir logs do grupo de contêineres na tabela ContainerInstanceLog_CL:

  1. Navegue até o espaço de trabalho do Log Analytics no portal do Azure
  2. Em Geral, selecione Logs
  3. Digite a seguinte consulta: ContainerInstanceLog_CL | limit 50
  4. Selecionar Executar

Você deverá ver vários resultados exibidos pela consulta. Caso não veja nenhum resultado, aguarde alguns minutos e, em seguida, selecione o botão Executar para executar a consulta novamente. Por padrão, as entradas de log são exibidas no formato de Tabela. Em seguida, você poderá expandir uma linha para ver o conteúdo de uma entrada de log individual.

Pesquisa de Logs no portal do Azure

Exibir eventos

Você também pode exibir eventos para instâncias de contêiner no portal do Azure. Os eventos incluem a hora em que a instância é criada e quando ela é iniciada. Para exibir dados de evento na tabela ContainerEvent_CL:

  1. Navegue até o espaço de trabalho do Log Analytics no portal do Azure
  2. Em Geral, selecione Logs
  3. Digite a seguinte consulta: ContainerEvent_CL | limit 50
  4. Selecionar Executar

Você deverá ver vários resultados exibidos pela consulta. Caso não veja nenhum resultado, aguarde alguns minutos e, em seguida, selecione o botão Executar para executar a consulta novamente. Por padrão, as entradas são exibidas no formato de Tabela. Em seguida, você poderá expandir uma linha para ver o conteúdo de uma entrada individual.

Resultados da pesquisa de eventos no portal do Azure

Consulta de logs do contêiner

Os logs do Azure Monitor incluem uma linguagem de consulta extensa para efetuar pull das informações de potencialmente milhares de linhas de saída de log.

A estrutura básica de uma consulta é a tabela de origem (neste artigo, ContainerInstanceLog_CL ou ContainerEvent_CL) seguida por uma série de operadores separados pelo caractere de pipe (|). É possível encadear vários operadores para refinar os resultados e executar funções avançadas.

Para ver os resultados da consulta de exemplo, cole a consulta a seguir na caixa de texto da consulta e selecione o botão Executar para executar a consulta. Esta consulta exibe todas as entradas de log cujo campo de "Mensagem" contém a palavra "warn":

ContainerInstanceLog_CL
| where Message contains "warn"

Consultas mais complexas também têm suporte. Por exemplo, essa consulta exibe apenas as entradas de log do grupo de contêineres "mycontainergroup001" gerado na última hora:

ContainerInstanceLog_CL
| where (ContainerGroup_s == "mycontainergroup001")
| where (TimeGenerated > ago(1h))

Esquema do log

Observação

Algumas das colunas listadas na tabela a seguir só existem como parte do esquema e não terão dados emitidos nos logs. Essas colunas são indicadas com uma descrição 'Vazio'.

ContainerInstanceLog_CL

Coluna Type Descrição
Computador string Vazio
ContainerGroup_s string O nome do grupo de contêineres associado ao registro
ContainerID_s string Identificador exclusivo do contêiner associado ao registro
ContainerImage_s string O nome da imagem de contêiner associada ao registro
Location_s string O local do recurso associado ao registro
Mensagem string Se aplicável, a mensagem do contêiner
OSType_s string O nome do sistema operacional no qual o contêiner se baseia
RawData string Vazio
ResourceGroup string Nome do grupo de recursos ao qual o registro está associado
Source_s string Nome do componente de log, "LoggingAgent"
SubscriptionId string Identificador exclusivo da assinatura à qual o registro está associado
TimeGenerated DATETIME Carimbo de data/hora da geração do evento pelo serviço do Azure que está processando a solicitação correspondente ao evento
Type string O nome da tabela
_ResourceId string Identificador exclusivo do recurso ao qual o registro está associado
_SubscriptionId string Identificador exclusivo da assinatura à qual o registro está associado

ContainerEvent_CL

Coluna Type Descrição
Computador string Vazio
ContainerGroupInstanceId_g string Identificador exclusivo do grupo de contêineres associado ao registro
ContainerGroup_s string O nome do grupo de contêineres associado ao registro
ContainerName_s string O nome do contêiner associado ao registro
Count_d real Quantas vezes o evento ocorreu desde a última sondagem
FirstTimestamp_t DATETIME O carimbo de data/hora da primeira ocorrência do evento
Location_s string O local do recurso associado ao registro
Mensagem string Se aplicável, a mensagem do contêiner
OSType_s string O nome do sistema operacional no qual o contêiner se baseia
RawData string Vazio
Reason_s string O status atual do grupo de contêineres
ResourceGroup string O nome do grupo de recursos ao qual o registro está associado
SubscriptionId string Identificador exclusivo da assinatura à qual o registro está associado
TimeGenerated DATETIME Carimbo de data/hora da geração do evento pelo serviço do Azure que está processando a solicitação correspondente ao evento
Type string O nome da tabela
_ResourceId string Identificador exclusivo do recurso ao qual o registro está associado
_SubscriptionId string Identificador exclusivo da assinatura à qual o registro está associado

Usando configurações de diagnóstico

As Configurações de Diagnóstico para grupos de contêineres são uma versão prévia do recurso e podem ser habilitadas por meio de opções de versões prévias dos recursos no portal do Azure. Depois que esse recurso estiver habilitado para uma assinatura, as Configurações de Diagnóstico poderão ser aplicadas a um grupo de contêineres. A aplicação de configurações de diagnóstico faz com que um grupo de contêineres seja reiniciado.

Por exemplo, veja como podemos usar o comando New-AzDiagnosticSetting para aplicar um objeto de Configurações de Diagnóstico a um grupo de contêineres.

$log = @()
$log += New-AzDiagnosticSettingLogSettingsObject -Enabled $true -Category ContainerInstanceLog -RetentionPolicyDay 7 -RetentionPolicyEnabled $true
 
New-AzDiagnosticSetting -Name test-setting -ResourceId <container-group-resource-id> -WorkspaceId <log-analytics-workspace-id> -Log $log

Próximas etapas

Logs do Azure Monitor

Para obter mais informações sobre como consultar logs e configurar alertas nos logs do Azure Monitor, confira:

Monitorar memória e CPU do contêiner

Para obter informações sobre monitoramento de recursos de memória e CPU da instância de contêiner, consulte: