Apache Günlüklerini Logstash aracılığıyla OpenSearch'e iletin
giriiş
Etkili web sunucusu günlük yönetimi, web sitenizin performansını korumak, sorunları gidermek ve kullanıcı davranışına ilişkin öngörüler elde etmek için çok önemlidir. Apache en popüler web sunucularından biridir. Değerli bilgiler içeren erişim ve hata günlükleri oluşturur. Bu günlükleri verimli bir şekilde yönetmek ve analiz etmek için Logstash'ı kullanarak bunları işleyebilir ve indeksleme ve görselleştirme amacıyla DigitalOcean'ın Yönetilen Açık Arama'sına iletebilirsiniz.
Bu eğitimde Logstash'ı bir Droplet'e kurma, Apache günlüklerinizi toplayacak şekilde yapılandırma ve bunları analiz için Managed OpenSearch'e gönderme konusunda size rehberlik edeceğiz.
Önkoşullar
- Apache Web sunucusunun yüklü olduğu damlacıklar.
- Yönetilen OpenSearch Kümesi
Adım 1 - Logstash'ı Yükleme
Logstash, ikili dosyalar kullanılarak VEYA paket depoları aracılığıyla kurulabilir. Daha kolay yönetim ve güncellemeler için genellikle paket havuzlarının kullanılması önerilir.
Bu bölümde, hem APT hem de YUM paket yöneticilerini kullanarak Logstash'ı Droplet'inize kurma konusunda size rehberlik edeceğiz.
İşletim sistemini tanımlayalım:
cat /etc/os-release
APT Tabanlı Sistemler İçin (Ubuntu/Debian)
Genel İmza Anahtarını indirip yükleyin:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
Devam etmeden önce apt-transport-https paketini Debian'a kurmanız gerekebilir:
sudo apt-get install apt-transport-https
Depo tanımını /etc/apt/sources.list.d/elastic-8.x.list'e 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
Logstash deposunu eklemek için yukarıda açıklanan echo yöntemini kullanın. add-apt-repository'yi kullanmayın çünkü bu aynı zamanda bir deb-src girişi de ekleyecektir, ancak bir kaynak paketi sağlamıyoruz. 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)
/etc/apt/sources.list dosyasından deb-src girişini silmeniz yeterlidir; kurulum beklendiği gibi çalışmalıdır.
sudo apt-get update komutunu çalıştırın; depo kullanıma hazırdır. Şunlarla yükleyebilirsiniz:
sudo apt-get update && sudo apt-get install logstash
YUM Tabanlı Sistemler için (CentOS/RHEL)
Genel imzalama anahtarını indirip yükleyin:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Aşağıdakini /etc/yum.repos.d/logstash.repo dosyanıza ekleyin. Dosyayı güncellemek ve oluşturmak için 'tee'yi kullanabilirsiniz.
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
Deponuz kullanıma hazır. Şunlarla yükleyebilirsiniz:
sudo yum install logstash
Daha fazla bilgi için lütfen Logstash Kurulum kılavuzuna bakın.
Adım 2 - Logstash'ı Günlükleri 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.
Adım 3 - Açık Arama Çıkışı Eklentisini Yükleme
OpenSearch çıktı eklentisi aşağıdaki komut çalıştırılarak kurulabilir:
/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch
Bu logstash-output-opensearch-plugin deposunda daha fazla bilgi bulabilirsiniz.
Şimdi bir ardışık düzen oluşturalım:
/etc/logstash/conf.d/ yolunda Apache_pipeline.conf adında yeni bir dosya oluşturun ve aşağıdaki içerikleri kopyalayın.
input {
file {
path => "/var/log/apache2/access.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => "apache_access"
}
file {
path => "/var/log/apache2/error.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => "apache_error"
}
}
filter {
if "apache_access" in [tags] {
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}
mutate {
remove_field => [ "message","[log][file][path]","[event][original]" ]
}
} else {
grok {
match => { "message" => "%{HTTPD24_ERRORLOG}" }
}
}
}
output {
if "apache_access" in [tags] {
opensearch {
hosts => "https://<OpenSearch-Hostname>:25060"
user => "doadmin"
password => "<your_password>"
index => "apache_access"
ssl_certificate_verification => true
}
} else {
opensearch {
hosts => "https://<OpenSearch-Hostname>:25060"
user => "doadmin"
password => "<your_password>"
index => "apache_error"
ssl_certificate_verification => true
}
}
}
kısmını OpenSearch sunucunuzun ana bilgisayar adıyla ve kısmını OpenSearch şifrenizle değiştirin.
Yukarıdaki konfigürasyonu parçalayalım.
GİRİŞ: Bu, olaylar için bir kaynak yapılandırmak için kullanılır. Burada ‘dosya’ giriş eklentisi kullanılıyor.
path => “/var/log/apache2/access.log ” : Logstash'ın okuyacağı Apache erişim günlük dosyasının yolunu belirtir.
Logstash hizmetinin giriş yoluna erişimi olduğundan emin olun.
start_position => “beginning”: Logstash'ın log dosyasını okumaya nereden başlayacağını tanımlar. "başlangıç", Logstash'ın dosyayı işlemeye sondan ziyade baştan başlaması gerektiğini belirtir
beridb_path => “/dev/null”: Bir beridb dosyasının yolunu belirtir. Çünküdb dosyaları, Logstash tarafından günlük dosyalarındaki mevcut konumu takip etmek için kullanılır ve yeniden başlatma veya arıza durumunda kaldığı yerden devam etmesini sağlar.
tags => “apache_access”: Bu girişten okunan olaylara etiket atar. Etiketler, Logstash içindeki olayları tanımlamak ve filtrelemek için kullanışlıdır ve genellikle yapılandırmanın çıktı veya filtreleme aşamalarında aşağı yönde kullanılır. İkincisi için etiketleri kullanıyoruz
FİLTRE: olayları işlemek için kullanılır.
Koşullu ifadelerle başlayarak:
(if "apache_access" in [tags]):Bu, gelen günlük etkinliklerinin [tags] alanında
Apache_accessetiketinin bulunup bulunmadığını kontrol eder. Apache erişimi ve hata günlükleri için uygun GROK Filtresini uygulamak için bu koşulu kullanırız.Grok Filtresi (Apache Erişim Günlükleri için):
grok { match => { "message" => "%{HTTPD_COMBINEDLOG}" } }Grok filtresi
%{HTTPD_COMBINEDLOG, Apache'nin birleştirilmiş erişim günlüğü biçimini ayrıştırmak için Logstash'ta kullanılan önceden tanımlanmış bir kalıptır. Bu, gelen olayların mesaj alanından IP adresi, zaman damgası, HTTP yöntemi, URI, durum kodu vb. alanları çıkarır.Mutasyon Filtresi
Kaldır(isteğe bağlı): Apache günlükleri ayrıştırıldıktan sonra, belirli alanları kaldırmak için mutate-remove komutunu kullanırız.mutate { remove_field => [ "message","[log][file][path]","[event][original]" ] }Else Koşulu: Eğer [tags] içerisinde
Apache_accessetiketi mevcut değilse else bloğu yürütülür. Bu else bloğu Apache hata günlükleri için başka bir GROK filtresi içerir.grok { match => { "message" => "%{HTTPD24_ERRORLOG}" } }Bu grok filtresi
%{HTTPD24_ERRORLOG, Apache hata günlüğü biçimiyle eşleşen mesajları ayrıştırır. Zaman damgası, günlük düzeyi, hata mesajı vb. gibi hata günlükleriyle ilgili alanları çıkarır.GROK desenlerini şu adreste bulabilirsiniz: https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns.
ÇIKTI: Çıkış eklentisi olayları belirli bir hedefe gönderir.
Çıkış bloğu bir if koşuluyla başlar. Burada if koşullarını kullanıyoruz
if "apache_access" in [tags] {}Günlükleri OpenSearch'e iki ayrı dizine,
Apache_errorveApache_access'e yönlendirmek için bu koşullu kullanılırsa.OpenSearch Output eklentisini inceleyelim:
hosts => "https://XXX:25060" Your Open search Hostname user => "doadmin" Your Open search Username password => "XXXXX" OpenSearch Password index => "apache_error" Index name in OpenSearch ssl_certificate_verification => true Enabled SSL certificate verification
{ }
Adım 4 - Logstash'ı başlatın
Pipeline yapılandırıldıktan sonra Logstash hizmetini başlatın:
systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.service
Adım 5 – Sorun Giderme
Bağlantıyı Kontrol Edin
Bağlantıyı test ederek Logstash'ın OpenSearch'e bağlanabildiğini doğrulayabilirsiniz:
curl -u your_username:your_password -X GET "https://your-opensearch-server:25060/_cat/indices?v"
<opensearch-sunucunuz>'u OpenSearch sunucunuzun ana bilgisayar adı ile ve <kullanıcı_adınız>, <şifreniz>'i OpenSearch kimlik bilgilerinizle değiştirin.
Veri Kullanımı
Verilerin OpenSearch'te düzgün şekilde dizine eklendiğinden emin olun:
curl -u your_username:your_password -X GET "http://your-opensearch-server:25060/<your-index-name>/_search?pretty"
<opensearch-sunucunuz>'u OpenSearch sunucunuzun ana bilgisayar adı ile ve <kullanıcı_adınız>, <şifreniz>'i OpenSearch kimlik bilgilerinizle değiştirin. Benzer şekilde, dizin adıyla <dizin-adınız>.
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.
Günlükler
Logstash günlükleri /var/log/logstash/logstash-plain.log adresinde bulunabilir.
Ayrıntılar için Sorun Giderme bölümüne bakın.
Çözüm
Bu kılavuzda, Apache günlüklerini toplamak ve OpenSearch'e iletmek için Logstash'ı ayarlamayı anlattık. İşte ele aldığımız konuların kısa bir özeti:
Logstash Kurulumu: Logstash'ı Droplet'inize kurmak için Linux dağıtımınıza bağlı olarak APT veya YUM paket yöneticilerinin nasıl kullanılacağını ele aldık.
Logstash'ı Yapılandırma: Apache günlüklerinin doğru şekilde ayrıştırılıp OpenSearch'e gönderilmesini sağlamak için Logstash yapılandırma dosyasını oluşturduk ve ayarladık.
OpenSearch'te Doğrulama: Günlüklerinizin düzgün şekilde dizine eklendiğini ve analiz için görünür olduğunu doğrulamak için OpenSearch Kontrol Panellerinde bir dizin modeli oluşturduk.
Bu adımlar tamamlandıktan sonra artık Logstash'ın Apache günlüklerini toplayıp OpenSearch'e gönderdiği işlevsel bir kuruluma sahip olmalısınız.
