Interroger les journaux des pods d'Azure Kubernetes à partir de Log Analytics
Lorsque vous créez un cluster Azure Kubernetes Service (AKS), vous pouvez spécifier la ressource Log Analytics pour la journalisation et la surveillance des ressources Kubernetes : pods, services, configmaps, etc. Cette chose installe en fait l'agent Log Analytics dans votre cluster (il y aura plusieurs pods et les ressources associées telles que configmaps), qui enverra ensuite les sorties stdout et stderr des pods à Log Analytics.
Malheureusement, le schéma de ces journaux dans Log Analytics est assez complexe, principalement parce que l'enregistrement du journal provient du conteneur, mais pas du pod. Ils ont donc plusieurs tables, que nous devons connecter pour obtenir des données de journalisation lisibles par l'homme.
Vous pouvez vérifier à quelle ressource Log Analytics AKS envoie les journaux ici:
Après de longues recherches sur Internet, j'ai enfin réussi à trouver et à personnaliser la requête kusto, que vous pouvez utiliser pour obtenir et filtrer de manière flexible les journaux de pod:
// 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})
Notez les espaces réservés dans la requête ${some-text}, que vous devez remplacer par quelque chose dont vous avez besoin. Ou supprimer si vous le souhaitez.
- Affichages : 762