Получаем логи подов Azure Kubernetes из Log Analytics
Когда вы создаете Azure Kubernetes Service кластер (AKS), вы можете указать сервис Log Analytics для логирования и мониторинга ресурсов внутри кластера: подов, сервисов и т.д. Эта штука устанавливает агент Log Analytics (там будет несколько подов и сопуствующие ресурсы типа config maps), которые потом будут отправлять вывод stdout и stderr в Log Analytics.
К сожалению, схема этих логов достаточно сложная, из-за того, что лог связан с контейнером, а не с подом, и очень тяжело понять, к какому поду относится лог.
Проверить, в какой ресурс 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})
В запросе есть токены вида ${какой-то-текст}, которые надо заменить на то, что вам нужно. Или удалить, если хотите.
- Просмотров: 827