Nginx Loglarını OpenSearch’e Aktarma: Logstash Kurulumu
Bu rehberde ne öğreneceksiniz?
Bu rehberde, Ubuntu üzerinde Logstash kurulumunu öğreneceksiniz.
Nginx erişim ve hata loglarını merkezi olarak OpenSearch’e göndereceksiniz.
Son aşamada OpenSearch Dashboard üzerinden logları görüntüleyeceksiniz.
Teknik Özet
Ana konu: Nginx loglarının Logstash ile OpenSearch’e aktarılması
Çözülen problem: Dağınık logların izlenememesi ve analiz zorluğu
Kazanım: Merkezi loglama, arama ve görselleştirme
İzlenen adımlar:
- Logstash kurulumu
- OpenSearch output eklentisinin eklenmesi
- Logstash pipeline yapılandırması
- OpenSearch Dashboard ayarları
- Sorun giderme
Ön Koşullar
- Ubuntu yüklü bir sunucu
- Nginx kurulmuş ve log üretiyor olmalı
- Çalışır durumda bir OpenSearch kümesi
- OpenSearch erişim bilgileri hazır olmalı
1. Logstash Kurulumu (Ubuntu)
Önce işletim sistemini doğrulayın.
cat /etc/os-release
- Bu komut, sunucunun Linux dağıtımını gösterir.
- Depo anahtarını ekleyin
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
- Bu komut, Logstash paketleri için imza anahtarını ekler.
- Gerekli paketleri kurun
sudo apt-get install apt-transport-https
- Bu paket, HTTPS üzerinden depo kullanımını sağlar.
- Logstash deposunu ekleyin
echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
- Bu komut, Logstash paket kaynağını tanımlar.
- Kurulumu tamamlayın
sudo apt-get update
sudo apt-get install logstash
- Bu komutlar, Logstash servisini sisteme kurar.
- Servisi başlatın
sudo systemctl start logstash
sudo systemctl enable logstash
- Bu komutlar, Logstash’i çalıştırır ve açılışta başlatır.
2. OpenSearch Output Eklentisini Kurma
- Logstash’in OpenSearch’e veri göndermesi için eklenti gerekir.
/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch
- Bu komut, OpenSearch çıkış eklentisini yükler.
3. Logstash Pipeline Yapılandırması
-
Logstash pipeline üç bölümden oluşur: input, filter, output.
-
Yapılandırma dosyasını oluşturun
sudo nano /etc/logstash/conf.d/nginx-to-opensearch.conf
- Bu dosya, Nginx loglarının nasıl işleneceğini belirler.
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.rabisu.cloud:25060"]
user => "doadmin"
password => "OPENSEARCH_SIFRE"
index => "nginx_access-%{+YYYY.MM.dd}"
ssl => true
ssl_certificate_verification => true
}
} else if "nginx_error" in [tags] {
opensearch {
hosts => ["https://opensearch.rabisu.cloud:25060"]
user => "doadmin"
password => "OPENSEARCH_SIFRE"
index => "nginx_error-%{+YYYY.MM.dd}"
ssl => true
ssl_certificate_verification => true
}
}
}
- Bu yapılandırma, Nginx loglarını ayrıştırır ve OpenSearch’e yollar.
- Yapılandırmayı uygulayın
sudo systemctl restart logstash
- Bu komut, yeni pipeline ayarlarını aktif eder.
- Logları kontrol edin
sudo tail -f /var/log/logstash/logstash-plain.log
- Bu komut, Logstash’in veri işleyip işlemediğini gösterir.
4. OpenSearch Dashboard Yapılandırması
- Tarayıcıdan OpenSearch arayüzüne girin.
https://opensearch.rabisu.cloud
- Index Pattern oluşturun:
nginx_access-*
nginx_error-*
- Discover bölümünde logların aktığını doğrulayın.
Sıkça Sorulan Sorular
1. Logstash neden kullanılır? Logları toplar, işler ve merkezi sistemlere iletir.
2. Access ve error loglar ayrılabilir mi? Evet, tag yapısı ile ayrı indekslere gönderilir.
3. Loglar neden görünmüyor? Yetkiler, bağlantı veya firewall ayarları kontrol edilmelidir.
4. SSL doğrulaması zorunlu mu? Üretim ortamlarında mutlaka açık olmalıdır.
Sorun Giderme
- OpenSearch bağlantısını test edin
curl -u doadmin:OPENSEARCH_SIFRE -X GET "https://opensearch.rabisu.cloud:25060/_cat/indices?v"
- Bu komut, OpenSearch erişimini doğrular.
- Firewall kontrolü
- Logstash → OpenSearch portu: 25060
- Çıkış trafiğine izin verildiğinden emin olun
Sonuç
Bu rehberle Nginx loglarını merkezi bir OpenSearch yapısına aktardınız. Logstash sayesinde loglar ayrıştırıldı ve indekslendi. Artık loglarınızı arayabilir, analiz edebilir ve görselleştirebilirsiniz.
Bu mimariyi Rabisu Bulut altyapısında güvenle uygulayabilirsiniz.