Interrogations utilisées dans la solution Kubernetes

Les interrogations sont utilisées pour extraire les mesures, les événements, la topologie et les données d'analyse à afficher dans divers panneaux disponibles dans la solution Kubernetes. Certaines des interrogations basées sur des journaux telles que celles pour le système Kubernetes, l'état du système d'exploitation, les événements, le sommaire des charges de travail, le sommaire des noeuds et le sommaire des pods doivent être exécutées dans l'explorateur de journaux et les autres interrogations sont des mesures basées qui doivent être exécutées dans l'explorateur de mesures.

Rubriques :

Interrogations sur les widgets du panneau de droite dans la solution Kubernetes

Système Kubernetes

Affiche les mesures globales de l'état ou de la performance des composants du système Kubernetes critiques (tels que kube-apiserver, gestionnaire de contrôleur ou programmateur). Ce widget permet de garantir le bon fonctionnement des services essentiels de plan de contrôle.

Onglets : Grappe

Filtres : Aucun

Portée : Explorateur de journaux

Interrogation :

'Component Type' in ('Kubernetes System', 'Kubernetes Control Plane') and Component != null
 | link Time, Component, cluster()
 | rename 'Cluster Sample' as 'Error Sample'
 | eval Error = if(length('Error Sample') > 50, substr('Error Sample', 0, 50) || ' ...', substr('Error Sample', 0, 50))
 | classify correlate = -*, Error Component as Trend
 | timestats name = 'All Issues' sum(Count) as 'Issue Trend'
 | timestats name = 'Potential Issues' sum(Count) as Issues by Component, Error
 | fields -'Potential Issue', -Error

État du système d'exploitation

Fournit des données clés sur l'état du système d'exploitation sur les nœuds Kubernetes, agrégeant souvent des mesures telles que le statut des processus d'UC, de mémoire, de disque et de système. Cela garantit que le système d'exploitation sous-jacent ne devient pas un goulet d'étranglement pour les charges de travail.

Onglets : Grappe, Noeud

Filtres : Aucun

Portée : Explorateur de journaux

Interrogation :

'Component Type' = 'Linux System' and Component != null and (Label = null or (Label != null and 'Problem Priority' != null))
 | link includenulls = true Time, Node, Component, Label, cluster()
 | stats max('Problem Priority') as 'Problem Priority'
 | where 'Problem Priority' != null or 'Potential Issue' = '1'
 | eval Error = if(length('Cluster Sample') > 30, substr('Cluster Sample', 0, 30) || ' ...', substr('Cluster Sample', 0, 30))
 | classify correlate = -*, Error, Label Component as Trend
 | timestats name = 'All Issues' sum(Count) as 'Issue Trend'
 | timestats name = 'Issues Trend' sum(Count) as Issues by Component, Error, Label, Node
 | fields -'Potential Issue', -Error

Coeurs d'UC (utilisés/pouvant être affectés)

Ce widget affiche le pourcentage de coeurs d'UC actuellement utilisés par rapport au nombre total de coeurs allouables dans votre environnement Kubernetes. Elle offre une indication visuelle rapide de l'efficacité globale de l'utilisation d'UC dans la grappe.

Onglets : Grappe, Charge de travail, Noeud, Code

Filtres : Espace de noms, Charge de travail, Noeud

Portée : Explorateur de mesures

Interrogation :

clusterCPUUtilization[1m]{clusterName = "k8s_solution_development"}.mean()

Pour un exemple d'interrogation avec des filtres, voir Interrogation du widget Bande passante de réseau.

Mémoire (utilisée/pouvant être affectée)

Affiche le pourcentage de mémoire utilisée par rapport à la mémoire allouable totale dans la grappe. Il aide à évaluer la pression de mémoire et à s'assurer que les charges de travail disposent de ressources de mémoire suffisantes.

Onglets : Grappe, Charge de travail, Noeud, Code

Filtres : Espace de noms, Charge de travail, Noeud

Portée : Explorateur de mesures

Interrogation :

clusterMemoryUtilization[1m]{clusterName = "k8s_solution_development"}.mean()

Pour un exemple d'interrogation avec des filtres, voir Interrogation du widget Bande passante de réseau.

Coeurs d'UC utilisés

Affiche le nombre absolu de coeurs d'UC actuellement consommés par les charges de travail de votre grappe. La surveillance permet d'identifier les tendances de consommation d'UC et les points chauds potentiels.

Onglets : Grappe, Charge de travail, Noeud, Code

Filtres : Espace de noms, Charge de travail, Noeud

Portée : Explorateur de mesures

Interrogation :

podCpuUsage[1m]{clusterName = "oke-cw22-ll", namespace = "kube-system", nodeName = "192.0.2.1", podName =~"coredns*"}.mean().grouping().sum()

Mémoire utilisée

Indique la quantité totale de mémoire (en Ko, Mo, Go) actuellement utilisée dans vos ressources de grappe. Cela vous aide à surveiller les tendances de mémoire pour la planification et le dépannage de la capacité.

Onglets : Grappe, Charge de travail, Noeud, Code

Filtres : Espace de noms, Charge de travail, Noeud

Portée : Explorateur de mesures

Interrogation :

podMemoryUsage[1m]{clusterName = "oke-cw22-ll", namespace = "kube-system", nodeName = "192.0.2.1", podName =~"coredns*"}.mean().grouping().sum()

Réseau : Octets reçus

Affiche le débit cumulatif ou courant des octets de réseau reçus par le cluster ou un noeud/pod spécifique. Cette mesure permet de surveiller le volume de trafic réseau entrant. Exécutez l'interrogation sur l'espace de noms mgmtagent_kubernetes_metrics.

Onglets : Grappe, Charge de travail, Noeud, Code

Filtres : Espace de noms, Charge de travail, Noeud

Portée : Explorateur de mesures

Exemple d'interrogation :

container_network_receive_bytes_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)

Réseau : Octets transmis

Affiche le taux cumulatif ou courant d'octets de réseau transmis à partir du cluster ou d'un nœud/pod spécifique. Il permet de suivre le trafic sortant et les problèmes de trafic sortant potentiels. Exécutez l'interrogation sur l'espace de noms mgmtagent_kubernetes_metrics.

Onglets : Grappe, Charge de travail, Noeud, Code

Filtres : Espace de noms, Charge de travail, Noeud

Portée : Explorateur de mesures

Exemple d'interrogation :

container_network_transmit_bytes_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)

Taux de paquets réseau

Indique la vitesse à laquelle les paquets réseau sont reçus. Cela permet d'identifier les tendances et les pics de volume de paquets entrants qui peuvent avoir une incidence sur les performances du réseau. Exécutez l'interrogation sur l'espace de noms mgmtagent_kubernetes_metrics.

Onglets : Grappe, Charge de travail, Noeud, Code

Filtres : Espace de noms, Charge de travail, Noeud

Portée : Explorateur de mesures

Exemple d'interrogation :

container_network_receive_packets_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)

Réseau : Taux de paquets transmis

Mesure le taux de paquets réseau envoyés à partir des noeuds ou des pods. Il aide à diagnostiquer l'activité du réseau sortant et la saturation possible. Exécutez l'interrogation sur l'espace de noms mgmtagent_kubernetes_metrics.

Onglets : Grappe, Charge de travail, Noeud, Code

Filtres : Espace de noms, Charge de travail, Noeud

Portée : Explorateur de mesures

Exemple d'interrogation :

container_network_receive_packets_dropped_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)

Réseau : Taux de paquets reçus abandonnés

Affiche le taux d'abandon des paquets réseau entrants en raison de problèmes tels que l'encombrement du réseau ou le dépassement de mémoire tampon. Un taux de baisse élevé indique des problèmes de réseau potentiels nécessitant une attention particulière. Exécutez l'interrogation sur l'espace de noms mgmtagent_kubernetes_metrics.

Onglets : Grappe, Charge de travail, Noeud, Code

Filtres : Espace de noms, Charge de travail, Noeud

Portée : Explorateur de mesures

Exemple d'interrogation :

“container_network_transmit_packets_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)

Réseau : Taux de paquets abandonnés

Affiche la vitesse à laquelle les paquets réseau sortants sont abandonnés. Des valeurs élevées persistantes peuvent suggérer des problèmes de mémoire tampon réseau, des erreurs de configuration ou des limitations matérielles. Exécutez l'interrogation sur l'espace de noms mgmtagent_kubernetes_metrics.

Onglets : Grappe, Charge de travail, Noeud, Code

Filtres : Espace de noms, Charge de travail, Noeud

Portée : Explorateur de mesures

Exemple d'interrogation :

container_network_transmit_packets_dropped_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)

