Query utilizzate nella soluzione Kubernetes
Le query vengono utilizzate per estrarre i dati di metriche, eventi, topologia e analisi da visualizzare in vari pannelli disponibili nella soluzione Kubernetes. Alcune query basate su log, ad esempio quelle per il sistema Kubernetes, lo stato del sistema operativo, gli eventi, il riepilogo dei carichi di lavoro, il riepilogo dei nodi e il riepilogo dei pod, devono essere eseguite in Log Explorer e le altre query sono metriche basate che devono essere eseguite in Metric Explorer.
Argomenti:
Query per i widget di pannello giusti nella soluzione Kubernetes
Argomenti:
- Sistema Kubernetes
- Stato del sistema operativo
- Memorie centrali CPU (utilizzate/allocabili)
- Memoria (utilizzata/allocabile)
- Memorie centrali CPU usate
- Memoria usata
- Rete: rx byte
- Rete: tx byte
- Tasso Rx pacchetti di rete
- Rete: tasso Tx pacchetti
- Rete: tasso Rx pacchetti scartati
- Rete: tasso Tx pacchetti di rete scartati
- Durata richiesta API Server
- durata richiesta e così via
- Totale richieste server API
- Dimensione della risposta API
- Durata esecuzione richiesta API
Sistema Kubernetes
Visualizza le metriche generali dello stato o delle prestazioni dei componenti critici del sistema Kubernetes (ad esempio, kube-apiserver, controller manager o scheduler). Questo widget aiuta a garantire che i servizi essenziali del piano di controllo funzionino senza problemi.
Schede: Cluster
Filtri: nessuno
Ambito: Log Explorer
Query:
'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', -ErrorStato del sistema operativo
Fornisce approfondimenti sullo stato del sistema operativo sui nodi Kubernetes, spesso aggregando metriche come CPU, memoria, disco e stati dei processi di sistema. Ciò garantisce che il sistema operativo di base non diventi un punto critico per i carichi di lavoro.
Schede: Cluster, Nodo
Filtri: nessuno
Ambito: Log Explorer
Query:
'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', -ErrorMemorie centrali CPU (utilizzate/allocabili)
Questo widget visualizza la percentuale di memorie centrali CPU attualmente in uso rispetto alle memorie centrali allocabili totali nell'ambiente Kubernetes. Offre una rapida indicazione visiva dell'efficienza complessiva dell'utilizzo della CPU in tutto il cluster.
Schede: Cluster, Carico di lavoro, Nodo, Pod
Filtri: Spazio di nomi, Carico di lavoro, Nodo
Ambito: Explorer metriche
Query:
clusterCPUUtilization[1m]{clusterName = "k8s_solution_development"}.mean()Per una query di esempio con filtri, vedere la query del widget Larghezza di banda di rete.
Memoria (utilizzata/allocabile)
Mostra la percentuale di memoria utilizzata rispetto alla memoria allocabile totale nel cluster. Consente di valutare la pressione della memoria e garantire che i carichi di lavoro dispongano di risorse di memoria sufficienti.
Schede: Cluster, Carico di lavoro, Nodo, Pod
Filtri: Spazio di nomi, Carico di lavoro, Nodo
Ambito: Explorer metriche
Query:
clusterMemoryUtilization[1m]{clusterName = "k8s_solution_development"}.mean()Per una query di esempio con filtri, vedere la query del widget Larghezza di banda di rete.
Memorie centrali CPU usate
Mostra il numero assoluto di memorie centrali CPU attualmente utilizzate dai carichi di lavoro all'interno del cluster. Il monitoraggio aiuta a identificare le tendenze del consumo della CPU e i potenziali hotspot.
Schede: Cluster, Carico di lavoro, Nodo, Pod
Filtri: Spazio di nomi, Carico di lavoro, Nodo
Ambito: Explorer metriche
Query:
podCpuUsage[1m]{clusterName = "oke-cw22-ll", namespace = "kube-system", nodeName = "192.0.2.1", podName =~"coredns*"}.mean().grouping().sum()Memoria usata
Indica la quantità totale di memoria (in unità KB, MB, GB) attualmente in uso nelle risorse del cluster. In questo modo è possibile monitorare gli andamenti della memoria per la pianificazione della capacità e la risoluzione dei problemi.
Schede: Cluster, Carico di lavoro, Nodo, Pod
Filtri: Spazio di nomi, Carico di lavoro, Nodo
Ambito: Explorer metriche
Query:
podMemoryUsage[1m]{clusterName = "oke-cw22-ll", namespace = "kube-system", nodeName = "192.0.2.1", podName =~"coredns*"}.mean().grouping().sum()Rete: rx byte
Visualizza la frequenza cumulativa o corrente dei byte di rete ricevuti dal cluster o un nodo/pod specifico. Questa metrica consente di monitorare il volume del traffico di rete in entrata. Eseguire la query sullo spazio di nomi mgmtagent_kubernetes_metrics.
Schede: Cluster, Carico di lavoro, Nodo, Pod
Filtri: Spazio di nomi, Carico di lavoro, Nodo
Ambito: Explorer metriche
Query di esempio:
container_network_receive_bytes_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)Rete: tx byte
Mostra la frequenza cumulativa o corrente dei byte di rete trasmessi dal cluster o da un nodo/pod specifico. Consente di tenere traccia del traffico in uscita e dei potenziali problemi di uscita. Eseguire la query sullo spazio di nomi mgmtagent_kubernetes_metrics.
Schede: Cluster, Carico di lavoro, Nodo, Pod
Filtri: Spazio di nomi, Carico di lavoro, Nodo
Ambito: Explorer metriche
Query di esempio:
container_network_transmit_bytes_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)Tasso Rx pacchetti di rete
Indica la frequenza di ricezione dei pacchetti di rete. Ciò consente di identificare le tendenze e i picchi nel volume di pacchetti in entrata che possono influire sulle prestazioni della rete. Eseguire la query sullo spazio di nomi mgmtagent_kubernetes_metrics.
Schede: Cluster, Carico di lavoro, Nodo, Pod
Filtri: Spazio di nomi, Carico di lavoro, Nodo
Ambito: Explorer metriche
Query di esempio:
container_network_receive_packets_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)Rete: tasso Tx pacchetti
Misura la velocità dei pacchetti di rete inviati dai nodi o dai pod. Aiuta a diagnosticare l'attività di rete in uscita e la possibile saturazione. Eseguire la query sullo spazio di nomi mgmtagent_kubernetes_metrics.
Schede: Cluster, Carico di lavoro, Nodo, Pod
Filtri: Spazio di nomi, Carico di lavoro, Nodo
Ambito: Explorer metriche
Query di esempio:
container_network_receive_packets_dropped_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)Rete: tasso Rx pacchetti scartati
Mostra la frequenza di eliminazione dei pacchetti di rete in entrata a causa di problemi quali la congestione della rete o l'overflow del buffer. Un tasso di calo elevato indica potenziali problemi di rete che richiedono attenzione. Eseguire la query sullo spazio di nomi mgmtagent_kubernetes_metrics.
Schede: Cluster, Carico di lavoro, Nodo, Pod
Filtri: Spazio di nomi, Carico di lavoro, Nodo
Ambito: Explorer metriche
Query di esempio:
“container_network_transmit_packets_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)Rete: tasso Tx pacchetti di rete scartati
Visualizza la velocità di eliminazione dei pacchetti di rete in uscita. Valori elevati persistenti possono suggerire problemi del buffer di rete, configurazioni errate o limitazioni hardware. Eseguire la query sullo spazio di nomi mgmtagent_kubernetes_metrics.
Schede: Cluster, Carico di lavoro, Nodo, Pod
Filtri: Spazio di nomi, Carico di lavoro, Nodo
Ambito: Explorer metriche
Query di esempio:
container_network_transmit_packets_dropped_total[1m]{clusterName=“oke-cw22-ll“}.groupBy(interface).rate().filter(x=>x>=0)Durata richiesta API Server
Visualizza i dati statistici (media, percentile e così via) sulla durata del completamento delle richieste del server API. Le durate più lunghe possono segnalare i colli di bottiglia del server API o i problemi del servizio backend.
Schede: Cluster, Carico di lavoro, Nodo, Pod
Filtri: nessuno
Ambito: Explorer metriche
Query:
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()durata richiesta e così via
Mostra la latenza necessaria per l'elaborazione delle richieste a etcd, l'area di memorizzazione chiave-valore distribuita che esegue il backup di Kubernetes. Le durate più elevate qui possono influenzare la reattività complessiva del piano di controllo.
Schede: Cluster
Filtri: nessuno
Ambito: Explorer metriche
Query:
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()Totale richieste server API
Mostra il numero totale di richieste ricevute dal server API Kubernetes in un periodo specificato. Numeri elevati o elevati potrebbero indicare un aumento dell'attività di gestione del cluster o potenziali problemi come i sovraccarichi di script automatizzati.
Schede: Cluster
Filtri: nessuno
Ambito: Explorer metriche
Query:
apiserver_request_total[5m]{clusterName = "oke-cw22-ll"}.groupBy(code).rate().filter(x=>x>=0)Dimensione della risposta API
Misura la dimensione delle risposte (in byte) restituite dal server API Kubernetes. Le risposte di grandi dimensioni possono influire sull'utilizzo della rete e sulle prestazioni del client.
Schede: Cluster
Filtri: nessuno
Ambito: Explorer metriche
Query:
apiserver_response_sizes_sum[5m]{clusterName = "oke-cw22-ll"}.groupBy(verb).sum() / apiserver_response_sizes_count[5m]{clusterName= "oke-cw22-ll"}.groupBy(verb).sum()Durata esecuzione richiesta API
Si concentra sul tempo richiesto dal server API per elaborare ed eseguire le richieste in entrata. Il monitoraggio consente di rilevare il degrado delle prestazioni o il sovraccarico dei server API.
Schede: Cluster
Filtri: nessuno
Ambito: Explorer metriche
Query:
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()Query per la tabella Eventi nella soluzione Kubernetes
Schede: Cluster, Carico di lavoro, Nodo, Pod
Filtri: Spazio di nomi
Ambito: Log Explorer
Query:
'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', -CountQuery per le tabelle di topologia e dettagli cluster nella soluzione Kubernetes
Riepilogo carichi di lavoro
Schede: Carico di lavoro
Filtri: Spazio di nomi, Carico di lavoro
Ambito: Log Explorer
Query:
'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 *', -OCRRiepilogo nodi
Schede: Nodo
Filtri: Spazio di nomi, Carico di lavoro, Nodo
Ambito: Log Explorer
Query:
'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)'Riepilogo pod
Schede: Pod
Filtri: Spazio di nomi, Carico di lavoro, Nodo
Ambito: Log Explorer
Query:
'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