Monitoraggio di CRI-O

Il sensore « CRI-O » viene distribuito e installato automaticamente dopo l'installazione dell'agente « Instana ».

Introduzione

Instana rileva e monitora automaticamente i contenitori CRI-O per fornirti informazioni in tempo reale su metadati (etichette), metriche e tutte le tecnologie supportate in esecuzione all'interno di ciascun contenitore rilevato.

Oltre a monitorare lo stato di salute di ciascun container e a ricevere avvisi in caso di problemi, puoi anche attivare il rilevamento dei servizi per sfruttare tutte le informazioni relative ai tuoi container.

Informazioni sul supporto

Per assicurarti che il sensore CRI-O sia compatibile con la tua configurazione attuale, consulta le seguenti sezioni delle informazioni di supporto:

Versioni supportate e politica di assistenza

La tabella seguente riporta l'ultima versione supportata e la politica di assistenza:

Tecnologia Politica di assistenza Versione con tecnologia all'avanguardia Ultima versione supportata
CRI-O 45 giorni 1.36.1 1.36.1

Per ulteriori informazioni sulla politica di assistenza, consultare la sezione "Strategia di assistenza per i sensori".

Prerequisiti

Per il monitoraggio di CRI-O, assicurarsi che siano soddisfatti i seguenti requisiti di versione:

  • Instana versione: 1.2.19 o successive
  • Sensore CRI-O: 1.0.15 o versioni successive

Configurazione del monitoraggio dell' CRI-O

L'agente monitora in modo nativo CRI-O e la configurazione è facoltativa.

Configurazione della frequenza di polling

Nota: Instana CRI-O sensor 1.0.16 e versioni successive supportano la configurazione della frequenza di polling per ridurre l'acquisizione dei dati. Questa funzionalità è supportata nel backend Instana in gestione autonoma a partire dalla versione 311.

È possibile configurare la frequenza con cui l' Instana interroga CRI-O per raccogliere dati e metriche utilizzando il poll_rate parametro nel file configuration.yaml dell'agent, come mostrato nell'esempio seguente:

com.instana.plugin.crio:
  poll_rate: 1 # values are in seconds. Default value is 1 second.

Raccolta di metriche

Per visualizzare una panoramica dell'utilizzo della CPU e della memoria dei tuoi container, attiva l'opzione "Panoramica delle metriche" sulla mappa dell'infrastruttura. È inoltre possibile utilizzare la funzione Dynamic Focus per identificare e isolare parti dell'infrastruttura nel contesto dei container.

Per impostazione predefinita, le metriche CRI-O vengono raccolte ogni 10 secondi. Questo intervallo può essere configurato nel file di configurazione agent <agent_install_dir>/etc/instana/configuration.yml:

com.instana.plugin.crio:
  stats:
    interval: 10
 

Nella dashboard del container di CRI-O vengono visualizzate le metriche relative alla configurazione e alle prestazioni del container.

Metti in pausa i contenitori

Il contenitore pause è un contenitore che contiene il namespace di rete per il pod. Kubernetes crea contenitori in pausa per acquisire l'indirizzo IP del rispettivo pod e configurare lo spazio dei nomi di rete per tutti i contenitori che si uniscono a quel pod.

I contenitori Infra (pausa) sono esclusi dal monitoraggio infra per impostazione predefinita per i motivi seguenti:

  • Il numero di contenitori monitorati in un ambiente viene raddoppiato quando vengono inclusi. L'esclusione può ridurre i costi di monitoraggio dell' Instana.
  • Il monitoraggio dei contenitori di pausa non fornisce molte informazioni sul livello dell'infrastruttura perché agiscono come contenitori di supporto della rete sidecar.

Dati di configurazione

Configurazione Descrizione
ID L'ID del contenitore
Nome Il nome contenitore
Immagine Il nome dell'immagine " CRI-O "
IP L'indirizzo IP del container
Creato Data e ora di creazione del contenitore
Versione CRI-O Numero di versione del runtime di CRI-O

Metriche di prestazioni

Per raccogliere i dati sulle prestazioni, eseguire il runc comando.

La tabella seguente riassume i dati relativi all'utilizzo della CPU e della memoria:

Metrica Descrizione Punto di dati
% totale CPU Percentuale totale di utilizzo della CPU Totale delle chiavi restituite nell'oggettocpu.usage
Utilizzo della memoria Utilizzo totale memoria Chiave di utilizzo restituita nell'oggettomemory.raw
% utilizzo memoria Utilizzo totale della memoria in percentuale Calcolato in basememory.total aglimemory.usage oggetti

Raccolta delle metriche della CPU

CRI-O I sensori gestiscono la raccolta dei dati e indirizzano l'analisi della CPU del cgroup all'agente. Il parser legge i file di statistiche della CPU dai rispettivi percorsi delle directory dei cgroup.

Al termine dell'analisi, il sensore " CRI-O " restituisce un oggetto CPU contenente le metriche della CPU.

I passaggi seguenti descrivono la procedura per la raccolta e l'analisi delle metriche della CPU in CRI-O :

  1. Identificazione dei percorsi delle directory dei cgroup: l'agente identifica la versione del cgroup ( v1 o v2 ) e i rispettivi percorsi delle directory dei cgroup in base al processo del sistema operativo:

    • cgroup v2:/proc/1/root/sys/fs/cgroup e cgroupPath
    • cgroup v1:/proc/1/root/sys/fs/cgroup/cpu e cgroupPath
  2. Analisi delle statistiche della CPU per le directory dei cgroup ( v2 e v1 ): il parser legge i file relativi alla CPU dai rispettivi percorsi delle directory dei cgroup.

    • Per le directory cgroup v2 :

      La tabella seguente elenca le metriche relative all'utilizzo e alla limitazione che vengono ricavate dal cpu.stat file presente nell'oggetto CPU:

      Metriche Descrizione v2 Origine
      Metriche di utilizzo Utilizzo totale della CPU (in nanosecondi) total =usage_usec * 1000 cpu.stat file
      Per utilizzo della CPU percpu = 0 (il cgroup v2 non fornisce direttamente i dati sull'utilizzo per CPU) cpu.stat file
      Tempo CPU utente user =user_usec * 1000 (in nanosecondi) Vedi la nota seguente cpu.stat file
      Tempo CPU sistema kernel =system_usec * 1000 (in nanosecondi) Vedi la nota seguente cpu.stat file
      Metriche di limitazione Numero di periodi periods =nr_periods cpu.stat file
      Numero di periodi con limitazione throttledPeriods =nr_throttled cpu.stat file
      Tempo di limitazione throttledTime =throttled_usec * 1000 (in nanosecondi) cpu.stat file
      Nota: sia user_usec che system_usec devono essere disponibili per l'analisi sintattica. Se uno dei due non è disponibile, il tempo di CPU corrispondente viene impostato su 0.
    • Per le directory cgroup v1 :

      La tabella seguente elenca le metriche di utilizzo e di limitazione per l' v1 e cgroup nell'oggetto CPU:

      Metriche Descrizione v1 Origine
      Metriche di utilizzo Utilizzo totale della CPU (in nanosecondi) total cpuacct.usage file
      Per utilizzo della CPU percpu cpuacct.usage_percpu Imposta un elenco di valori dal file
      Tempo CPU utente user =user * 1000000 (ns) cpuacct.stat file
      Tempo CPU sistema kernel =system * 1000000 (ns) cpuacct.stat file
      Metriche di limitazione Numero di periodi periods =nr_periods cpu.stat file
      Numero di periodi con limitazione throttledPeriods =nr_throttled cpu.stat file
      Tempo di limitazione throttledTime =throttled_time cpu.stat file
  3. Aggiornamento e restituzione delle metriche della CPU:

    La tabella seguente fornisce una mappatura completa delle metriche della CPU ai relativi oggetti di origine:

    Metriche CPU Oggetto di origine
    Metriche sull'utilizzo della CPU cpu.usage oggetto
    cpuTotalUsageNanoseconds cpu.usage.total
    cpuSystemUsageNanoseconds cpu.usage.kernel
    cpuUserUsageNanoseconds cpu.usage.user
    cpuTotalUsage cpuTotalUsageNanoseconds delta (tempo totale di utilizzo della CPU del container in un intervallo di tempo) /system delta (tempo totale di CPU disponibile del sistema)
    cpuUserUsage cpuUserUsageNanoseconds delta (tempo di utilizzo della CPU del container in modalità utente in un intervallo di tempo) /system delta (tempo totale di CPU disponibile del sistema)
    cpuSystemUsage cpuSystemUsageNanoseconds delta (tempo di utilizzo della CPU del container in modalità sistema o kernel in un intervallo di tempo) / (system delta (tempo totale di CPU disponibile del sistema))
    Metriche di limitazione cpu.throttling oggetto
    throttlingCount cpu.throttling.throttledPeriods
    throttlingTime cpu.throttling.throttledTime
  4. Visualizzazione delle metriche della CPU nell'interfaccia utente di Instana dal backend:

    La tabella seguente riassume le metriche della CPU visualizzate nell'interfaccia utente di Instana :

    Metriche CPU Descrizione Valore di origine
    Total (cpu.total_usage) Utilizzo totale CPU cpuTotalUsage
    Kernel (cpu.system_usage) Utilizzo CPU di sistema cpuSystemUsage
    User (cpu.user_usage) Utilizzo della CPU da parte dell'utente cpuUserUsage
    Throttling Count (cpu.throttling_count) Numero di periodi con limitazione throttlingCount
    Throttling Time (cpu.throttling_time) Tempo di limitazione throttlingTime

Raccolta delle metriche relative alla memoria

CRI-O I sensori gestiscono la raccolta dei dati e indirizzano l'analisi della memoria del cgroup all'agente. Il parser di memoria legge i file di memoria dai rispettivi percorsi delle directory dei cgroup. Al termine dell'analisi, il sensore " CRI-O " restituisce un oggetto di memoria contenente le metriche relative alla memoria.

I passaggi seguenti descrivono la procedura per la raccolta e l'analisi delle metriche relative alla memoria in CRI-O :

  1. Identificazione dei percorsi delle directory dei cgroup: l'agente identifica la versione del cgroup ( v1 o v2 ) e i rispettivi percorsi delle directory dei cgroup in base al processo del sistema operativo:

    • cgroup v2:/proc/1/root/sys/fs/cgroup e cgroupPath
    • cgroup v1:/proc/1/root/sys/fs/cgroup/memory e cgroupPath
  2. Analisi delle statistiche di memoria per le directory dei cgroup: il parser legge i file di memoria dai rispettivi percorsi delle directory dei cgroup.

    • Per le directory cgroup v2 :

      La tabella seguente fornisce una mappatura completa delle metriche di memoria ai rispettivi file sorgente:

      Metriche della memoria File di origine
      Memoria di base File di memoria di base
      usage memory.stat (file +anon)
      limit memory.max
      max memory.peak
      Memoria di swap File di swap
      usage memory.swap.current
      limit memory.swap.max
      max memory.swap.peak
      Campo di memoria grezza (memory.raw) memory.stat file
      activeAnon active_anon
      activeFile active_file
      inactiveAnon inactive_anon
      inactiveFile inactive_file
      totalCache total_cache
      totalRss total_rss
      Campi di memoria (memory) memory.stat file
      cache file
      rss anon
      Nota: Per garantire la compatibilità con v1, la memoria di swap complessiva viene calcolata sommando la memoria di base e la memoria di swap: swap.usage = Utilizzo della memoria di base + swap.usage. swap.limit = Limite di memoria di base + swap.limit swap.max = 0
    • Per le directory cgroup v1 :

      La tabella seguente fornisce una mappatura completa delle metriche di memoria ai rispettivi file sorgente:

      Metriche della memoria File di origine
      Memoria di base File di memoria di base
      usage memory.usage_in_bytes
      max memory.max_usage_in_bytes
      limit memory.limit_in_bytes
      failcnt memory.failcnt
      Memoria di swap File di swap
      usage memory.memsw.usage_in_bytes
      max memory.memsw.max_usage_in_bytes
      limit memory.memsw.limit_in_bytes
      failcnt memory.memsw.failcnt
      Memoria del kernel File Kmemory
      usage memory.kmem.usage_in_bytes
      max memory.kmem.max_usage_in_bytes
      limit memory.kmem.limit_in_bytes
      failcnt memory.kmem.failcnt
      Memoria del kernel TCP File Kmemory TCP
      usage memory.kmem.tcp.usage_in_bytes
      max memory.kmem.tcp.max_usage_in_bytes
      limit memory.kmem.tcp.limit_in_bytes
      failcnt memory.kmem.tcp.failcnt
      Campi di memoria grezza settori affini, come v2 damemory.stat
      Campi di memoria (memory) memory.stat file
      cache cache
      rss total_rss
  3. Aggiornamento e restituzione delle metriche di memoria:

    La tabella seguente mette in relazione le metriche di memoria con i rispettivi oggetti di origine:

    Metrica della memoria Oggetto di origine
    Metriche sull'utilizzo della memoria memory.usage oggetto
    usage memory.usage.usage
    maxUsage memory.usage.max
    limit memory.usage.limit
    Metriche grezze della memoria memory.raw oggetto
    activeAnon memory.raw.activeAnon
    activeFile memory.raw.activeFile
    inactiveAnon memory.raw.inactiveAnon
    inactiveFile memory.raw.inactiveFile
    Metriche della memoria memory oggetto
    totalCache memory.cache
    totalRss memory.rss
  4. Visualizzazione delle metriche di memoria nell'interfaccia utente di Instana dal backend:

    Nell'interfaccia utente di Instana vengono visualizzate le seguenti metriche relative alla memoria:

    Metrica Valore di origine
    Memory Total RSS% (memory.total_rss_percent) total_rss/limit
    Active anonymous (memory.active_anon) activeAnon
    Active cache (memory.active_file) activeFile
    Inactive anonymous (memory.inactive_anon) inactiveAnon
    Inactive cache (memory.inactive_file) inactiveFile
    Usage (memory.usage) usage
    RSS (memory.total_rss) totalRss
    Cache (memory.total_cache) totalCache

Raccolta delle metriche di I/O a livello di blocco

CRI-O I sensori gestiscono la raccolta delle metriche e indirizzano l'analisi del cgroup blk-io all'agente. Il parser Block IO legge i file di statistiche blk-io dai rispettivi percorsi delle directory dei cgroup. Al termine dell'analisi, il sensore " CRI-O " restituisce un oggetto Blkio contenente le statistiche di I/O.

I passaggi seguenti descrivono la procedura per la raccolta e l'analisi delle metriche di I/O a livello di blocco in CRI-O :

  1. Identificazione dei percorsi delle directory dei cgroup: l'agente identifica la versione del cgroup ( v1 o v2 ) e i rispettivi percorsi delle directory dei cgroup in base al processo del sistema operativo:

    • cgroup v2:/proc/1/root/sys/fs/cgroup + cgroupPath
    • cgroup v1:/proc/1/root/sys/fs/cgroup/blkio + cgroupPath
  2. Analisi delle statistiche di I/O a livello di blocco per le directory dei cgroup: il parser legge i file relativi all'I/O a livello di blocco dai rispettivi percorsi delle directory dei cgroup.

    • Per le directory cgroup v2 :

      • Legge io.stat il file e restituisce 2 elenchi contenenti le voci delle statistiche di I/O

        • ioServiceBytesRecursive elenco: Elenco dei byte dei servizi di I/O
        • ioServicedRecursive elenco: Elenco delle operazioni di I/O gestite
      • Mappa l'operazione grezza nel file io.stat all'operazione canonica:

        • rbytes/rios: Leggi
        • wbytes/wios: Scrivi
      Nota: l'operazione rbytes/wbytes aggiunge la voce IOStat IoServiceBytesRecursive all'elenco dei valori. L'operazione rios/wios aggiunge la voce IOStat IoServicedRecursive all'elenco con i relativi valori.
    • Per le directory cgroup v1 :

      • Analizza il blkio.io_service_bytes file e imposta direttamente le statistiche di I/O in byte del servizio. (ioServiceBytesRecursive elenco)
      • Analizza il blkio.io_serviced file e imposta direttamente le statistiche di I/O gestite (ioServicedRecursive elenco)
  3. Mappatura dei numeri di dispositivo principali e secondari ai rispettivi campi negli oggetti IO stat.

  4. Restituzione all'agente di un oggetto Blkio contenente due elenchi di voci relative alle statistiche di I/O, con i campi major, minor, operazione e valori:

    Elenca Descrizione
    ioServiceBytesRecursive Elenco dei byte di servizio I/O
    ioServicedRecursive Elenco delle interfacce I/O gestite
  5. Aggregando i valori totalRead totalWrite e IOServiceBytesRecursive dall'elenco:

    Elenca Origine
    totalRead ioServiceBytesRecursive.ioStat.value (Somma tutti i valori letti)
    totalWrite ioServiceBytesRecursive.ioStat.value (Somma tutti i valori di scrittura)
  6. Visualizzazione delle metriche di I/O a blocchi nell'interfaccia utente di Instana dal backend: La tabella seguente illustra le metriche di I/O a blocchi visualizzate nell'interfaccia utente di Instana :

    Metrica Valore di origine
    Leggi (blkio.blk_read) totalRead
    Scrivi (blkio.blk_write) totalWrite

Indicatori sanitari

Per ogni sensore, c'è una knowledgebase curata delle firme di integrità che vengono valutate continuamente rispetto alle metriche in ingresso e vengono utilizzate per generare problemi o incidenti a seconda dell'impatto dell'utente.

Gli eventi predefiniti generano problemi o incidenti in base al mancato rispetto delle condizioni di integrità delle entità, mentre gli eventi personalizzati generano problemi o incidenti in base alle soglie di una singola metrica di una determinata entità.

Per informazioni sull'evento integrato per il sensore CRI-O , vedi il Riferimento agli eventi integrati.

Widget dei registri

Il sensore " CRI-O " non supporta nativamente la raccolta dei log. Instana Si consiglia di seguire le istruzioni riportate nelle guide "Raccolta dei log di Kubernetes " e " Red Hat OpenShift " per implementare il Collector di OpenTelemetry e raccogliere i log dai container di CRI-O. Per associare i log a specifici contenitori di CRI-O, aggiungere l'attributo container.runtime come indicato nelle istruzioni riportate nel link.