Nginx Günlüklerini Yönetilen OpenSearch'e İletmek için Damlacıklarda Logstash'ı Yapılandırma


giriiş

Web sunucusu günlüklerini takip etmek, web sitenizi sorunsuz bir şekilde çalıştırmak, sorunları çözmek ve kullanıcı davranışını anlamak için çok önemlidir. Nginx kullanıyorsanız değerli bilgilerle dolu erişim ve hata günlükleri oluşturur. Bu günlükleri yönetmek ve analiz etmek için Logstash'ı kullanarak bunları işleyebilir ve iletebilir, DigitalOcean'ın Managed OpenSearch'ünü ise verileri indeksleyip görselleştirebilirsiniz.

Bu eğitimde, Logstash'ı bir Droplet'e kurma, Nginx günlüklerinizi toplayacak şekilde ayarlama ve bunları DigitalOcean Managed OpenSearch'e gönderme konusunda size yol göstereceğiz.

Önkoşullar

  • Bir DigitalOcean Cloud hesabı ve bir Ubuntu Droplet'i çalışır durumda.

  • Nginx kurulmalı ve Droplet'inizde günlükler oluşturulmalıdır. Bir Damlacık üzerine nginx yüklemek için, Ubuntu'da Ngnix Nasıl Kurulur hakkındaki bu eğitime bakın.

  • OpenSearch kümesi çalışıyor olmalı ve sizin de ona erişiminiz olmalıdır. Daha fazla ayrıntı için OpenSearch Kümeleri Nasıl Oluşturulur sayfasını ziyaret edin.

  • Nginx, Logstash ve OpenSearch'e aşina olmak faydalıdır.

Kullanım Örneği

Aşağıdakileri yapmak istiyorsanız bu kuruluma ihtiyacınız olabilir:

  • İzleme ve Sorun Giderme: Gerçek zamanlı günlükleri analiz ederek web sunucusu performansını ve hataları izleyin.
  • Performansı Analiz Edin: Web trafiği kalıpları ve sunucu ölçümleri hakkında bilgi edinin.
  • Günlüğü Merkezileştirin: Daha kolay yönetim için birden fazla Nginx sunucusundaki günlükleri tek bir OpenSearch örneğinde toplayın.

Not: Kurulum süresi yaklaşık 30 dakika olmalıdır.

Adım 1 - Logstash'ı Damlacıklara Yükleme

Logstash, burada bulunan ikili dosyalar veya işletim sisteminiz için uyarlanmış paket depoları kullanılarak kurulabilir. Daha kolay yönetim ve güncellemeler için genellikle paket havuzlarının kullanılması önerilir. APT paket yöneticisini Ubuntu gibi Debian tabanlı sistemlerde kullanabilirken, CentOS veya RHEL gibi Red Hat tabanlı sistemlerde yum'u kullanabilirsiniz. Her iki yöntem de Logstash'ın sisteminizin paket yönetimi altyapısına düzgün bir şekilde entegre edilmesini sağlayarak kurulum ve bakımı basitleştirir.

Bu bölümde, hem apt hem de yum paket yöneticilerini kullanarak Logstash kurulumunda size yol göstereceğiz ve Linux dağıtımınızdan bağımsız olarak Droplet'inizde Logstash'ı yapılandırabilmenizi sağlayacağız.

İşletim Sistemini bulmak için aşağıdaki komutu çalıştırın:

cat /etc/os-release

APT Tabanlı Sistemler İçin (Ubuntu/Debian)

1.Genel İmzalama Anahtarını indirin ve yükleyin:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg

2. Zaten yüklü değilse apt-transport-https'yi yükleyin:

sudo apt-get install apt-transport-https

3. Logstash deposu tanımını apt kaynakları listenize ekleyin ve kaydedin:

echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list