Durée de la demande pour le serveur d'API

Affiche des données statistiques (moyenne, centile, etc.) sur la durée d'exécution des demandes du serveur d'API. Des durées plus longues peuvent signaler les goulots d'étranglement du serveur d'API ou les problèmes de service dorsal.

Onglets : Grappe, Charge de travail, Noeud, Code

Filtres : Aucun

Portée : Explorateur de mesures

Interrogation :

apiserver_request_duration_seconds_sum[5m]{clusterName = "oke-cw22-ll",verb=~"LIST|GET|PUT|POST|PATCH|DELETE|APPLY"}.groupBy(verb).sum() / apiserver_request_duration_seconds_count[5m]{clusterName = "oke-cw22-ll",verb=~"LIST|GET|PUT|POST|PATCH|DELETE|APPLY"}.groupBy(verb).sum()

Durée de la demande etcd

Affiche la latence impliquée dans le traitement des demandes à etcd, le magasin de clés-valeurs distribué soutenant Kubernetes. Des durées plus élevées ici peuvent affecter la réactivité globale du plan de contrôle.

Onglets : Grappe

Filtres : Aucun

Portée : Explorateur de mesures

Interrogation :

etcd_request_duration_seconds_sum[5m]{clusterName = "oke-cw22-ll"}.groupBy(le).sum()/etcd_request_duration_seconds_count[5m]{clusterName = "oke-cw22-ll"}.groupBy(le).sum()

Nombre total de demandes pour le serveur d'API

Affiche le nombre total de demandes reçues par le serveur d'API Kubernetes sur une période spécifiée. Un nombre élevé ou élevé peut indiquer une augmentation de l'activité de gestion des grappes ou des problèmes potentiels tels que des surcharges de script automatisé.

Onglets : Grappe

Filtres : Aucun

Portée : Explorateur de mesures

Interrogation :

apiserver_request_total[5m]{clusterName = "oke-cw22-ll"}.groupBy(code).rate().filter(x=>x>=0)

Taille de la réponse d'API

Mesure la taille des réponses (en octets) retournées par le serveur d'API Kubernetes. Les grandes tailles de réponse peuvent avoir une incidence sur l'utilisation du réseau et la performance du client.

Onglets : Grappe

Filtres : Aucun

Portée : Explorateur de mesures

Interrogation :

apiserver_response_sizes_sum[5m]{clusterName = "oke-cw22-ll"}.groupBy(verb).sum() / apiserver_response_sizes_count[5m]{clusterName= "oke-cw22-ll"}.groupBy(verb).sum()

Durée d'exécution de la demande d'API

Met l'accent sur le temps requis par le serveur d'API pour traiter et exécuter les demandes entrantes. La surveillance permet de détecter les dégradations de performance ou les serveurs d'API surchargés.

Onglets : Grappe

Filtres : Aucun

Portée : Explorateur de mesures

Interrogation :

apiserver_request_duration_seconds_sum[5m]{clusterName = "oke-cw22-ll", verb=~"LIST|GET|PUT|POST|PATCH|DELETE|APPLY"}.groupBy(verb).sum() / apiserver_request_duration_seconds_count[5m]{clusterName = "oke-cw22-ll", verb=~"LIST|GET|PUT|POST|PATCH|DELETE|APPLY"}.groupBy(verb).sum()

Interrogations pour la table d'événements dans la solution Kubernetes

Onglets : Grappe, Charge de travail, Noeud, Code

Filtres : Espace de noms

Portée : Explorateur de journaux

Interrogation :

'Log Source' = 'Kubernetes Event Object Logs' and 'Kubernetes Event Action' != deleted
 | eval Object = 'Involved Object Kind' || ' - ' || 'Involved Object Name'
 | link includenulls = true Object, 'Event Source Component', Event
 | rename 'Event Source Component' as Component
 | stats latest('Kubernetes Event Action') as Status, unique(Namespace) as Namespace, latest(Reason) as Reason, latest('Event Description') as Message, unique('Event Type') as Type, earliest('First Event Time') as 'First Event Time', latest('Last Event Time') as 'Last Event Time', latest('Event Count') as 'Event Count'
 | eventstats count(Namespace) as Records by Namespace
 | eval Age = 'Last Event Time' - 'First Event Time'
 | createtable name = 'Namespace Summary' select Namespace, Records
 | createtable name = 'Namespace Details' select Namespace, Type, Reason, 'Last Event Time', Age, Message, Object, Component
 | sort Namespace, -'Last Event Time'
 | fields -Event, -'Start Time', -'End Time', -'First Event Time', -Count

