Kubernetes (DOKS) Günlüklerini Toplayın ve Yönetilen OpenSearch'e İletin


giriiş

Bu eğitimde, ölçeklenebilir bir güvenlik veri işlemcisi olan AxoSyslog kullanılarak bir DigitalOcean Kubernetes (DOKS) kümesinden günlüklerin nasıl toplanıp DigitalOcean Managed OpenSearch örneğine iletileceği gösterilmektedir. Bu kılavuzu takip ederek Kubernetes uygulamalarınızdaki günlükleri yakalayıp analiz eden, altyapınızı izlemeyi, sorunları gidermeyi ve güvenliğini sağlamayı kolaylaştıran sağlam bir günlük kaydı sisteminin nasıl kurulacağını öğreneceksiniz.

Bu eğitimde, günlükleri bir Kubernetes kümesinden OpenSearch'e iletmek için AxoSyslog'u kullanacaksınız.

Önkoşullar

Başlamadan önce aşağıdaki önkoşulların mevcut olduğundan emin olun:

  1. Kubernetes ve OpenSearch kaynaklarınızı oluşturmak ve yönetmek için bir DigitalOcean Bulut Hesabına erişmeniz gerekir.
  2. DigitalOcean Komut Satırı Arayüzü (CLI) aracı doctl, yerel makinenize kurulmalı ve yapılandırılmalıdır.
  3. Çalışan bir DigitalOcean Kubernetes (DOKS) kümesi.
  4. Kubernetes uygulamalarını yönetmek için Kubernetes paket yöneticisi Helm kurulmalıdır.
  5. Kubernetes, Helm ve DigitalOcean'ın yönetilen hizmetlerine aşinalık.

Kullanım Örneği

Bu proje, Kubernetes kümesinde çalışan çeşitli uygulamalardaki günlükleri izlemek ve analiz etmek için merkezi bir günlük kaydı çözümüne ihtiyaç duyduğunuz senaryolar için idealdir. İster küçük bir uygulama kümesini ister büyük ölçekli bir altyapıyı yönetiyor olun, günlüklerin toplanması ve özel bir OpenSearch kümesine iletilmesi aşağıdaki konularda yardımcı olur:

  • Güvenlik İzleme: Günlükleri gerçek zamanlı olarak analiz ederek güvenlik olaylarını tespit edin ve bunlara yanıt verin.
  • Sorun Giderme: Ayrıntılı günlüklere erişerek Kubernetes uygulamalarınızdaki sorunları hızla tanımlayın ve çözün.
  • Uyumluluk: Sektör düzenlemelerine uyumluluk için olayların bir kaydını tutun.

AxoSyslog'u DigitalOcean Managed OpenSearch ile entegre ederek büyük hacimli kayıtları verimli bir şekilde işleyebilir ve saklayabilirsiniz; böylece değerli bilgiler elde etmeyi ve sistemlerinizin sağlığını ve güvenliğini korumayı kolaylaştırabilirsiniz.

Adım 1 - Bir OpenSearch kümesi oluşturun

Bu adımda, kayıt sisteminizin temel bileşeni olan OpenSearch kümesini kuracaksınız. OpenSearch, Kubernetes kümenizden topladığınız tüm günlüklerin hedefi olacaktır. Aşağıdaki komutu çalıştırarak DigitalOcean'da seçtiğiniz bölgede yeni bir OpenSearch örneği oluşturacaksınız.

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

lon1'i istediğiniz bölgeyle değiştirin. Mevcut boyuttaki sümüklü böcekleri listelemek için API referans belgelerimizi ziyaret edin.

Adım 2 - Bazı rastgele günlükler oluşturun

Günlükleri OpenSearch'e iletmeden önce üzerinde çalışabileceğiniz bazı günlüklere ihtiyacınız var. Kubernetes kümenizde halihazırda günlük oluşturan bir uygulamanız yoksa bu adım size bir günlük oluşturucuyu nasıl dağıtacağınızı gösterecektir. Bu günlük oluşturucu, günlük kaydı işlem hattınızı test etmek ve göstermek için kullanılabilecek düzenli bir örnek günlük akışı üretecektir.

