Получаем логи подов Azure Kubernetes из Log Analytics

Получаем логи подов Azure Kubernetes из Log Analytics

Когда вы создаете Azure Kubernetes Service кластер (AKS), вы можете указать сервис Log Analytics для логирования и мониторинга ресурсов внутри кластера: подов, сервисов и т.д. Эта штука устанавливает агент Log Analytics (там будет несколько подов и сопуствующие ресурсы типа config maps), которые потом будут отправлять вывод stdout и stderr в Log Analytics.

К сожалению, схема этих логов достаточно сложная, из-за того, что лог связан с контейнером, а не с подом, и очень тяжело понять, к какому поду относится лог.

Проверить, в какой ресурс Log Analytics отправляются данные, можно вот тут:

Получаем логи подов Azure Kubernetes из Log Analytics

Путем долгих поисков я наконец смог найти и допилить kusto-запрос, с помощью которого можно гибко получать и фильтровать логи:

// Get logs from all containers in pod. Filter them by with 'has' operator. Then get latest 

ContainerLog
  | join kind = inner (KubePodInventory
    | project
        ContainerID,
        PodName=Name,
        ControllerKind,
        ControllerName,
        Namespace,
        ContainerName
    | distinct *
    )
    on ContainerID
  | where PodName startswith "${pod_name}"
  | where Namespace == "${namespace}"
  | project
    TimeGenerated,
    Namespace,
    PodName,
    ContainerName,
    LogEntry,
    ControllerKind,
    ControllerName,
    LogEntrySource
  | sort by TimeGenerated desc
  | where LogEntry has "${search_string}"
  | where TimeGenerated > ago(${time_span})

В запросе есть токены вида ${какой-то-текст}, которые надо заменить на то, что вам нужно. Или удалить, если хотите.

azure (ru), aks (ru)

  • Просмотров: 561
Добавить комментарий

Related Articles