Collega e inoltra i log di DigitalOcean Kubernetes (DOKS) a OpenSearch gestito da DigitalOcean

Introduzione

Questo tutorial viene mostrato come raccogliere e inoltrare i log da un cluster DigitalOcean Kubernetes (DOKS) a un’istanza DigitalOcean OpenSearch gestita utilizzando AxoSyslog, un processore di dati sicuri adattabile. Se seguite questo guide, imparerete come configurare un sistema di log robusto che cattura e analizza i log dalle vostre applicazioni Kubernetes, rendendo più facile il monitoraggio, l’ispezione e la sicurezza del vostro infrastruttura.

In questo tutorial, userai AxoSyslog per inoltrare i log da un cluster Kubernetes a OpenSearch.

Prerequisiti

Prima di iniziare, assicuratevi di avere i seguenti prerequisiti:

  1. Per creare e gestire risorse Kubernetes e OpenSearch, avrai bisogno di un account DigitalOcean Cloud.
  2. Il tool DigitalOcean Command Line Interface (CLI), doctl, deve essere installato e configurato sul tuo dispositivo locale.
  3. Un cluster DigitalOcean Kubernetes (DOKS) in esecuzione.
  4. Il package manager Kubernetes, Helm, deve essere installato per gestire le applicazioni Kubernetes.
  5. Conoscenza di Kubernetes, Helm e dei servizi gestiti di DigitalOcean.

Caso d’uso

Questo progetto è ideale per scenario in cui serve una soluzione centralizzata di monitoraggio e analisi di log da varie applicazioni in esecuzione in un cluster Kubernetes. Che stiate gestendo un insieme piccolo di applicazioni o un’infrastruttura a grandezza ridotta, la raccolta e l’inoltro di log in un cluster OpenSearch dedicato aiutano in:

  • Monitoraggio sicurezza: Rileva e reagisci agli incidenti di sicurezza analizzando i log in tempo reale.
  • Risoluzione dei problemi: Identifica e risolvi rapidamente i problemi nei tuoi applicativi Kubernetes accessando i log dettagliati.
  • Compliance: Mantiene un registro degli eventi per rispettare le normative dell’industria.

Integrazione di AxoSyslog con DigitalOcean Managed OpenSearch consente di processare e archiviare in modo efficiente grandi volumi di log, rendendo più facile estrarre informazioni preziose e mantenere la salute e la sicurezza dei tuoi sistemi.

Step 1 – Creare un cluster OpenSearch

In questo step, impostra il componente centrale del tuo sistema di logging, ovvero il cluster OpenSearch. OpenSearch sarà il destinatario di tutti i log che raccogli da tuo cluster Kubernetes. Creerai una nuova istanza OpenSearch nel tuo regione di scelta su DigitalOcean eseguendo il seguente comando.

doctl databases create opensearch-doks --engine opensearch --region lon1 --size db-s-1vcpu-2gb --num-nodes 1

Sostituisci lon1 con la tua regione preferita. Per elencare i tag dimensione disponibili, visita la nostra documentazione API di riferimento.

Step 2 – Generare alcuni log casuali

Prima di inviare i log a OpenSearch, hai bisogno di alcuni log da lavorare. Se non hai già un’applicazione che genera log all’interno del tuo cluster Kubernetes, questo passo ti mostrerà come deployare un generatore di log. Questo generatore di log produrrà una costante corrente di log di esempio che puoi utilizzare per testare e dimostrare il tuo pipeline di log.

Prima di tutto, aggiungi il repository del grafico del generatore di log e installa il generatore di log:

helm repo add kube-logging https://kube-logging.github.io/helm-charts
helm repo update

Successivamente, installa il generatore di log utilizzando Helm:

helm install --generate-name --wait kube-logging/log-generator

Puoi verificare che il generatore di log stia funzionando guardando i log che produce:

kubectl logs -l app.kubernetes.io/name=log-generator

Step 3 – Preparare AxoSyslog Collector per l’installazione

In questo passo, configurerai il AxoSyslog Collector, responsabile per raccogliere i log del tuo cluster Kubernetes e inviarli a OpenSearch. Ciò comprende fornire i dettagli di connessione corretti per il tuo cluster OpenSearch (nomehost, utente e password).

Utilizzeremo helm per installare il AxoSyslog Collector e passare i valori personalizzati.

Per configurare l’AxoSyslog collector con l’indirizzo corretto, l’utente e la password per la tua OpenSearch database, segui questi passaggi:

Script Automatizzato

Per semplificare la configurazione, puoi utilizzare un script automatizzato che recupera i dettagli di connessione OpenSearch necessari e aggiorna il tuo file di configurazione AxoSyslog.