Öncelikle günlük oluşturucuyu Helm grafik deposunu ekleyin ve günlük oluşturucuyu yükleyin:

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

Ardından Helm'i kullanarak günlük oluşturucuyu yükleyin:

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

Ürettiği günlükleri görüntüleyerek günlük oluşturucunun çalıştığını doğrulayabilirsiniz:

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

Adım 3 - AxoSyslog Collector'ı Kuruluma Hazırlayın

Bu adımda, Kubernetes kümenizden günlükleri toplamaktan ve bunları OpenSearch'e iletmekten sorumlu olan AxoSyslog Collector'ı yapılandıracaksınız. Bu, OpenSearch kümeniz için doğru bağlantı ayrıntılarının (ana bilgisayar adı, kullanıcı ve parola) sağlanmasını içerir.

AxoSyslog Collector'ı kurmak ve özel değerleri iletmek için helm'i kullanacağız.

AxoSyslog toplayıcıyı OpenSearch veritabanınız için doğru adres, kullanıcı ve parolayla yapılandırmak için şu adımları izleyin:

Otomatik Komut Dosyası

Yapılandırmayı basitleştirmek için gerekli OpenSearch bağlantı ayrıntılarını getiren ve AxoSyslog yapılandırma dosyanızı güncelleyen otomatik bir komut dosyası kullanabilirsiniz.

Aşağıdaki komut dosyasını update_axoflow_demo.sh olarak kaydedin:

#!/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."

Komut dosyanızı çalıştırmadan önce yürütme izniniz olduğundan emin olun:

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

Bu komut dosyası, doctl kullanarak DigitalOcean hesabınızdan gerekli bilgileri alacak ve axoflow-demo.yaml dosyanızı buna göre güncelleyecektir.

axoflow-demo.yaml Güncellemesine İlişkin Manuel Adımlar

AxoSyslog Collector'ınızı manuel olarak yapılandırmayı tercih ediyorsanız şu adımları izleyin:

opensearch-doks için veritabanı kimliğini çıkarmak üzere aşağıdaki komutu çalıştırın:

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

Ana bilgisayar adını, kullanıcı adını ve şifreyi almak için sırasıyla aşağıdaki komutları yürütün:

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

Şimdi axoflow-demo.yaml dosyasını manuel olarak güncellemeniz gerekiyor:

axoflow-demo.yaml dosyanızı bir metin düzenleyicide açın ve ilgili alanları çıkarılan değerlerle değiştirin:

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))"

Adım 4 - AxoSyslog-collector'ı yükleyin

Artık yapılandırma tamamlandığına göre bir sonraki adım AxoSyslog Collector'ı Kubernetes kümenize dağıtmaktır. Bu, günlüklerin toplanmasını ve OpenSearch'e iletilmesini sağlayacaktır.

AxoSyslog Helm deposunu ekleyin ve özelleştirilmiş yapılandırma dosyasını kullanarak AxoSyslog Collector'ı yükleyin:

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

Günlüklerin doğru OpenSearch bağlantı noktasına gönderildiğinden emin olmak için configmap'inizi güncelleyerek AxoSyslog Collector'ın yapılandırmasını güncelleyin:

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

Son olarak, güncellenen yapılandırmayı uygulamak için mevcut bölmeleri silin:

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

Çözüm

AxoSyslog'u kullanarak DigitalOcean Kubernetes'ten OpenSearch'e bir kayıt hattı kurmak yalnızca günlüklerinizi merkezileştirmekle kalmaz, aynı zamanda uygulamalarınızı izleme, analiz etme ve güvenlik altına alma yeteneğinizi de geliştirir. Bu kılavuzda sağlanan adımlarla bu çözümü hızlı bir şekilde dağıtabilir, Kubernetes ortamınıza daha derin bir görünürlük kazandırabilir ve altyapınızın dayanıklı ve uyumlu kalmasını sağlayabilirsiniz.

İlgili makaleler: