Collecter et transférer les journaux Kubernetes (DOKS) vers Managed OpenSearch
Introduction
Ce didacticiel montre comment collecter et transférer les journaux d'un cluster DigitalOcean Kubernetes (DOKS) vers une instance DigitalOcean Managed OpenSearch à l'aide d'AxoSyslog, un processeur de données de sécurité évolutif. En suivant ce guide, vous apprendrez à configurer un système de journalisation robuste qui capture et analyse les journaux de vos applications Kubernetes, facilitant ainsi la surveillance, le dépannage et la sécurisation de votre infrastructure.
Dans ce didacticiel, vous utiliserez AxoSyslog pour transférer les journaux d'un cluster Kubernetes vers OpenSearch.
Conditions préalables
Avant de commencer, assurez-vous que les conditions préalables suivantes sont remplies :
- Vous aurez besoin d'accéder à un compte DigitalOcean Cloud pour créer et gérer vos ressources Kubernetes et OpenSearch.
- L'outil DigitalOcean Command Line Interface (CLI),
doctl
, doit être installé et configuré sur votre ordinateur local. - Un cluster DigitalOcean Kubernetes (DOKS) en cours d'exécution.
- Le gestionnaire de packages Kubernetes, Helm, doit être installé pour gérer les applications Kubernetes.
- Familiarité avec les services gérés de Kubernetes, Helm et DigitalOcean.
Cas d'utilisation
Ce projet est idéal pour les scénarios dans lesquels vous avez besoin d'une solution de journalisation centralisée pour surveiller et analyser les journaux de diverses applications exécutées dans un cluster Kubernetes. Que vous gériez un petit ensemble d'applications ou une infrastructure à grande échelle, la collecte et le transfert des journaux vers un cluster OpenSearch dédié vous aident à :
- Surveillance de la sécurité : Détectez et répondez aux incidents de sécurité en analysant les journaux en temps réel.
- Dépannage : identifiez et résolvez rapidement les problèmes au sein de vos applications Kubernetes en accédant aux journaux détaillés.
- Conformité : tenir un journal des événements pour assurer la conformité aux réglementations du secteur.
En intégrant AxoSyslog à DigitalOcean Managed OpenSearch, vous pouvez traiter et stocker efficacement de grands volumes de journaux, facilitant ainsi l'extraction d'informations précieuses et le maintien de la santé et de la sécurité de vos systèmes.
Étape 1 : Créer un cluster OpenSearch
Au cours de cette étape, vous allez configurer le composant principal de votre système de journalisation, le cluster OpenSearch. OpenSearch sera la destination de tous les journaux que vous collectez à partir de votre cluster Kubernetes. Vous allez créer une nouvelle instance OpenSearch dans la région de votre choix sur DigitalOcean en exécutant la commande suivante.
doctl databases create opensearch-doks --engine opensearch --region lon1 --size db-s-1vcpu-2gb --num-nodes 1
Remplacez lon1
par la région souhaitée. Pour répertorier les tailles de slugs disponibles, visitez notre documentation de référence API.
Étape 2 - Générer des journaux aléatoires
Avant de transférer des journaux vers OpenSearch, vous avez besoin de certains journaux avec lesquels travailler. Si vous n'avez pas encore d'application générant des journaux dans votre cluster Kubernetes, cette étape vous montrera comment déployer un générateur de journaux. Ce générateur de journaux produira un flux constant d'exemples de journaux qui pourront être utilisés pour tester et démontrer votre pipeline de journalisation.
Tout d’abord, ajoutez le référentiel de graphiques Helm du générateur de journaux et installez le générateur de journaux :
helm repo add kube-logging https://kube-logging.github.io/helm-charts
helm repo update
Ensuite, installez le générateur de journaux à l'aide de Helm :
helm install --generate-name --wait kube-logging/log-generator
Vous pouvez vérifier que le générateur de journaux fonctionne en affichant les journaux qu'il produit :
kubectl logs -l app.kubernetes.io/name=log-generator
Étape 3 - Préparer le collecteur AxoSyslog pour l'installation
Dans cette étape, vous allez configurer le collecteur AxoSyslog, qui est chargé de collecter les journaux de votre cluster Kubernetes et de les transmettre à OpenSearch. Cela implique de fournir les détails de connexion corrects pour votre cluster OpenSearch (nom d'hôte, utilisateur et mot de passe).
Nous utiliserons helm
pour installer AxoSyslog Collector et transmettre des valeurs personnalisées.
Pour configurer le collecteur AxoSyslog avec l'adresse, l'utilisateur et le mot de passe corrects pour votre base de données OpenSearch, procédez comme suit :
Script automatisé
Pour simplifier la configuration, vous pouvez utiliser un script automatisé qui récupère les détails de connexion OpenSearch nécessaires et met à jour votre fichier de configuration AxoSyslog.
Enregistrez le script suivant sous update_axoflow_demo.sh
:
#!/bin/bash
Extract Database ID for opensearch-doks
DB_ID=$(doctl databases list --format Name,ID --no-header | grep opensearch-doks | awk '{print $2}')
Get Hostname, Username, and 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)
Update axoflow-demo.yaml with extracted values using 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."
Assurez-vous d'avoir l'autorisation d'exécution sur votre script avant de l'exécuter :
chmod +x update_axoflow_demo.sh && ./update_axoflow_demo.sh
Ce script récupérera les informations nécessaires de votre compte DigitalOcean à l'aide de doctl
et mettra à jour votre fichier axoflow-demo.yaml
en conséquence.
Étapes manuelles pour mettre à jour axoflow-demo.yaml
Si vous préférez configurer manuellement votre collecteur AxoSyslog, suivez ces étapes :
Exécutez la commande suivante pour extraire l'ID de base de données pour opensearch-doks
:
doctl databases list --format Name,ID --no-header | grep opensearch-doks | awk '{print $2}'
Pour récupérer le nom d'hôte, le nom d'utilisateur et le mot de passe, exécutez respectivement les commandes suivantes :
doctl databases connection <id> --no-header --format Host
doctl databases connection <id> --no-header --format User
doctl databases connection <id> --no-header --format Password
Maintenant, vous devez mettre à jour manuellement le fichier axoflow-demo.yaml
:
Ouvrez votre fichier axoflow-demo.yaml
dans un éditeur de texte et remplacez les champs concernés par les valeurs extraites :
config:
sources:
kubernetes:
# Collect kubernetes logs
enabled: true
destinations:
# Send logs to OpenSearch
opensearch:
- address: "x.k.db.onlinux-console.net"
index: "doks-demo"
user: "doadmin"
password: "AVNS_x"
tls:
# Do not validate the server's TLS certificate.
peerVerify: false
# Send the syslog fields + the metadata from .k8s.* in JSON format
template: "$(format-json --scope rfc5424 --exclude DATE --key ISODATE @timestamp=${ISODATE} k8s=$(format-json .k8s.* --shift-levels 2 --exclude .k8s.log))"
Étape 4 - Installer AxoSyslog-collector
Maintenant que la configuration est terminée, l'étape suivante consiste à déployer le collecteur AxoSyslog sur votre cluster Kubernetes. Cela permettra la collecte et la transmission des journaux vers OpenSearch.
Ajoutez le référentiel AxoSyslog Helm et installez AxoSyslog Collector à l'aide du fichier de configuration personnalisé :
helm repo add AxoSyslog https://axoflow.github.io/AxoSyslog-charts
helm repo update
helm install AxoSyslog -f axoflow-demo.yaml AxoSyslog/AxoSyslog-collector --wait
Pour vous assurer que les journaux sont envoyés au bon port OpenSearch, mettez à jour la configuration d'AxoSyslog Collector en mettant à jour votre configmap
:
kubectl get configmap AxoSyslog-AxoSyslog-collector -o yaml | sed 's/9200\/_bulk/25060\/_bulk/' | kubectl apply -f -
Enfin, supprimez les pods existants pour appliquer la configuration mise à jour :
kubectl delete pods -l app=AxoSyslog-AxoSyslog-collector
Conclusion
La configuration d'un pipeline de journalisation de DigitalOcean Kubernetes vers OpenSearch à l'aide d'AxoSyslog centralise non seulement vos journaux, mais améliore également votre capacité à surveiller, analyser et sécuriser vos applications. Grâce aux étapes fournies dans ce guide, vous pouvez déployer rapidement cette solution, obtenant une visibilité plus approfondie sur votre environnement Kubernetes et garantissant que votre infrastructure reste résiliente et conforme.