DigitalOcean Kubernetes (DOKS) logs verzamelen en doorsturen naar DigitalOcean Managed OpenSearch

Inleiding

Dit handleiding laat zien hoe u logbestanden van een DigitalOcean Kubernetes (DOKS) cluster kunt verzamelen en doorsturen naar een DigitalOcean Beheerd OpenSearch-instance met behulp van AxoSyslog, een schaalbare beveiligingsgegevensverwerker. Door deze handleiding te volgen, leert u hoe u een robuuste logging-systeem kunt instellen dat logbestanden van uw Kubernetes-toepassingen opvangt en analyseert, wat het gemakkelijker maakt om uw infrastructurele monitoren, probleemsolveren en beveiligen.

In deze handleiding zult u AxoSyslog gebruiken om logbestanden van een Kubernetes-cluster naar OpenSearch door te sturen.

Vereisten

Voordat u begint, zorg er voor dat u de volgende vereisten in orde heeft:

  1. U moet toegang hebben tot een DigitalOcean Cloud Account om Kubernetes- en OpenSearch-bronnen te maken en te beheren.
  2. Het DigitalOcean Command Line Interface (CLI) gereedschap, doctl, moet op uw lokale machine zijn geïnstalleerd en geconfigureerd.
  3. Een draaiend DigitalOcean Kubernetes (DOKS) cluster.
  4. Het Kubernetes pakketbeheerder, Helm, moet zijn geïnstalleerd om Kubernetes-toepassingen te beheren.
  5. Bekendheid met Kubernetes, Helm, en de gehoste diensten van DigitalOcean.

Gebruiksomgeving

Dit project is ideaal voor scenario’s waarin u een gecentraliseerde logboekoplossing nodig heeft om logboeken van verschillende toepassingen te monitoren en te analyseren die lopen in een Kubernetes-cluster. Of u beheert een klein stel toepassingen of een grote schaal van infrastructuur, het verzamelen en doorsturen van logboeken naar een apart OpenSearch-cluster helpt bij:

  • Beveiligingsmonitoring: Detecteer en reageer op beveiligingsincidenten door logs in real-time te analyseren.
  • Probleemoplossing: Ontdek snel en oploss problemen binnen uw Kubernetes-toepassingen door detailijke logs te raadplegen.
  • Vereisten voor compliantie:onderhoud een logboek van gebeurtenissen voor het nakomen van industriële reglementeringen.

Door AxoSyslog te integreren met DigitalOcean Managed OpenSearch, kunt u efficient gegevensstromen verwerken en opslaan, waardoor het gemakkelijker wordt om waardevolle inzichten te extraheren en de gezondheid en beveiliging van uw systemen te behouden.

Stap 1 – Maak een OpenSearch-cluster aan

In deze stap zet u de kerncomponent van uw log-systeem, het OpenSearch-cluster, op. OpenSearch zal de bestemming zijn voor alle logs die u van uw Kubernetes-cluster verzamelt. U zult een nieuwe OpenSearch-instantie maken in de gekozen regio op DigitalOcean door het volgende commando uit te voeren.

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

Vervang lon1 door uw gewenste regio. Om beschikbare grootte-slugs te laten zien, bezoek ons API-referentiedocumentatie.

Stap 2 – Generateer enkele willekeurige logbestanden

Voordat u logbestanden doorstuurt naar OpenSearch, heeft u wat logbestanden nodig om mee te werken. Als u geen applicatie heeft die reeds logbestanden genereert binnen uw Kubernetes-cluster, zal deze stap u instructies geven hoe u een loggenerator kunt部署. Deze loggenerator zal een constante stroom van voorbeeldlogbestanden produceren die kunnen worden gebruikt om uw logboekpipeline te testen en te demonstreren.

beginnen, voeg dan het Helm-chartrepository voor de loggenerator toe en installeer de loggenerator:

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

Vervolgens kunt u de loggenerator met behulp van Helm installeren:

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

U kunt controleren of de loggenerator werkt door de door hem gegenereerde logbestanden te bekijken:

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

