Personalizzazione degli agent di monitoraggio Kubernetes

In IBM Cloud Monitoring, è possibile personalizzare la configurazione dell'agent di monitoraggio per impostare un livello di log, bloccare le porte, includere o escludere i dati di metrica, aggiungere o rimuovere eventi e filtrare i contenitori.

Per personalizzare un agent di monitoraggio Kubernetes, devi configurare il file sysdig-agent-configmap.yaml.

Esistono due metodi che è possibile utilizzare per modificare un file di configurazione:

  • Metodo 1: modificare il file direttamente nel cluster in cui è in esecuzione l'agente.
  • Metodo 2: modificare il file localmente e applicare le modifiche al cluster.

Modifica della configurazione dell'agent di monitoraggio Kubernetes utilizzando kubectl edit

Completa la seguente procedura per modificare una configurazione di un agent di monitoraggio Kubernetes:

  1. Configura l'ambiente cluster. Esegui questi comandi:

    Innanzitutto, ottieni il comando per impostare la variabile di ambiente e scaricare i file di configurazione di Kubernetes.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. Modificare il file sysdig-agent-configmap.yaml.

    Esegui il seguente comando:

    kubectl edit configmap sysdig-agent -n ibm-observe
    

    Apporta le modifiche. Nota: fare riferimento alle istruzioni dell'editor vi per informazioni su come apportare modifiche.

    Salva la modifiche. Le modifiche vengono applicate automaticamente.

Modifica della configurazione dell'agent di monitoraggio Kubernetes utilizzando kubectl apply

Utilizzare questo metodo se i file yaml di configurazione sono memorizzati e gestiti in un sistema di controllo origine.

Completa la seguente procedura per modificare una configurazione di un agent di monitoraggio Kubernetes:

  1. Ottenere l'ultima copia di ciascun file dal controller di origine.

    Per creare un file locale con la configurazione distribuita in un cluster, puoi anche eseguire il comando:

    kubectl get configmap sysdig-agent -n=ibm-observe -o=yaml > prod-sysdig-agent-configmap.yaml
    
  2. Modificare la configurazione.

  3. Applicare le modifiche utilizzando i comandi seguenti:

    kubectl apply -f sysdig-agent-configmap.yaml
    

Gli agent in esecuzione selezionano automaticamente la nuova configurazione dopo che Kubernetes invia le modifiche su tutti i nodi nel cluster.

Aggiunta di ulteriori tag ai dati raccolti da un agent di monitoraggio Kubernetes

Completa la seguente procedura per aggiungere ulteriori tag a una configurazione di agent di monitoraggio Kubernetes che hai già distribuito:

  1. Configura l'ambiente cluster. Esegui questi comandi:

    Innanzitutto, ottieni il comando per impostare la variabile di ambiente e scaricare i file di configurazione di Kubernetes.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. Modificare il file sysdig-agent-configmap.yaml.

    Esegui il seguente comando:

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. Apporta le modifiche. Nota: fare riferimento alle istruzioni dell'editor vi per informazioni su come apportare modifiche.

    apiVersion: v1
      data:
        dragent.yaml:
            k8s_cluster_name: mycluster
            collector: ingest.us-south.monitoring.cloud.ibm.com
            collector_port: 6443
            ssl: true
            sysdig_capture_enabled: false
            new_k8s: true
            tags: department:finance,region:us-south
      ...
    
  4. Salva la modifiche.

Le modifiche vengono applicate automaticamente.

Per l'esempio fornito, ottieni le tag agent.tag.department e agent.tag.region. È possibile utilizzarli per definire gli avvisi, personalizzare gli ambiti e altro ancora.

Raccolta di una serie di eventi Kubernetes

Monitoring supporta le integrazioni di eventi con Kubernetes. Monitoring rilevano automaticamente tali servizi e raccolgono dati di eventi da essi. È possibile modificare il file di configurazione dell'agent per modificarne il comportamento predefinito e includere o escludere i dati evento.

Per impostazione predefinita, viene raccolta solo una serie limitata di eventi. Per ulteriori informazioni sugli eventi raccolti per impostazione predefinita, consultare Tipi di eventi.

Per aggiungere o rimuovere gli eventi, è necessario personalizzare il file sysdig-agent-configmap.yaml e specificare quali eventi includere e quali filtrare. Nota: una voce in una sezione in sysdig-agent-configmap.yaml sovrascrive l'intera sezione nella configurazione predefinita.

