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:
- Navegue até o espaço de trabalho do Log Analytics no portal do Azure
- Em Configurações, selecione Gerenciamento de agentes
- 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
:
- Navegue até o espaço de trabalho do Log Analytics no portal do Azure
- Em Geral, selecione Logs
- Digite a seguinte consulta:
ContainerInstanceLog_CL | limit 50
- 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.
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
:
- Navegue até o espaço de trabalho do Log Analytics no portal do Azure
- Em Geral, selecione Logs
- Digite a seguinte consulta:
ContainerEvent_CL | limit 50
- 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.
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:
- Noções básicas sobre pesquisas de logs nos logs do Azure Monitor
- Alertas unificados no Azure Monitor
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: