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:
-
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> -
Modificare il file sysdig-agent-configmap.yaml.
Esegui il seguente comando:
kubectl edit configmap sysdig-agent -n ibm-observeApporta le modifiche. Nota: fare riferimento alle istruzioni dell'editor
viper 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:
-
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 -
Modificare la configurazione.
-
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.
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:
-
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> -
Modificare il file sysdig-agent-configmap.yaml.
Esegui il seguente comando:
kubectl edit configmap sysdig-agent -n ibm-observe -
Apporta le modifiche. Aggiungere la sezione eventi oppure aggiornare la sezione.
Nota: fare riferimento alle istruzioni dell'editor
viper 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 -
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:
-
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> -
Modificare il file sysdig-agent-configmap.yaml.
Esegui il seguente comando:
kubectl edit configmap sysdig-agent -n ibm-observe -
Apporta le modifiche. Aggiungere la sezione eventi oppure aggiornare la sezione.
events: kubernetes: none -
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:
-
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> -
Modificare il file sysdig-agent-configmap.yaml.
Esegui il seguente comando:
kubectl edit configmap sysdig-agent -n ibm-observe -
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.
-
-
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:
| 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 conditionsdeve 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:
-
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> -
Modificare il file sysdig-agent-configmap.yaml.
Esegui il seguente comando:
kubectl edit configmap sysdig-agent -n ibm-observe -
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 -
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:
-
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> -
Modificare il file sysdig-agent-configmap.yaml.
Esegui il seguente comando:
kubectl edit configmap sysdig-agent -n ibm-observe -
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 -
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:
| 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
nonebloccherà 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 vocemetricsfileviene specificata allo stesso livello dilog(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:
-
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> -
Modificare il file sysdig-agent-configmap.yaml.
Esegui il seguente comando:
kubectl edit configmap sysdig-agent -n ibm-observe -
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 } -
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:
...