Per filtrare gli eventi dai pod Kubernetes, completa la seguente procedura:

  1. Configura l'ambiente cluster. Esegui questi comandi:

    Innanzitutto, ottieni il comando per impostare la variabile di ambiente e scaricare i file di configurazione di Kubernetes.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. Modificare il file sysdig-agent-configmap.yaml.

    Esegui il seguente comando:

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. Apporta le modifiche. Aggiungere la sezione eventi oppure aggiornare la sezione.

    Nota: fare riferimento alle istruzioni dell'editor vi per informazioni su come apportare modifiche.

    Ad esempio, potresti voler raccogliere gli eventi di estrazione del pod Kubernetes e filtrare altri eventi del pod raccolti per impostazione predefinita. Si desidera ancora raccogliere gli eventi Kubernetes predefiniti per nodi e replicationControllers.

    events:
      kubernetes:
        pod:
          - Pulling
    
  4. Salva la modifiche.

Le modifiche vengono applicate automaticamente.

Un altro esempio in cui puoi vedere come raccogliere un sottoinsieme di eventi Kubernetes: vuoi monitorare solo gli eventi di pull, di pull e non riusciti per i pod.

  • Opzione 1: definire la sequenza sulle voci come un elenco puntato:

    events:
      kubernetes:
        pod:
          - Pulling
          - Pulled
          - Failed
    
  • Opzione 2: definire la sequenza delle voci in una singola riga racchiusa tra parentesi:

    events:
      kubernetes:
        pod: [Pulling, Pulled, Failed]
    

Per ulteriori informazioni su come utilizzare gli eventi personalizzati, consultare Eventi personalizzati.

Disabilitazione della raccolta di eventi

Per disabilitare un agent di monitoraggio dalla raccolta di eventi Kubernetes, devi modificare il file sysdig-agent-configmap.yaml. Imposta la voce Kubernetes nella sezione events su none.

Completa i seguenti passi:

  1. Configura l'ambiente cluster. Esegui questi comandi:

    Innanzitutto, ottieni il comando per impostare la variabile di ambiente e scaricare i file di configurazione di Kubernetes.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. Modificare il file sysdig-agent-configmap.yaml.

    Esegui il seguente comando:

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. Apporta le modifiche. Aggiungere la sezione eventi oppure aggiornare la sezione.

    events:
      kubernetes: none
    
  4. Salva la modifiche.

Le modifiche vengono applicate automaticamente.

Inclusione ed esclusione delle metriche

Per filtrare metriche personalizzate, devi personalizzare la sezione metrics_filter nel file sysdig-agent-configmap.yaml. È possibile specificare quali metriche includere e quali filtrare configurando i parametri di filtro include e exclude.

L'ordine delle regole di filtraggio è impostato come segue: viene applicata la prima regola che corrisponde a una metrica. Le regole di follow-up per tale metrica vengono ignorate.

Completa i seguenti passi:

  1. Configura l'ambiente cluster. Esegui questi comandi:

    Innanzitutto, ottieni il comando per impostare la variabile di ambiente e scaricare i file di configurazione di Kubernetes.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. Modificare il file sysdig-agent-configmap.yaml.

    Esegui il seguente comando:

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. Apporta le modifiche. Aggiungere la sezione metrics_filter o aggiornare la sezione.

    Ad esempio, se la sezione metrics_filter di un agent di monitoraggio è simile alla seguente:

    metrics_filter:
      - include: metricA.*
      - exclude: metricA.*
      - include: metricB.*
      - include: haproxy.backend.*
      - exclude: haproxy.*
      - exclude: metricC.*
    
    • Si sta configurando l'agente di monitoraggio per raccogliere tutti i dati dalle metriche che iniziano con metricA, metricB e haproxy.backend

    • Stai filtrando le metriche che iniziano con metricC e altre metriche che iniziano con haproxy.

    • La voce exclude: metricA.* viene ignorata.

  4. Salva la modifiche.

Le modifiche vengono applicate automaticamente.

Filtro di oggetti kubernetes e contenitori da cui vengono raccolti i dati

Un agente di monitoraggio Kubernetes raccoglie automaticamente le metriche da tutti i container che rileva in un cluster, compresi Prometheus, StatsD, JMX, app-check e metriche integrate.

È possibile personalizzare l'agent di monitoraggio per escludere i contenitori dalla raccolta di metriche.

Quando si escludono i contenitori, considerare le seguenti informazioni:

  • Si riduce il carico di agent e backend.
  • Si raccolgono solo i dati dai contenitori che si desidera monitorare.
  • Puoi controllare i costi segnalando i contenitori importanti e filtrando i contenitori inutili o non critici.

Per abilitare la funzione in cui un agent di monitoraggio filtra i contenitori, devi personalizzare il file sysdig-agent-configmap.yaml. Imposta la voce use_container_filter nella sezione containers su true. Nota: per default, questa funzione è disattivata. Quindi, definire le regole che includono una o più condizioni e che si desidera applicare.

La seguente tabella illustra i parametri che puoi definire per impostare le regole di filtro in un cluster:

Parametri per definire le condizioni sui contenitori
Parametro Condizione
container.image Nome immagine contenitore
container.name Il nome del contenitore
container.label.* Etichetta contenitore
kubernetes.object.* Oggetto Kubernetes. Un oggetto può essere un pod, uno spazio dei nomi, ecc.
kubernetes.object.annotation.* Annotazione oggetto Kubernetes
kubernetes.object.label.* Etichetta oggetto Kubernetes
all Regola predefinita per specificare tutti gli oggetti

Considerare le seguenti informazioni su come l'agente di controllo applica le regole definite nella sezione container_filter:

  • Le condizioni vengono definite configurandole con i parametri di filtro include e exclude.
  • La prima regola di corrispondenza nell'elenco determina se il contenitore è incluso o escluso.
  • Le condizioni sono costituite da un nome chiave e un valore. Se la chiave fornita per un contenitore corrisponde al valore, la regola viene applicata.
  • Quando una regola contiene più condizioni, all the conditions deve corrispondere per poter applicare la regola.

Completare la procedura riportata di seguito per filtrare i contenitori monitorati da un agent di monitoraggio in un cluster:

  1. Configura l'ambiente cluster. Esegui questi comandi:

    Innanzitutto, ottieni il comando per impostare la variabile di ambiente e scaricare i file di configurazione di Kubernetes.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. Modificare il file sysdig-agent-configmap.yaml.

    Esegui il seguente comando:

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. Apporta le modifiche. Aggiungere la voce use_container_filter e la sezione container_filter oppure aggiornare le voci esistenti.

    Ad esempio, consultare il seguente estratto di una mappa di configurazione:

    # Enable the feature
    use_container_filter: true
    #
    # Include or exclude conditions
    container_filter:
      - include:
            container.image: appdomain/my-app-image
      - include:
            container.name: my-java-app
      - exclude:
            kubernetes.namespace.name: kube-system
    
  4. Salva la modifiche.

Le modifiche vengono applicate automaticamente.

Porte di blocco

Per bloccare il traffico di rete e le metriche dalle porte di rete, devi modificare la sezione blacklisted_ports nel file sysdig-agent-configmap.yaml. È necessario elencare le porte da cui si desidera filtrare i dati.

La porta 53 (DNS) è sempre nella blocklist e non deve essere specificata in blacklisted_ports.

Completa i seguenti passi:

  1. Configura l'ambiente cluster. Esegui questi comandi:

    Innanzitutto, ottieni il comando per impostare la variabile di ambiente e scaricare i file di configurazione di Kubernetes.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. Modificare il file sysdig-agent-configmap.yaml.

    Esegui il seguente comando:

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. Apporta le modifiche. Aggiungere la sezione metrics_filter o aggiornare la sezione.

    Ad esempio, il seguente esempio mostra come impostare la sezione blacklisted_ports di un agent di monitoraggio per escludere i dati provenienti dalle porte 6666 e 6379:

    blacklisted_ports:
      - 6666
      - 6379
    
  4. Salva la modifiche.

Le modifiche vengono applicate automaticamente.

Modifica delle configurazioni di log

Per configurare le configurazioni di log, devi personalizzare la sezione log nel file sysdig-agent-configmap.yaml.

L'agent di monitoraggio genera voci di log in /opt/draios/logs/draios.log.

  • Il file di log ruota quando raggiunge la dimensione di 10MB.
  • Vengono conservati i 10 file di log più recenti. La data / ora aggiunta al nome file viene utilizzata per stabilire quali file conservare.

La tabella riportata di seguito elenca alcuni scenari comuni e il valore che è possibile impostare in ognuno di essi:

Voci della sezione Log
Casi di utilizzo Voce sezione log Valore predefinito
Risoluzione dei problemi relativi al comportamento dell'agent file_priority: debug info
Riduci l'output della console del contenitore console_priority: warning info
Filtro degli eventi per severità event_priority: warning information
Verificare quali metriche sono incluse o escluse metrics_excess_log: true false

Modifica del livello di log

  • La file_priority nella sezione log controlla il tipo di voci di log scritte nel file /opt/draios/logs/draios.log.
  • La console_priority nella sezione log controlla il tipo di voci di log scritte nell'output della console del contenitore durante l'esecuzione dell'agente inserito nel contenitore.
  • Il livello di log predefinito è info, in cui viene creata una voce di log per ogni trasmissione di metriche aggregate ai server di backend, una volta al secondo, in aggiunta alle voci per eventuali avvertenze e errori.
  • I livelli di log validi sono: nessuno, errore, avvertenza, info, debug, traccia

Filtro degli eventi Kubernetes per severità

  • La priorità_evento nella sezione log controlla il tipo di eventi inviati dall'agent
  • Il livello di log predefinito è informazioni. Ciò significa che vengono trasmesse solo le informazioni e gli eventi di gravità superiore.
  • I livelli validi: emergency, alert, critical, error, warning, notice, information, debug e none. Nota: i valori sono elencati dalla priorità alta alla priorità bassa.
  • L'impostazione del livello su none bloccherà tutte le raccolte eventi.

Accesso a un file per quali metriche sono incluse o escluse

  • L'impostazione di metrics_eccess_log su true nella sezione log abiliterà la registrazione delle metriche personalizzate incluse o escluse.

  • La registrazione della metrica è disabilitata per impostazione predefinita.

  • La registrazione si verifica a livello INFO ogni 30 secondi e dura 10 secondi.

  • L'impostazione metricsfile è richiesta per specificare l'ubicazione per le metriche che devono essere scritte dall'agent. Il valore metricsfile.location è un percorso relativo nella directory /opt/draios. Nota: la voce metricsfile viene specificata allo stesso livello di log(non come child nello yaml)

  • I dati di registrazione sono formattati come segue:

    +/-[type] [metric included/excluded]: metric.name (filter: +/-[metric.filter])
    
    • +/ - è un simbolo che indica se la metrica è inclusa o esclusa. Il segno più (+) indica che una metrica è inclusa. Meno (-) indica che una metrica è esclusa.

    • [type] specifica il tipo di metrica, ad esempio statsd.

    • [metrica inclusa / esclusa] indica in modo leggibile se la metrica è inclusa o esclusa.

    • metric.name indica il nome della metrica.

    • (filter: +/ -[metric.filter]) fornisce informazioni sui filtri definiti nella sezione metrics_filter nel file sysdig-agent-configmap.yaml.

Una voce di log di esempio è simile alla seguente:

-[statsd] metric excluded: mongo.statsd.vsize (filter: -[mongo.statsd.*])
+[statsd] metric included: mongo.statsd.netIn (filter: +[mongo.statsd.net*])

Completare i seguenti passaggi per configurare le impostazioni di registro:

  1. Configura l'ambiente cluster. Esegui questi comandi:

    Innanzitutto, ottieni il comando per impostare la variabile di ambiente e scaricare i file di configurazione di Kubernetes.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. Modificare il file sysdig-agent-configmap.yaml.

    Esegui il seguente comando:

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. Apporta le modifiche. Aggiungere la sezione log o aggiornare la sezione e includere le configurazioni che si desidera modificare in base alle descrizioni precedenti.

    Ad esempio:

    log:
      file_priority: warning
      console_priority: info
      event_priority: warning
      metrics_excess_log: true
    metricsfile: { location : metrics }
    
  4. Salva la modifiche.

Le modifiche vengono applicate automaticamente.

File yaml configmap di esempio

apiVersion: v1
data:
  dragent.yaml: |
    ### Agent tags
    # tags: linux:ubuntu,dept:dev,local:nyc

    ####
    # collector address
    # collector: 192.168.1.1
    # Collector TCP port
    # collector_port: 6666
    # Whether collector accepts ssl
    # ssl: true
    # collector certificate validation
    # ssl_verify_certificate: true
    #######################################
    #
    k8s_cluster_name: cluster12
    collector: ingest.us-south.monitoring.cloud.ibm.com
    collector_port: 6443
    ssl: true
    ssl_verify_certificate: true
    sysdig_capture_enabled: false
    new_k8s: true
    tags: type:mycluster,region:us-south
    blacklisted_ports:
      - 6666
      - 6379
    events:
      kubernetes:
        node:
          - Rebooted
    metrics_filter:
      - include: metricA.*
      - exclude: metricA.*
      - include: metricB.*
    use_container_filter: true
    container_filter:
      - exclude:
        kubernetes.namespace.name: kube-system
    log:
      file_priority: warning
      console_priority: info
      event_priority: warning
      metrics_excess_log: true
    metricsfile: { location : metrics }
kind: ConfigMap
metadata:
  annotations:
...