Stap 3 – Voorbereid de AxoSyslog Collector op installatie

In deze stap configureert u de AxoSyslog Collector, die verantwoordelijk is voor het verzamelen van logbestanden van uw Kubernetes-cluster en ze door te sturen naar OpenSearch. Dit betekent dat u de juiste verbindingsgegevens voor uw OpenSearch-cluster moet opgeven (hostnaam, gebruiker en wachtwoord).

We zullen helm gebruiken om de AxoSyslog Collector te installeren en persoonlijke waarden meegeeft.

Om de AxoSyslog-verzamelaar correct in te stellen met de juiste adres, gebruiker en wachtwoord voor uw OpenSearch-database, volg deze stappen:

Automatisch Script

Om de configuratie te simplificeren, kunt u een automatisch script gebruiken dat de nodige OpenSearch-verbindingsgegevens ophaalt en uw AxoSyslog-configuratiebestand bijwerkt.

Sla het volgende script op als update_axoflow_demo.sh:

update_axoflow_demo.sh
#!/bin/bash

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

# Hostnaam, gebruikersnaam en wachtwoord ophalen
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)

# axoflow-demo.yaml bijwerken met uitgehaalde waarden met 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."

Zorg ervoor dat u toestemming hebt om uw script uit te voeren voordat u het uitvoert:

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

Dit script zal de nodige informatie van uw DigitalOcean-account ophalen met behulp van doctl en uw axoflow-demo.yaml-bestand daarop bijwerken.

Handmatige Stappen om axoflow-demo.yaml bij te werken

Als u liever handmatig uw AxoSyslog-verzamelaar configureert, volg deze stappen:

Voer het volgende commando uit om de database-ID voor opensearch-doks uit te pakken:

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

Om de hostnaam, gebruikersnaam en wachtwoord op te halen, moeten u de volgende commando’s respectievelijk uitvoeren:

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

Nu moet u handmatig de axoflow-demo.yaml bestand bijwerken:

Open uw axoflow-demo.yaml bestand in een teksteditor en vervang de relevante velden met de gehaalde waarden:

axoflow-demo.yaml
config:
  sources:
    kubernetes:
      # Collecteer kubernetes logs
      enabled: true
  destinations:
    # Stuur logs naar OpenSearch
    opensearch:
      - address: "x.k.db.ondigitalocean.com"
        index: "doks-demo"
        user: "doadmin"
        password: "AVNS_x"
        tls:
          # Valideer het TLS-certificaat van de server niet.
          peerVerify: false
        # Stuur de syslog-velden + de metadata van .k8s.* in JSON-formaat
        template: "$(format-json --scope rfc5424 --exclude DATE --key ISODATE @timestamp=${ISODATE} k8s=$(format-json .k8s.* --shift-levels 2 --exclude .k8s.log))"

Stap 4 – Installeer AxoSyslog-collector

Nu dat de configuratie klaar is, is de volgende stap om de AxoSyslog Collector naar uw Kubernetes cluster te deployen. Dit zal de verzameling en doorsturen van logbestanden naar OpenSearch mogelijk maken.

Voeg het AxoSyslog Helm-repository toe en installeer de AxoSyslog Collector met behulp van het aangepaste configuratiebestand:

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

Om te zorgen dat logbestanden naar het correcte OpenSearch-poort worden verzonden, update uw AxoSyslog Collector-configuratie door uw configmap bij te werken:

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

Ten slotte moet u de bestaande pods verwijderen om de bijgewerkte configuratie toe te passen:

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

Conclusie

Het opzetten van een logging pipeline vanaf DigitalOcean Kubernetes naar OpenSearch met behulp van AxoSyslog centraliseert niet alleen uw logs, maar verbetert ook uw mogelijkheden voor monitoring, analyse en beveiliging van uw applicaties. Met de hierbij gegeven stappen kunt u deze oplossing snel implementeren, waardoor u dieper zicht heeft op uw Kubernetes-omgeving en uw infrastructureelijk betrouwbaar en compliant houdt.

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