Salva il seguente script come update_axoflow_demo.sh:

update_axoflow_demo.sh
#!/bin/bash

# Estrai ID Database per opensearch-doks
DB_ID=$(doctl databases list --format Name,ID --no-header | grep opensearch-doks | awk '{print $2}')

# Ottieni Hostname, Username e Password
OPENSEARCHHOSTNAME=$(doctl databases connection $DB_ID --no-header --format Host)
OPENSEARCHUSERNAME=$(doctl databases connection $DB_ID --no-header --format User)
OPENSEARCHPASSWORD=$(doctl databases connection $DB_ID --no-header --format Password)

# Aggiorna axoflow-demo.yaml con i valori estratti usando yq
yq eval ".config.destinations.opensearch[0].address = \"$OPENSEARCHHOSTNAME\"" -i axoflow-demo.yaml
yq eval ".config.destinations.opensearch[0].user = \"$OPENSEARCHUSERNAME\"" -i axoflow-demo.yaml
yq eval ".config.destinations.opensearch[0].password = \"$OPENSEARCHPASSWORD\"" -i axoflow-demo.yaml

echo "axoflow-demo.yaml has been updated."

Assicurati di avere i permessi di esecuzione sul tuo script prima di eseguirlo:

chmod +x update_axoflow_demo.sh && ./update_axoflow_demo.sh

Questo script recupererà le informazioni necessarie dalla tua account DigitalOcean usando doctl e aggiornerà il tuo file axoflow-demo.yaml in conseguenza.

Passaggi Manuali per Aggiornare axoflow-demo.yaml

Se preferisci configurare manualmente il tuo AxoSyslog Collector, segui questi passaggi:

Esegui il seguente comando per estrarre l’ID database per opensearch-doks:

doctl databases list --format Name,ID --no-header | grep opensearch-doks | awk '{print $2}'

Per recuperare il hostname, username e password, eseguire i seguenti comandi rispettivamente:

doctl databases connection <id> --no-header --format Host
doctl databases connection <id> --no-header --format User
doctl databases connection <id> --no-header --format Password

Adesso, devi aggiornare manualmente il file axoflow-demo.yaml:

Apri il tuo file axoflow-demo.yaml in un editor di testo e sostituisci i campi corrispondenti con i valori estratti:

axoflow-demo.yaml
config:
  sources:
    kubernetes:
      # Raccolta dei log di kubernetes
      enabled: true
  destinations:
    # Invia i log a OpenSearch
    opensearch:
      - address: "x.k.db.ondigitalocean.com"
        index: "doks-demo"
        user: "doadmin"
        password: "AVNS_x"
        tls:
          # Non validare il certificato TLS del server.
          peerVerify: false
        # Inviare i campi syslog + i metadati da .k8s.* in formato JSON
        template: "$(format-json --scope rfc5424 --exclude DATE --key ISODATE @timestamp=${ISODATE} k8s=$(format-json .k8s.* --shift-levels 2 --exclude .k8s.log))"

Step 4 – Installare AxoSyslog-collector

Dopo aver completato la configurazione, il passo successivo è installare il AxoSyslog Collector nel tuo cluster Kubernetes. Ciò consentirà la raccolta e la reindirizzazione dei log a OpenSearch.

Aggiungi il repository Helm AxoSyslog e installa il AxoSyslog Collector utilizzando il file di configurazione personalizzato:

helm repo add AxoSyslog https://axoflow.github.io/AxoSyslog-charts
helm repo update
helm install AxoSyslog -f axoflow-demo.yaml AxoSyslog/AxoSyslog-collector --wait

Per assicurarti che i log siano inviati sul porto OpenSearch corretto, aggiorna la configurazione del AxoSyslog Collector aggiornando il tuo configmap:

kubectl get configmap AxoSyslog-AxoSyslog-collector -o yaml | sed 's/9200\/_bulk/25060\/_bulk/' | kubectl apply -f -

Infine, elimina i pod esistenti per applicare la configurazione aggiornata:

kubectl delete pods -l app=AxoSyslog-AxoSyslog-collector

Conclusione

Configurare un pipeline di logging da DigitalOcean Kubernetes a OpenSearch utilizzando AxoSyslog non solo centralizza i vostri log ma anche migliora la capacità di monitoraggio, analisi e sicurezza delle applicazioni. Con i passaggi forniti in questo guida, puoi velocemente distribuire questa soluzione, ottenendo una visione più profonda del tuo ambiente Kubernetes e garantendo che il tuo infrastructure rimanga resiliente e conforme.

Source:
https://www.digitalocean.com/community/tutorials/collect-and-forward-kubernetes-logs-to-opensearch