Fragen Sie Pod-Protokolle von Azure Kubernetes von Log Analytics ab
Wenn Sie einen Azure Kubernetes Service-Cluster (AKS) erstellen, können Sie eine Log Analytics-Ressource für die Protokollierung und Überwachung von Kubernetes-Ressourcen angeben: Pods, Dienste, Konfigurationszuordnungen usw. Dieses Ding installiert eigentlich den Log Analytics-Agent in Ihrem Cluster (es wird mehrere Pods geben und zugehörige Ressourcen wie configmaps), die dann stdout- und stderr-Ausgaben von Pods an Log Analytics senden.
Leider ist das Schema dieser Protokolle in Log Analytics ziemlich komplex, hauptsächlich weil der Protokolldatensatz aus dem Container stammt, aber nicht aus dem Pod, sodass sie mehrere Tabellen haben, die wir verbinden müssen, um menschenlesbare Protokolldaten zu erhalten.
Sie können hier überprüfen, an welche Log Analytics-Ressource AKS Protokolle sendet:
Nach langem Suchen im Internet ist es mir endlich gelungen, kusto-query zu finden und anzupassen, mit dem Sie Pod-Protokolle flexibel abrufen und filtern können:
// 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})
Beachten Sie die Platzhalter in der Abfrage ${some-text}, die Sie durch etwas ersetzen müssen, das Sie benötigen. Oder entfernen Sie, wenn Sie möchten.
- Zugriffe: 624