Not: Desteklenmeyen bir deb-src girişi ekleyebileceği için add-apt-repository komutlarını kullanmadığınızdan emin olun. deb-src girişiyle ilgili bir hatayla karşılaşırsanız, onu /etc/apt/sources.list dosyasından silin. deb-src girdisini eklediyseniz aşağıdaki gibi bir hata göreceksiniz:

Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)

deb-src girişini /etc/apt/sources.list dosyasından silerseniz, kurulum beklendiği gibi çalışmalıdır.

4. Yeni havuzu içerecek şekilde paket dizinini güncelleyin:

sudo apt-get update

5. apt paket yöneticisini kullanarak Logstash'ı yükleyin:

sudo apt-get install logstash

6. Logstash'ı başlatın ve açılışta otomatik olarak başlamasını sağlayın:

sudo systemctl start logstash
sudo systemctl enable logstash

Logstash artık sisteminizde yüklü ve çalışıyor.

YUM Tabanlı Sistemler için (CentOS/RHEL)

1.Logstash deposu için Genel İmzalama Anahtarını indirin ve yükleyin:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

2. Logstash için /etc/yum.repos.d/ dosyasında bir depo dosyası oluşturun. Örneğin, logstash.repo adında bir dosya oluşturun. Dosyayı oluşturmak ve içeriğini güncellemek için aşağıdaki içerikleri kopyalayıp yapıştırabilirsiniz:

sudo tee /etc/yum.repos.d/logstash.repo > /dev/null <<EOF
[logstash-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

Depo kullanıma hazır.

3. YUM paket yöneticisini kullanarak Logstash'ı yükleyin:

sudo yum install logstash

4. Logstash'ı başlatın ve açılışta otomatik olarak başlamasını sağlayın:

sudo systemctl start logstash
sudo systemctl enable logstash

Logstash artık sisteminizde yüklü ve çalışıyor.

Adım 2 - Açık Arama Çıkışı Eklentisini Yükleme

Aşağıdaki komutu çalıştırarak OpenSearch çıktı eklentisini yükleyebilirsiniz:

/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch

Bu logstash-output-opensearch eklenti deposunda eklenti hakkında daha fazla bilgi bulabilirsiniz.

Adım 3 - Logstash'ı Nginx Günlüklerini OpenSearch'e Gönderecek Şekilde Yapılandırma

Logstash işlem hattı üç ana aşamadan oluşur: giriş, filtre ve çıkış. Logstash işlem hatları eklentilerden yararlanır. Topluluk eklentilerinden yararlanabilir veya kendinizinkini oluşturabilirsiniz.

  • Girdi: Bu aşamada çeşitli kaynaklardan veriler toplanır. Logstash, günlük dosyaları, veritabanları, mesaj kuyrukları ve bulut hizmetleri gibi veri kaynaklarını yönetmek için çok sayıda giriş eklentisini destekler.
  • Filtreleme: Bu aşama, giriş aşamasında toplanan verileri işler ve dönüştürür. Filtreler, verileri daha kullanışlı ve analiz edilmesi daha kolay hale getirmek için değiştirebilir, zenginleştirebilir ve yapılandırabilir.
  • Çıktı: Bu aşamada işlenen veri bir hedefe gönderilir. Hedefler veritabanlarını, dosyaları ve OpenSearch gibi veri depolarını içerebilir.

Şimdi bir boru hattı oluşturalım.

1. Aşağıdaki içeriklerle /etc/logstash/conf.d/nginx-to-opensearch.conf adresinde Logstash Yapılandırma Dosyasını oluşturun:

input {
  file {
    path => "/var/log/nginx/access.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => ["nginx_access"]
  }
  file {
    path => "/var/log/nginx/error.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => ["nginx_error"]
  }
}
filter {
  if "nginx_access" in [tags] {
    grok {
      match => { "message" => "%{IPORHOST:client_ip} - %{USER:ident} \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:response} %{NUMBER:bytes} \"%{DATA:referrer}\" \"%{DATA:user_agent}\"" }
    }
    mutate {
      remove_field => ["message", "[log][file][path]", "[event][original]"]
    }
  } else if "nginx_error" in [tags] {
    grok {
      match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{LOGLEVEL:level}\] \[%{DATA:pid}\] \[%{DATA:tid}\] %{GREEDYDATA:error_message}" }
    }
    mutate {
      remove_field => ["message", "[log][file][path]", "[event][original]"]
    }
  }
}
output {
  if "nginx_access" in [tags] {
    opensearch {
      hosts => ["https://<OpenSearch-Hostname>:25060"]
      user => "doadmin"
      password => "<your_password>"
      index => "nginx_access-%{+YYYY.MM.dd}"
      ssl => true
      ssl_certificate_verification => true
    }
  } else if "nginx_error" in [tags] {
    opensearch {
      hosts => ["https://<OpenSearch-Hostname>:25060"]
      user => "doadmin"
      password => "<your_password>"
      index => "nginx_error-%{+YYYY.MM.dd}"
      ssl => true
      ssl_certificate_verification => true
    }
  }
}