Interrogations sur les tables de topologie et de détails de grappe dans la solution Kubernetes

Sommaire des charges de travail

Onglets : Charge de travail

Filtres : Espace de noms, Charge de travail

Portée : Explorateur de journaux

Interrogation :

'Log Source' in ('Kubernetes DaemonSet Object Logs', 'Kubernetes Deployment Object Logs', 'Kubernetes CronJob Object Logs', 'Kubernetes Job Object Logs', 'Kubernetes StatefulSet Object Logs')
 | eval Name = if('Log Source' = 'Kubernetes Deployment Object Logs', Deployment, 'Log Source' = 'Kubernetes DaemonSet Object Logs', DaemonSet, 'Log Source' = 'Kubernetes CronJob Object Logs', CronJob, 'Log Source' = 'Kubernetes Job Object Logs', Job, 'Log Source' = 'Kubernetes StatefulSet Object Logs', StatefulSet, null)
 | link Namespace, 'Log Source', Name
 | eval Type = if('Log Source' = 'Kubernetes Deployment Object Logs', literal(Deployment), 'Log Source' = 'Kubernetes DaemonSet Object Logs', literal(DaemonSet), 'Log Source' = 'Kubernetes CronJob Object Logs', literal(CronJob), 'Log Source' = 'Kubernetes Job Object Logs', literal(Job), 'Log Source' = 'Kubernetes StatefulSet Object Logs', literal(StatefulSet), null)
 | addfields [ 'Log Source' = 'Kubernetes Deployment Object Logs'
 | eventstats latest('Available Status') as 'DP Available', latest(Replicas) as 'DP Desired', latest('Ready Replicas') as 'DP Ready', latest('Updated Replicas') as 'DP Updated', latest('Available Replicas') as 'DP Available R', latest('Object Creation Time') as 'DP OCR' by Namespace, Name ], [ 'Log Source' = 'Kubernetes DaemonSet Object Logs'
 | eventstats latest('Desired Number Scheduled') as 'DM Desired', latest('Ready Count') as 'DM Ready', latest('Updated Replicas') as 'DM Updated', latest('Current Scheduled') as 'DM Scheduled', latest('Object Creation Time') as 'DM OCR' by Namespace, Name ], [ 'Log Source' = 'Kubernetes CronJob Object Logs'
 | eventstats latest(Schedule) as 'CR Schedule', latest(Suspend) as 'CR Suspended', latest('Last Schedule Time') as 'CR Last Schedule', latest('Object Creation Time') as 'CR OCR' by Namespace, Name ], [ 'Log Source' = 'Kubernetes Job Object Logs'
 | eventstats latest(Completions) as 'JB Completions', latest(Status) as 'JB Status', latest('Object Creation Time') as 'JB OCR' by Namespace, Name ], [ 'Log Source' = 'Kubernetes StatefulSet Object Logs'
 | eventstats latest(Replicas) as 'SS Replicas', latest('Current Replicas') as 'SS Current Replicas', latest('Desired Replicas') as 'SS Desired Replicas', latest('Ready Replicas') as 'SS Ready Replicas', latest('Object Creation Time') as 'SS OCR' by Namespace, Name ]
 | eval OCR = if('Log Source' = 'Kubernetes Deployment Object Logs', 'DP OCR', 'Log Source' = 'Kubernetes DaemonSet Object Logs', 'DM OCR', 'Log Source' = 'Kubernetes CronJob Object Logs', 'CR OCR', 'Log Source' = 'Kubernetes Job Object Logs', 'JB OCR', 'Log Source' = 'Kubernetes StatefulSet Object Logs', 'SS OCR', null)
 | eval Age = unit('End Time' - OCR, ms) | eval Status = if('Log Source' = 'Kubernetes Deployment Object Logs' and 'DP Available' = true, Available, 'Log Source' = 'Kubernetes DaemonSet Object Logs' and 'DM Desired' = 'DM Ready', Available, 'Log Source' = 'Kubernetes CronJob Object Logs' and 'CR Suspended' = true, Suspended || ' (Last Scheduled: ' || formatDate('CR Last Schedule') || ')', 'Log Source' = 'Kubernetes CronJob Object Logs' and 'CR Suspended' = false, ' Last Scheduled: ' || formatDate('CR Last Schedule'), 'Log Source' = 'Kubernetes Job Object Logs' and 'JB Status' = complete, Complete, 'Log Source' = 'Kubernetes Job Object Logs' and 'JB Status' = failed, Failed, 'Log Source' = 'Kubernetes Job Object Logs', 'JB Status', 'Log Source' = 'Kubernetes StatefulSet Object Logs' and ('SS Desired Replicas' = 'SS Replicas' and 'SS Desired Replicas' = 'SS Ready Replicas'), Available, 'Not Available')
 | createtable name = Workloads select Namespace, Type, Name, Status, Age
 | fields -'DP *', -'DM *', -'JB *', -'SS *', -OCR

