【发布时间】:2021-02-20 17:02:21
【问题描述】:
【问题讨论】:
标签: azure-aks
【问题讨论】:
标签: azure-aks
该数据位于 LogManagement 部分的 Perf 表中:
How to query logs from Azure Monitor for containers 上的文档页面包含您可以开始使用的示例查询:
查询此数据需要进行一些解析,因为Computer 字段始终显示收集数据的节点的名称,而不是 pod。为了获取 pod/container 特定的数据,您必须查看带有 ObjectName == 'K8SContainer' 的记录并解析包含您需要的数据的 InstanceName 字段。 InstanceName 是这样构建的:/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUPNAME/providers/Microsoft.ContainerService/managedClusters/CLUSTERNAME/PODUID/CONTAINERNAME。鉴于这些数据,我们可以解析出 PodUid 并加入 KubePodInventory 以获取该 Pod 的识别信息。
这是一个示例查询:
Perf
| where ObjectName == 'K8SContainer' and TimeGenerated > ago(1m)
| extend PodUid = tostring(split(InstanceName, '/', 9)[0]), Container = tostring(split(InstanceName, '/', 10)[0])
| join kind=leftouter (KubePodInventory | summarize arg_max(TimeGenerated, *) by PodUid) on PodUid
| project TimeGenerated, ClusterName, Namespace, Pod = Name, Container, PodIp, Node = Computer, CounterName, CounterValue
附带说明 - Computer 字段始终显示节点名称,因为这是运行 OMS 代理的位置。它在节点级别收集统计信息,但这些统计信息包括每个 cgroup 的内存和 CPU 使用情况,这是一般容器背后的支持 CPU/内存隔离和限制技术,就像命名空间用于分离网络、文件系统一样, 和进程 ID。
【讨论】: