Как эффективно фильтровать логи контейнера Azure (kusto) - PullRequest
0 голосов
/ 21 июня 2020

Мой запрос ниже кажется неэффективным, но таблица Azure "ContainerLog" не содержит сведений о контейнере, я выполняю поиск из "KubePodInventory".

let _podInventory = ( KubePodInventory 
       | where Namespace has "My-k8s-Namespace" 
       | where ContainerName has_any ('My-Pod' )
       | distinct ContainerID , ContainerName, Namespace, Name
                    );
ContainerLog
| where TimeGenerated between( datetime("2020-06-18 02:00:00 ") .. now())
| join kind=inner _podInventory on $left.ContainerID == $right.ContainerID
| project LogEntry, Name1, Namespace , ContainerName, TimeGenerated

Ответы [ 2 ]

2 голосов
/ 21 июня 2020

Используйте оператор поиска , он должен быть более эффективным, потому что соединение будет автоматически широковещательно (распределено).

0 голосов
/ 15 июля 2020

Это сработало для меня, комбинирование KubePodInventory с фильтрами с оператором поиска @ Avnera показалось мне быстрым.

//# Pieter2020-06 Search for log in Namespace and Container name
let _podInventory = ( KubePodInventory 
       | where Namespace has "mynamesspace-uat" 
       | where ContainerName has_any ('pod1' , 'web2' , 'pod3')
       | distinct ContainerID, ContainerName, Namespace, PodRestartCount , Name );
ContainerLog
//| where TimeGenerated between( datetime("2020-06-16 02:00:00 ") .. now())
| where TimeGenerated between( datetime("2020-07-13 19:00:00 ") .. datetime("2020-07-15 9:00:00 ") )
| where ( LogEntry has_any( "WARN", "ERRO"  ) )
| lookup kind=leftouter (_podInventory) on ContainerID
| project TimeGenerated, Name1, LogEntry, Namespace  
...