kubernetes 使用日志分析查询在AKS中查找POD日志

cclgggtu  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(1)|浏览(122)

有一个正在运行的AKS连接到Azure中的日志分析。我尝试使用以下查询片段查看命名POD的日志:

let KubePodLogs = (clustername:string, podnameprefix:string) {
    let ContainerIdList = KubePodInventory
    | where ClusterName =~ clustername
    | where Name startswith strcat(podnameprefix, "-")
    | where strlen(ContainerID)>0
    | distinct ContainerID;
    ContainerLog
    | where ContainerID in (ContainerIdList)
    | join (KubePodInventory | project ContainerID, Name, PodLabel, Namespace, Computer) on ContainerID
    | project TimeGenerated, Node=Computer, Namespace, PodName=Name1, PodLabel, ContainerID, LogEntry
};
KubePodLogs('aks-my-cluster', 'my-service') | order by TimeGenerated desc

上面的查询确实返回了匹配POD的行,但并不是所有实际可用的行。
尝试通过检查POD详细信息来获取部分查询的结果:

KubePodInventory
    | where ClusterName =~ 'aks-my-cluster'
    | where Name startswith 'my-service-'
    | where strlen(ContainerID)>0
    | distinct ContainerID;

给了我一个集装箱ID现在,将这个container-id输入到另一个查询中会显示比上面的组合查询更多的结果。为什么?为什么?

ContainerLog 
| where ContainerID == "aec001...fc31"
| order by TimeGenerated desc 
| project TimeGenerated, ContainerID, LogEntry

我注意到的一件事是,后面的简单查询结果包含日志结果,这些结果具有从POD的JSON格式输出解析的LogEntry字段。在结果中,我可以将LogEntry扩展到更多与POD日志输出的原始JSON数据相对应的字段。
也就是说,组合查询(带有连接)似乎跳过了那些JSON LogEntryContainerLog条目,但为什么呢?
据我所知,组合查询不会以任何方式过滤LogEntry字段。

tzdcorbm

tzdcorbm1#

更改后的查询似乎会产生我所期望的结果:
我将joinlookup交换,并使用更多列来区分KubePodInventory结果。

let KubePodLogs = (clustername:string, podnameprefix:string) {
    let ContainerIdList = KubePodInventory
    | where ClusterName =~ clustername
    | where Name startswith strcat(podnameprefix, "-")
    | where strlen(ContainerID)>0
    | distinct ContainerID, PodLabel, Namespace, PodIp, Name;
    ContainerLog
    | where ContainerID in (ContainerIdList)
    | lookup kind=leftouter (ContainerIdList) on ContainerID
    | project-away Image, ImageTag, Repository, Name, TimeOfCommand
    | project-rename PodName=Name1
};
KubePodLogs('aks-my-cluster', 'my-service') | order by TimeGenerated desc

相关问题