Yer değiştirmek :

  • OpenSearch sunucunuzun ana bilgisayar adını içeren OpenSearch-Hostname.
  • ile OpenSearch şifrenizi girin.

2. Logstash'ı yeniden başlatarak yeni yapılandırmayı uygulayın:

sudo systemctl restart logstash

3.Verileri doğru şekilde işlediğinden ve ilettiğinden emin olmak için Logstash günlüklerini kontrol edin:

sudo tail -f /var/log/logstash/logstash-plain.log

nginx-to-opensearch.conf yapılandırmasının dökümü

GİRİŞ

input bloğu, günlükleri okumak için iki dosya girişini yapılandırır:

Nginx Günlükleri: Yollar: /var/log/nginx/access.log (erişim günlükleri için) /var/log/nginx/error.log (hata günlükleri için) Başlangıç Konumu: beginning – Günlük dosyalarının başından itibaren okur. Sincedb Yolu: /dev/null – Sürekli okuma için izlemeyi devre dışı bırakır. Etiketler: Erişim günlükleri için ["nginx_access"] Hata günlükleri için ["nginx_error"]

Not: Logstash hizmetinin giriş yollarına erişimi olduğundan emin olun.

FİLTRE

filter bloğu, günlükleri etiketlerine göre işler:

Günlük İşleme: Günlüklere Erişim: Erişim günlüğü biçimini ayrıştırmak için bir grok filtresi kullanır ve client_ip, timestamp, method, istek, http_versiyonu, yanıt, bayt, yönlendiren ve kullanıcı_agent kodu>. Orijinal mesajı ve belirli meta veri alanlarını kaldırır.

Hata Günlükleri: nginx_error etiketini kontrol eder ve timestamp, level, gibi alanları çıkarmak için bir grok filtresi uygular pid, tid ve error_message. Ayrıca message ve meta veri alanlarını da kaldırır.

ÇIKTI

output bloğu, olayları etiketlerine göre OpenSearch'e yönlendirir:

