Inviare i dati di log di IBM Cloud Kubernetes Service a IBM Cloud Logs
In questa esercitazione, si imposta IBM Cloud® Kubernetes Service per inviare i log direttamente a IBM Cloud Logs. Questi registri aiutano a risolvere i problemi e a migliorare la salute e le prestazioni dei cluster e delle applicazioni Kubernetes.
Obiettivi
In questa esercitazione si apprende quanto segue:
-
Distribuire il Agent di registrazione in un cluster IBM Cloud Kubernetes Service esistente.
-
Verificare che i dati di log fluiscano verso l'istanza IBM Cloud Logs.
Prima di iniziare
Prima di iniziare, assicuratevi di possedere i prerequisiti.
-
Creare un IBM Cloud® Kubernetes Service e fornire un'istanza di IBM Cloud Logs.
-
Installare lo strumento a riga di comando Kubernetes, kubectl.
-
Installare il processore JSON CLI (
jq). -
Installare il processore YAML CLI (
yq).
Un'alternativa all'installazione della IBM Cloud CLI, kubectl, jq e yq è quella di utilizzare la IBM Cloud Shell
Connettersi al cluster
Collegarsi al cluster IBM Cloud Kubernetes Service. La connessione al cluster consente di eseguire i comandi kubectl sul cluster.
-
Esegui l'accesso al tuo account IBM Cloud. Includere l'opzione
--ssose si utilizza un ID federato.ibmcloud login -
Installare il plug-in IBM Cloud Kubernetes Service CLI
ibmcloud plugin install ks -
Elencare i cluster disponibili e prendere nota del cluster da collegare.
ibmcloud ks clusters -
Stabilire una connessione al cluster. Sostituire
<cluster_name>con il nome del cluster.ibmcloud ks cluster config --cluster <cluster_name> -
Verificare che si sia connessi al cluster e che si possano eseguire i comandi
kubectlelencando tutti i pod in esecuzione in tutti i namespace.kubectl get pods --all-namespaces
Creazione della chiave API
Prima di fornire il Agent di registrazione come daemonset, è necessario disporre di una chiave API IAM e di un endpoint di ingestione dei log. Per ottenere queste informazioni si utilizza la CLI IBM Cloud.
Per prima cosa, creare un ID servizio e ottenere una chiave API.
-
Creare un identificativo del servizio eseguendo il seguente comando.
ibmcloud iam service-id-create kubernetes-logs-agent --description "Service ID for sending logs from IKS" -
Assegnare il ruolo
Senderper IBM Cloud Logs all'ID servizio creato eseguendo il seguente comando.ibmcloud iam service-policy-create kubernetes-logs-agent --service-name logs --roles Sender -
Creare una chiave API IAM eseguendo il seguente comando. È possibile personalizzare il nome della chiave (
kubernetes-logs-agent-apikey) e la descrizione (--d), se necessario.ibmcloud iam service-api-key-create kubernetes-logs-agent-apikey kubernetes-logs-agent --description "API key for sending logs to the IBM Cloud Logs service"La chiave API viene restituita nell'output successivo a
API Key:ID ApiKey-xxxxxxxx-b815-46c7-bc9f-516115bc31c6 Name kubernetes-logs-agent-apikey Description API key for sending logs to the IBM Cloud Logs service Created At 2024-09-18T17:17+0000 API Key <apikey is displayed here> Locked false
Nota:
-
Ogni volta che si crea una chiave API, viene generato un nuovo segreto IAM.
-
Assicurarsi di memorizzare in modo sicuro la chiave API, poiché contiene informazioni sensibili.
Determinazione dell'endpoint di registrazione
La seconda informazione necessaria è l'endpoint di ingestione dell'istanza IBM Cloud Logs. Utilizzare questo comando per recuperare l' URL:
ibmcloud resource service-instances --service-name logs --long --output JSON | jq '[.[] | {name: .name, id: .id, region: .region_id, ingestion_endpoint: .extensions.external_ingress}]'
Il punto finale è simile a:
ingestion_endpoint: 3a622101-7521-4002-bf91-8c26e17eedcf.ingress.eu-de.logs.cloud.ibm.com
Creare il file YAML dell'agente
In questo passaggio, si crea il file YAML usato per configurare il daemonset dell'agente.
-
Creare un file chiamato "
logs-values.yamlcon il seguente contenuto:Questo file contiene le configurazioni specifiche dell'installazione.
metadata: name: "logs-agent" image: version: "1.4.0" # required clusterName: "" # Enter the name of your cluster. This information is used to improve the metadata and help with your filtering. env: # ingestionHost is a required field. For example: # ingestionHost: "<logs instance>.ingress.us-east.logs.cloud.ibm.com" ingestionHost: "" # required # If you are using private CSE proxy, then use port number "3443" # If you are using private VPE Gateway, then use port number "443" # If you are using the public endpoint, then use port number "443" ingestionPort: "" # required iamMode: "TrustedProfile" # trustedProfileID - trusted profile id - required for iam trusted profile mode trustedProfileID: "Profile-yyyyyyyy-xxxx-xxxx-yyyy-zzzzzzzzzzzz" # required if iamMode is set to TrustedProfile -
Aggiornare i campi del file yaml con i valori specifici del proprio ambiente.
Distribuzione del daemonset
Utilizzando la chiave API, l' URL dell'endpoint e il file YAML, distribuire l'agente nel cluster.
-
Accedere al registro Helm eseguendo il comando
helm registry login:helm registry login -u iambearer -p $(ibmcloud iam oauth-tokens --output json | jq -r .iam_token | cut -d " " -f2) icr.ioFinestre Gli utenti di Windows PowerShell dovrebbero invece utilizzare questo comando:
helm registry login -u iambearer -p ((ibmcloud iam oauth-tokens --output json | ConvertFrom-Json).iam_token -replace 'Bearer ', '') icr.ioPer ulteriori informazioni, vedere Utilizzo dei grafici Helm nel Container Registry: Prelievo di grafici da un altro registro o repository Helm.
-
Distribuire l'agente.
Se si utilizza una chiave API con ID servizio (
iamMode=IAMAPIKey), eseguire il comando seguente:helm install <install-name> oci://icr.io/ibm/observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<APIKey-value>dove:
<install-name>è il nome dell'installazione dell' Helm. (logs-agent)<chart-version>è la versione del grafico del timone. La versione del grafico di Helm deve corrispondere alla versione dell'immagine dell'agente. Per ulteriori informazioni, consultare le versioni del grafico diHelm.<PATH>è il percorso della directory in cui si trova il file 'logs-values.yaml.<APIKey-value>è l'apikey IAM associata alla ServiceID impostata al punto 1
È anche possibile distribuire l'agente utilizzando un profilo di fiducia. Per ulteriori informazioni, vedere Distribuzione dell'agente di registrazione per cluster Kubernetes utilizzando un grafico Helm.
Verificare che i log vengano inviati
Per assicurarsi che i registri IBM Cloud® Kubernetes Service confluiscano correttamente in IBM Cloud Logs, eseguire le seguenti operazioni:
-
Accedere a IBM Cloud Logs UI e fare clic su
Livetail.
-
Fare clic su
Startper guardare i log che arrivano in tempo reale.
Si dovrebbe vedere un flusso continuo di dati di log dall'applicazione kube-system. Questi log provengono dal cluster.