giriiş
Etkili web sunucusu günlük yönetimi, web sitenizin performansını korumak, sorunları gidermek ve kullanıcı davranışları hakkında bilgi edinmek 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 etkili bir şekilde yönetmek ve analiz etmek için, Logstash'i kullanarak işleyebilir ve indeksleme ve görselleştirme için DigitalOcean'ın yönetilen OpenSearch hizmetine gönderebilirsiniz.
Bu eğitimde, Logstash'i Droplet'inize kurma, Apache günlüklerini toplayacak şekilde yapılandırma ve bunları analiz için Managed OpenSearch'e gönderme konusunda size rehberlik edeceğiz.
Ön koşullar
- Apache web sunucusu kurulu droplet/ler.
- Yönetilen OpenSearch Kümesi
Adım 1 – Logstash'i yükleyin
Logstash, ikili dosyalar veya paket depoları kullanılarak kurulabilir. Daha kolay yönetim ve güncellemeler için genellikle paket depolarının kullanılması önerilir.
Bu bölümde APT ve YUM Paket Yöneticisini kullanarak Logstash'i Droplet'inize nasıl kuracağınıza dair size rehberlik edeceğiz.
İşletim sistemini belirleyelim:
cat /etc/os-release
APT tabanlı sistemler için (Ubuntu/Debian)
Genel imzalama 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
Devam etmeden önce Debian'a apt-transport-https paketini yüklemeniz gerekebilir:
sudo apt-get install apt-transport-https
Depo tanımını /etc/apt/sources.list.d/elastic-8.x.list dosyasına 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 komutunu kullanmayın, çünkü bu komut bir deb-src girdisi ekleyecektir, ancak bir kaynak paketi sağlamıyoruz. Bir deb-src girdisi eklediyseniz, aşağıdaki hatayı görürsünüz:
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 girdisini kaldırmanız yeterli; kurulum beklendiği gibi çalışmalıdır.
sudo apt-get update komutunu çalıştırın, depo kullanıma hazır. Şu şekilde kullanabilirsiniz:
sudo apt-get update && sudo apt-get install logstash
YUM tabanlı sistemler için (CentOS/RHEL)
Genel imzalama anahtarını indirin ve 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 "t" 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
EOFTankınız kullanıma hazır. Şunlarla kullanabilirsiniz:
sudo yum install logstash
Daha fazla bilgi için lütfen Logstash kurulum kılavuzuna bakın.
Adım 2 – Logstash'i günlükleri OpenSearch'e gönderecek şekilde yapılandırın
Logstash işlem hattı üç ana aşamadan oluşur: giriş, filtreleme ve çıkış. Logstash işlem hatları eklentiler kullanır. Topluluk eklentilerini kullanabilir veya kendi eklentilerinizi oluşturabilirsiniz.
- Giriş: Bu aşamada çeşitli kaynaklardan veri toplanır. Logstash, günlük dosyaları, veritabanları, mesaj kuyrukları ve bulut hizmetleri gibi veri kaynaklarını yönetmek için birden fazla giriş eklentisini destekler.
- Filtre: Bu aşama, girdi aşamasında toplanan verileri işler ve dönüştürür. Filtreler, verileri daha kullanışlı ve analitik hale getirmek için değiştirebilir, zenginleştirebilir ve yapılandırabilir.
- Çıktı: Bu aşamada işlenmiş veriler bir hedefe gönderilir. Hedefler arasında veritabanları, dosyalar ve OpenSearch gibi veri depoları yer alabilir.
Adım 3 – Open Search Output eklentisini yükleyin
OpenSearch çıktı eklentisi aşağıdaki komutu çalıştırarak kurulabilir:
/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch
Daha fazla bilgiyi bu logstash-output-opensearch-plugin deposunda bulabilirsiniz.
Şimdi bir boru hattı oluşturalım:
/etc/logstash/conf.d/ yolunda apache_pipeline.conf adında yeni bir dosya oluşturun ve aşağıdaki içeriği 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
}
}
}OpenSearch sunucunuzun ana bilgisayar adıyla ve OpenSearch şifrenizle değiştirin.
Yukarıdaki yapılandırmayı parçalayalım.
- GİRİŞ: Olaylar için bir kaynak yapılandırmak için kullanılır. Burada dosya girişi eklentisi kullanılır.
- yol => “/var/log/apache2/access.log”: Logstash'in okuma yapması gereken Apache erişim günlüğü dosyasının yolunu belirtir.
Logstash servisinin giriş yoluna erişiminin olduğundan emin olun.
- start_position => “beginning”: Logstash'in günlük dosyasını okumaya nereden başlaması gerektiğini belirtir. “beginning”, Logstash'in dosyayı baştan itibaren işlemeye başlaması gerektiğini, sondan değil belirtir.
- sincedb_path => “/dev/null”: Sincedb dosyasının yolunu belirtir. Sincedb dosyaları, Logstash tarafından günlük dosyalarındaki geçerli konumu takip etmek ve bir yeniden başlatma veya çökme durumunda kaldığı yerden devam etmesini sağlamak için kullanılır.
- etiketler => “apache_access”: Bu girdiden okunan olaylara bir etiket atar. Etiketler, Logstash'teki olayları tanımlamak ve filtrelemek için kullanışlıdır ve genellikle çıktı aşamalarında veya yapılandırma filtrelemesinde kullanılır. Biz etiketleri bu aşamada kullanırız.
- FİLTRE: Olayları işlemek için kullanılır.
Koşullarla başlayalım:
(if "apache_access" in [tags]):
Bu, gelen günlük olaylarının [tags] bölümünde apache_access etiketinin mevcut olup olmadığını kontrol eder. Bu koşulu, Apache erişim ve hata günlüklerine uygun GROK filtresini uygulamak için kullanırız.
- Grok filtresi (Apache erişim kayıtları için):
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}%{HTTPD_COMBINEDLOG} grok filtresi, Logstash'te Apache Combined Access Log formatını ayrıştırmak için kullanılan önceden tanımlanmış bir kalıptır. Alınan olayların mesaj gövdesinden IP adresi, zaman damgası, HTTP yöntemi, URI, durum kodu vb. alanları çıkarır.
- Mutate Filtresini Kaldır (isteğe bağlı): Apache günlüklerini ayrıştırdıktan sonra, bazı alanları kaldırmak için mutate-remove komutunu kullanırız.
mutate {
remove_field => [ "message","[log][file][path]","[event][original]" ]
}- Başka bir koşul: Apache_access etiketi [tags] içinde 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 %{HTTPD24_ERRORLOG} filtresi, Apache hata günlüğü formatıyla 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ı ayıklar.
GROK desenlerini şu adreste bulabilirsiniz: https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns Bulmak.
- ÇIKTI: Eklenti, çıktı olaylarını belirli bir hedefe gönderir.
Çıktı bloğu bir "if" koşuluyla başlar. Burada koşullu ifadeyi kullanıyoruz.
if "apache_access" in [tags] {}
Bir koşul, günlükleri OpenSearch'e yönlendirmek için iki ayrı profile, apache_error ve apache_access'e yönlendirilirse.
OpenSearch Output eklentisine bir göz atalım:
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 verificationAdım 4 – Logstash'i başlatın
Boru hattını yapılandırdıktan sonra Logstash servisini başlatın:
systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.serviceAdım 5 – Sorun Giderme
Bağlantıyı kontrol edin.
Logstash'in OpenSearch'e bağlanabildiğini bağlantıyı test ederek doğrulayabilirsiniz:
curl -u your_username:your_password -X GET "https://your-opensearch-server:25060/_cat/indices?v"
OpenSearch sunucusunun ana bilgisayar adıyla ve , OpenSearch kimlik bilgilerinizle değiştirin.
Veri toplama
Verilerin OpenSearch'te düzgün bir şekilde indekslendiğinden emin olun:
curl -u your_username:your_password -X GET "http://your-opensearch-server:25060/<your-index-name>/_search?pretty"
OpenSearch sunucusunun ana bilgisayar adıyla ve , OpenSearch kimlik bilgilerinizle değiştirin. Benzer şekilde, Adı Index'tir.
Güvenlik duvarı ve ağ yapılandırması
Güvenlik duvarı kurallarınızın ve ağ ayarlarınızın Logstash ile OpenSearch arasındaki trafiğin 25060 portunda izin verdiğinden emin olun.
Günlükler
Logstash ile ilgili günlükler /var/log/logstash/logstash-plain.log konumunda bulunabilir.
Sonuç
Bu kılavuzda, Apache günlüklerini toplayıp OpenSearch'e göndermek için Logstash'i kurduk. İşte ele aldığımız konuların kısa bir özeti:
Logstash Kurulumu: Logstash'i Droplet'inize kurmak için Linux dağıtımınıza bağlı olarak APT veya YUM paket yöneticilerini nasıl kullanacağınızı açıkladık.
Logstash Yapılandırması: Apache günlüklerinin düzgün bir şekilde ayrıştırılıp OpenSearch'e gönderilmesini sağlamak için Logstash yapılandırma dosyasını oluşturduk ve yapılandırdık.
OpenSearch'te Doğrulama: Raporlarınızın düzgün bir şekilde indekslendiğini ve analiz için görünür olduğunu doğrulamak amacıyla OpenSearch panolarında bir listeleme şablonu oluşturduk.
Bu adımlar tamamlandığında, Logstash'in Apache günlüklerini toplayıp OpenSearch'e gönderdiği çalışan bir kurulumunuz olmalı.