OpenSearch'e Yönlendirme: Hem erişim hem de hata günlükleri için şunları belirtir: Ana Bilgisayarlar: OpenSearch örneğinin URL'si. Kullanıcı: Kimlik doğrulama için doadmin. Şifre: OpenSearch şifreniz. Dizin: Erişim günlükleri için nginx_access-%{+YYYY.MM.dd Hata günlükleri için nginx_error-%{+YYYY.MM.dd SSL Ayarları: SSL ve sertifika doğrulamayı etkinleştirir.

Adım 4 - OpenSearch'ü Yapılandırın

1.Web tarayıcınızı açın ve OpenSearch Kontrol Paneli URL'sine gidin:

https://<OpenSearch-Hostname>

OpenSearch-Hostname kısmını OpenSearch sunucunuzun ana bilgisayar adıyla değiştirin.

2. Bir Dizin Deseni oluşturun. A. Sol kenar çubuğunda Yönetim > Kontrol Paneli Yönetimi > Dizin Modelleri'ne gidin. B. Sağ üstteki Dizin modeli oluştur'u tıklayın. C. Logstash tarafından oluşturulan tüm dizinlerle eşleşecek dizin modeli olarak nginx_access-* veya nginx_error-* girin ve Sonraki adım'ı tıklayın. D. Dizin modeli oluştur'u tıklayın.

3. Dizin modelinin başarıyla oluşturulduğundan ve Dizin Modelleri listesinde göründüğünden emin olun.

4.Sol kenar çubuğunda Keşfet'e gidin ve oluşturduğunuz dizin modelini seçin (nginx_access-* veya nginx_error-*). Günlük girişlerinin görünür olduğunu ve doğru şekilde dizine eklendiğini doğrulayın.

5.Görselleştirmeler ve Gösterge Tabloları oluşturun. Daha fazla ayrıntı için OpenSearch'te Kontrol Paneli Nasıl Oluşturulur sayfasını ziyaret edin.

Sorun giderme

Bağlantıyı Kontrol Edin

Bağlantıyı test ederek Logstash'ın OpenSearch'e bağlanabildiğini doğrulayabilirsiniz:

curl -u doadmin:your_password -X GET "https://<OpenSearch-Hostname>:25060/_cat/indices?v"

Yer değiştirmek :

  • OpenSearch sunucunuzun ana bilgisayar adını içeren OpenSearch-Ana Bilgisayar Adı.
  • ile OpenSearch şifrenizi girin.

Veri Kullanımı

Aşağıdaki curl komutunu kullanarak verilerin OpenSearch'te düzgün şekilde indekslendiğinden emin olabilirsiniz:

curl -u doadmin:your_password -X GET "http://<OpenSearch-Hostname>:25060/nginx-logs-*/_search?pretty"

Yer değiştirmek :

  • OpenSearch sunucunuzun ana bilgisayar adını içeren OpenSearch-Ana Bilgisayar Adı.
  • ile OpenSearch şifrenizle

Güvenlik Duvarı ve Ağ Yapılandırması

Güvenlik duvarı kurallarının ve ağ ayarlarının 25060 bağlantı noktasında Logstash ile OpenSearch arasındaki trafiğe izin verdiğinden emin olun.

Çözüm

Bu kılavuzda, Nginx günlüklerini toplamak ve OpenSearch'e iletmek için Logstash'ı ayarlamayı öğrendiniz.

Logstash'ı Droplet'inizde çalışır hale getirmek için Linux dağıtımınıza bağlı olarak apt veya yum paket yöneticilerini nasıl kullanacağınızı incelediniz. Ayrıca Nginx günlüklerinin doğru şekilde ayrıştırılıp OpenSearch'e gönderildiğinden emin olmak için Logstash yapılandırma dosyasını oluşturup ayarladınız. Daha sonra, günlüklerin düzgün bir şekilde dizine eklendiğini ve analiz için görünür olduğunu kontrol etmek için OpenSearch Kontrol Panellerinde bir dizin modeli ayarlarsınız. Bu adımlar tamamlandıktan sonra artık Logstash'ın Nginx günlüklerini topladığı ve bunları OpenSearch'e gönderdiği çalışan bir kuruluma sahip olmalısınız. Bu kurulum, sunucu günlüklerinizi analiz etmek için OpenSearch'ün güçlü arama ve görselleştirme araçlarını kullanmanızı sağlar.

Herhangi bir sorunla karşılaşırsanız sunduğumuz sorun giderme ipuçlarına göz atın ve daha fazla yardım için Logstash ve OpenSearch belgelerine bakın. Düzenli izleme, kayıt sisteminizin sorunsuz ve etkili bir şekilde çalışmasını sağlayacaktır.

İlgili makaleler: