Requêtes utilisées dans la solution Kubernetes
Les requêtes 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 requêtes basées sur les journaux, telles que celles pour le système Kubernetes, l'état du système d'exploitation, les événements, le récapitulatif des charges globales, le récapitulatif des noeuds et le récapitulatif des pods, doivent être exécutées dans l'explorateur de journaux et les autres requêtes sont basées sur des mesures qui doivent être exécutées dans l'explorateur de mesures.
Rubriques :
Requêtes pour les widgets de panneau de droite dans la solution Kubernetes
Rubriques :
- Système Kubernetes
- Etat du système d'exploitation
- Coeurs d'UC (utilisés/allouables)
- Mémoire (utilisée/allocable)
- Coeurs d'UC utilisés
- Mémoire employée
- Réseau : réception d'octets
- Réseau : transmission d'octets
- Taux de réception de paquets réseau
- Réseau : taux de transmission de paquets
- Réseau : taux de réception de paquets supprimés
- Réseau : taux de transmission de paquets supprimé
- Durée de la demande de serveur d'API
- Durée de la demande etcd
- Nombre total de demandes du serveur d'API
- Taille de la réponse d'API
- Durée d'exécution de la demande d'API
Système Kubernetes
Affiche les mesures globales de l'état ou des performances des composants système Kubernetes critiques (tels que kube-apiserver, gestionnaire de contrôleurs ou planificateur). Ce widget permet de garantir le bon fonctionnement des services essentiels du plan de contrôle.
Onglets : Cluster
Filtres : Aucun
Portée : Explorateur de journaux
Requête :
'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
Etat du système d'exploitation
Fournit des informations sur l'état du système d'exploitation sur les noeuds Kubernetes, en agrégeant souvent des mesures telles que les statuts de CPU, de mémoire, de disque et de processus système. Ainsi, le système d'exploitation sous-jacent ne devient pas un goulet d'étranglement pour les charges de travail.
Onglets : Cluster, Noeud
Filtres : Aucun
Portée : Explorateur de journaux
Requête :
'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/allouables)
Ce widget affiche le pourcentage de coeurs de processeur actuellement utilisés par rapport au nombre total de coeurs allouables dans votre environnement Kubernetes. Il fournit une indication visuelle rapide de l'efficacité globale de l'utilisation de l'UC dans votre cluster.
Onglets : Cluster, Charge globale, Noeud, Pod
Filtres : Espace de noms, Charge globale, Noeud
Portée : Explorateur de mesures
Requête :
clusterCPUUtilization[1m]{clusterName = "k8s_solution_development"}.mean()
Pour obtenir un exemple de requête avec des filtres, reportez-vous à la requête de widget Bande passante réseau.
Mémoire (utilisée/allocable)
Affiche le pourcentage de mémoire utilisée par rapport à la mémoire allouable totale dans le cluster. Il permet d'évaluer la pression de la mémoire et de s'assurer que les charges de travail disposent de ressources de mémoire suffisantes.
Onglets : Cluster, Charge globale, Noeud, Pod
Filtres : Espace de noms, Charge globale, Noeud
Portée : Explorateur de mesures
Requête :
clusterMemoryUtilization[1m]{clusterName = "k8s_solution_development"}.mean()
Pour obtenir un exemple de requête avec des filtres, reportez-vous à la requête de widget Bande passante réseau.
Coeurs d'UC utilisés
Indique le nombre absolu de coeurs de processeur actuellement utilisés par les charges globales au sein du cluster. Cette surveillance permet d'identifier les tendances de consommation de CPU et les points chauds potentiels.
Onglets : Cluster, Charge globale, Noeud, Pod
Filtres : Espace de noms, Charge globale, Noeud
Portée : Explorateur de mesures
Requête :
podCpuUsage[1m]{clusterName = "oke-cw22-ll", namespace = "kube-system", nodeName = "192.0.2.1", podName =~"coredns*"}.mean().grouping().sum()
Mémoire employée
Indique la quantité totale de mémoire (en unités Ko, Mo, Go) actuellement utilisée sur les ressources du cluster. Cela vous aide à surveiller les tendances de la mémoire pour la planification de la capacité et le dépannage.
Onglets : Cluster, Charge globale, Noeud, Pod
Filtres : Espace de noms, Charge globale, Noeud
Portée : Explorateur de mesures
Requête :
podMemoryUsage[1m]{clusterName = "oke-cw22-ll", namespace = "kube-system", nodeName = "192.0.2.1", podName =~"coredns*"}.mean().grouping().sum()
Réseau : réception d'octets
Affiche le débit cumulé ou actuel des octets 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 la requête sur l'espace de noms mgmtagent_kubernetes_metrics.
Onglets : Cluster, Charge globale, Noeud, Pod
Filtres : Espace de noms, Charge globale, Noeud
Portée : Explorateur de mesures
Exemple de requête:
container_network_receive_bytes_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)
Réseau : transmission d'octets
Affiche le débit cumulé ou actuel des octets réseau transmis à partir du cluster ou d'un noeud/pod spécifique. Il permet de suivre le trafic sortant et les problèmes potentiels de sortie. Exécutez la requête sur l'espace de noms mgmtagent_kubernetes_metrics.
Onglets : Cluster, Charge globale, Noeud, Pod
Filtres : Espace de noms, Charge globale, Noeud
Portée : Explorateur de mesures
Exemple de requête:
container_network_transmit_bytes_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)
Taux de réception 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 susceptibles d'avoir un impact sur les performances du réseau. Exécutez la requête sur l'espace de noms mgmtagent_kubernetes_metrics.
Onglets : Cluster, Charge globale, Noeud, Pod
Filtres : Espace de noms, Charge globale, Noeud
Portée : Explorateur de mesures
Exemple de requête:
container_network_receive_packets_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)
Réseau : taux de transmission de paquets
Mesure le taux de paquets réseau envoyés depuis les noeuds ou pods. Il permet de diagnostiquer l'activité du réseau sortant et la saturation possible. Exécutez la requête sur l'espace de noms mgmtagent_kubernetes_metrics.
Onglets : Cluster, Charge globale, Noeud, Pod
Filtres : Espace de noms, Charge globale, Noeud
Portée : Explorateur de mesures
Exemple de requête:
container_network_receive_packets_dropped_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)
Réseau : taux de réception de paquets supprimés
Affiche le taux de paquets réseau entrants supprimés en raison de problèmes tels que la congestion du réseau ou le débordement de tampon. Un taux de chute élevé indique des problèmes de réseau potentiels nécessitant une attention particulière. Exécutez la requête sur l'espace de noms mgmtagent_kubernetes_metrics.
Onglets : Cluster, Charge globale, Noeud, Pod
Filtres : Espace de noms, Charge globale, Noeud
Portée : Explorateur de mesures
Exemple de requête:
“container_network_transmit_packets_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)
Réseau : taux de transmission de paquets supprimé
Affiche la vitesse à laquelle les paquets réseau sortants sont supprimés. Les 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 la requête sur l'espace de noms mgmtagent_kubernetes_metrics.
Onglets : Cluster, Charge globale, Noeud, Pod
Filtres : Espace de noms, Charge globale, Noeud
Portée : Explorateur de mesures
Exemple de requête:
container_network_transmit_packets_dropped_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)
Durée de la demande de serveur d'API
Affiche des données statistiques (moyenne, centile, etc.) sur la durée de traitement des demandes du serveur API. Des durées plus longues peuvent signaler des goulets d'étranglement du serveur d'API ou des problèmes de service back-end.
Onglets : Cluster, Charge globale, Noeud, Pod
Filtres : Aucun
Portée : Explorateur de mesures
Requête :
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, la banque clé-valeur distribuée sous-jacente à Kubernetes. Des durées plus élevées peuvent affecter la réactivité globale du plan de contrôle.
Onglets : Cluster
Filtres : Aucun
Portée : Explorateur de mesures
Requête :
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 du serveur d'API
Affiche le nombre total de demandes reçues par le serveur d'API Kubernetes sur une période spécifiée. Des nombres élevés ou élevés peuvent indiquer une augmentation de l'activité de gestion de cluster ou des problèmes potentiels tels que des surcharges de scripts automatisés.
Onglets : Cluster
Filtres : Aucun
Portée : Explorateur de mesures
Requête :
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) renvoyées par le serveur d'API Kubernetes. Les grandes tailles de réponse peuvent avoir un impact sur l'utilisation du réseau et les performances du client.
Onglets : Cluster
Filtres : Aucun
Portée : Explorateur de mesures
Requête :
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
Se concentre sur le temps requis par le serveur d'API pour traiter et exécuter les demandes entrantes. Cette surveillance permet de détecter les dégradations de performances ou les serveurs d'API surchargés.
Onglets : Cluster
Filtres : Aucun
Portée : Explorateur de mesures
Requête :
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()
Requêtes pour la table Evénements dans la solution Kubernetes
Onglets : Cluster, Charge globale, Noeud, Pod
Filtres : Espace de noms
Portée : Explorateur de journaux
Requête :
'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
Requêtes pour les tables de détails et de topologie de cluster dans la solution Kubernetes
Synthèse des charges de travail
Onglets : Charge globale
Filtres : Espace de noms, Charge globale
Portée : Explorateur de journaux
Requête :
'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
Récapitulatif du noeud
Onglets : Noeud
Filtres : Espace de noms, Charge globale, Noeud
Portée : Explorateur de journaux
Requête :
'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)'
Récapitulatif du pod
Onglets : Pod
Filtres : Espace de noms, Charge globale, Noeud
Portée : Explorateur de journaux
Requête :
'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