Sommaire des noeuds

Onglets : Noeud

Filtres : Espace de noms, Charge de travail, Noeud

Portée : Explorateur de journaux

Interrogation :

'Log Source' = 'Kubernetes Node Object Logs'
 | link Node
 | stats latest('Ready Status') as 'Ready Status', latest('Ready Reason') as 'Ready Reason', latest('Disk Pressure Status') as 'Disk Pressure', latest('Memory Pressure Status') as 'Memory Pressure', latest('PID Pressure Status') as 'PID Pressure', latest(Architecture) as Arch, latest('Operating System Image') as 'OS Image', latest('Kernel Version') as Kernel, latest('Container Runtime Version') as 'Container Runtime', latest('Kubelet Version') as Kubelet, latest('KubeProxy Version') as KubeProxy, latest('CPU Allocatable') as 'CPU A', latest('CPU Capacity') as 'CPU C', latest('Memory Allocatable') as 'Memory A', latest('Memory Capacity') as 'Memory C'
 | eval Status = if('Ready Status' = true, Ready, 'Not Ready')
 | eval Issues = if('Disk Pressure' != true and 'Memory Pressure' != true and 'PID Pressure' != true and Status = Ready, 'No Issues', 'Disk Pressure' = true and 'Memory Pressure' = true and 'PID Pressure' = true, 'Low on Disk, Memory and PID', 'Disk Pressure' = true and 'Memory Pressure' = true and 'PID Pressure' != true, 'Low on Disk and Memory', 'Disk Pressure' = true and 'Memory Pressure' != true and 'PID Pressure' = true, 'Low on Disk and PID', 'Disk Pressure' = true and 'Memory Pressure' != true and 'PID Pressure' != true, 'Low on Disk', 'Disk Pressure' != true and 'Memory Pressure' = true and 'PID Pressure' = true, 'Low on Memory and PID', 'Disk Pressure' != true and 'Memory Pressure' = true and 'PID Pressure' != true, 'Low on Memory', 'Disk Pressure' != true and 'Memory Pressure' != true and 'PID Pressure' = true, 'Low on PID', Status = 'Not Ready' and 'Ready Reason' != null, 'Ready Reason', Unknown)
 | eval CPU = 'CPU C' || ' /  ' || 'CPU A' | eval 'Memory (Capacity)' = unit('Memory C', byte)
 | eval 'Memory (Allocatable)' = unit('Memory A', byte)
 | eval Age = unit('Query End Time' - 'End Time', ms)
 | eval 'Kubelet / KubeProxy Versions' = Kubelet || ' / ' || KubeProxy
 | eval OS = 'OS Image' || ' (' || Arch || ') ' || Kernel
 | createtable name = 'Node Summary' select Node as Name, Status, Issues, Age, OS, 'Container Runtime', 'Kubelet / KubeProxy Versions', CPU, 'Memory (Capacity)', 'Memory (Allocatable)'

Sommaire des pods

Onglets : Pod

Filtres : Espace de noms, Charge de travail, Noeud

Portée : Explorateur de journaux

Interrogation :

'Log Source' = 'Kubernetes Pod Object Logs'
 | link Pod
 | stats latest('Pod Phase') as Status, latest(Node) as Node, latest(Namespace) as Namespace, latest('Pod IP Address') as 'Pod IP', latest(Controller) as Controller, latest('Controller Kind') as 'Controller Kind', latest('Scheduler Name') as Scheduler
 | createtable name = 'Pod Summary' select Pod as Name, Status, Node, Namespace, 'Pod IP', Controller, 'Controller Kind', Scheduler
 | fields 'End Time' as 'Last Reported', -Count