Elasticsearch 1.7, Logstash 1.5 ve Kibana 4.1 (ELK Stack) CentOS 7 Üzerine Kurulumu
Günümüzün veri odaklı dünyasında, log yönetimi ve analizi, sistemlerin sağlığını izlemek, güvenlik tehditlerini tespit etmek ve operasyonel verimliliği artırmak için hayati öneme sahiptir. Elasticsearch, Logstash ve Kibana’dan oluşan ELK Stack (şimdiki adıyla Elastic Stack), bu ihtiyaçları karşılamak için güçlü ve esnek bir çözüm sunar. Bu makalede, özellikle eski sistemlerle uyumluluk veya belirli proje gereksinimleri nedeniyle tercih edilebilecek olan Elasticsearch 1.7, Logstash 1.5 ve Kibana 4.1 versiyonlarının CentOS 7 işletim sistemi üzerine adım adım nasıl kurulacağını detaylı bir şekilde inceleyeceğiz. Bu eski sürümler, modern ELK Stack’in sunduğu bazı gelişmiş özelliklerden yoksun olsa da, belirli senaryolarda hala geçerli ve işlevsel bir çözüm sunabilir.
ELK Stack Nedir?
ELK Stack, üç ana bileşenden oluşan güçlü bir log yönetimi ve analiz platformudur:
* Elasticsearch: Dağıtık, RESTful, analitik bir arama motorudur. Logstash tarafından toplanan ve işlenen verileri indeksler ve depolar. Hızlı arama, analiz ve büyük veri kümeleri üzerinde karmaşık sorgular yapma yeteneğiyle bilinir.
* Logstash: Dinamik veri işlem hattıdır. Çeşitli kaynaklardan (dosyalar, sistem logları, ağ protokolleri vb.) veri toplar, bu verileri dönüştürür ve zenginleştirir (örneğin, yapılandırılmamış log satırlarını yapılandırılmış JSON nesnelerine dönüştürür) ve ardından Elasticsearch’e gönderir.
* Kibana: Elasticsearch’te depolanan verileri görselleştirmek için kullanılan bir web arayüzüdür. Kullanıcıların log verilerini sorgulamasına, grafikler, tablolar ve panolar oluşturarak verileri anlamasına olanak tanır.
Bu üç bileşen birlikte çalışarak, log verilerini toplama, işleme, depolama ve görselleştirme konusunda kapsamlı bir çözüm sunar.
Ön Gereksinimler
Kuruluma başlamadan önce, aşağıdaki ön gereksinimlerin karşılandığından emin olun:
* CentOS 7 İşletim Sistemi: Temiz bir CentOS 7 kurulumu önerilir.
* Root veya Sudo Yetkileri: Kurulum adımları için yönetici yetkileri gereklidir.
* İnternet Bağlantısı: Paket indirmeleri için aktif internet bağlantısı olmalıdır.
* Minimum Donanım: En az 2 GB RAM ve 2 CPU çekirdeği önerilir. Daha büyük log hacimleri için daha fazla kaynak gerekebilir.
* Java Geliştirme Kiti (JDK): Elasticsearch ve Logstash, çalışmak için Java’ya ihtiyaç duyar. Bu sürümler için Java 7 veya Java 8 gereklidir. Bu makalede OpenJDK 8 kuracağız.
Adım 1: Java Geliştirme Kitini (JDK) Kurma
Elasticsearch 1.7 ve Logstash 1.5, Java ortamında çalıştığı için ilk olarak Java 8’i kurmamız gerekiyor.
Java Kurulumu
CentOS 7 üzerinde OpenJDK 8’i kurmak için aşağıdaki komutları kullanın:
sudo yum update -y
sudo yum install java-1.8.0-openjdk-devel -y
Kurulum tamamlandıktan sonra, Java sürümünü doğrulayın:
java -version
Çıktı aşağıdaki gibi olmalıdır (sürüm numaraları farklılık gösterebilir):
openjdk version "1.8.0_XXX"
OpenJDK Runtime Environment (build 1.8.0_XXX-bXX)
OpenJDK 64-Bit Server VM (build 25.XXX-bXX, mixed mode)
Adım 2: Elasticsearch 1.7 Kurulumu
Elasticsearch, ELK Stack’in merkezidir ve tüm log verilerini depolayan ve indeksleyen bileşendir.
Elasticsearch Deposu Ekleme
Elasticsearch’ü yum paket yöneticisi aracılığıyla kurmak için, Elastic deposunu sisteminize eklemeniz gerekir. Öncelikle Elastic GPG anahtarını içe aktarın:
sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
Ardından, Elasticsearch 1.x serisi için bir yum depo dosyası oluşturun. /etc/yum.repos.d/elasticsearch.repo dosyasını aşağıdaki içerikle oluşturun:
sudo vi /etc/yum.repos.d/elasticsearch.repo
Dosyaya aşağıdaki içeriği ekleyin:
[elasticsearch-1.7]
name=Elasticsearch repository for 1.7.x packages
baseurl=https://packages.elastic.co/elasticsearch/1.7/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
Kaydedin ve çıkın (:wq).
Elasticsearch 1.7 Paketini Kurma
Depoyu ekledikten sonra Elasticsearch 1.7’yi kurabilirsiniz:
sudo yum install elasticsearch-1.7.6 -y
Not: 1.7.6 en kararlı 1.7 sürümüdür. İsterseniz başka bir 1.7.x sürümünü belirtebilirsiniz.
Elasticsearch Yapılandırması
Elasticsearch’ün ana yapılandırma dosyası /etc/elasticsearch/elasticsearch.yml adresindedir. Bu dosyayı düzenleyerek temel ayarları yapabiliriz.
sudo vi /etc/elasticsearch/elasticsearch.yml
Aşağıdaki satırları bulun ve düzenleyin veya ekleyin:
# Elasticsearch kümenizin adı. Tüm düğümler aynı küme adını paylaşmalıdır.
cluster.name: elk-cluster-1.7
Bu düğümün adı.
node.name: node-1
Elasticsearch'ün hangi IP adresinde dinleyeceğini belirtir.
Yalnızca localhost'tan erişime izin vermek için 127.0.0.1 kullanın.
Tüm ağ arayüzlerinden erişime izin vermek için 0.0.0.0 kullanın.
network.host: 0.0.0.0
HTTP portu. Varsayılan 9200'dür.
http.port: 9200
Veri ve log dizinleri. Varsayılan değerler genellikle iyidir.
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0 ayarı, Elasticsearch’ün sunucunun tüm IP adreslerinden erişilebilir olmasını sağlar. Güvenlik açısından, eğer sadece yerel uygulamaların erişmesi gerekiyorsa 127.0.0.1 olarak bırakmak daha iyidir. Ancak ELK Stack’in diğer bileşenleri (Logstash, Kibana) farklı sunucularda çalışıyorsa veya ağ üzerinden erişim gerekiyorsa 0.0.0.0 veya belirli bir IP adresi belirtilmelidir.
Elasticsearch Servisini Başlatma ve Etkinleştirme
Yapılandırmayı tamamladıktan sonra Elasticsearch servisini başlatın ve sistem başlangıcında otomatik olarak başlaması için etkinleştirin:
sudo systemctl daemon-reload
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
Elasticsearch Durumunu Doğrulama
Elasticsearch’ün doğru çalıştığını kontrol etmek için aşağıdaki curl komutunu kullanın:
curl -X GET 'http://localhost:9200/'
Aşağıdakine benzer bir çıktı almalısınız:
{
"name" : "node-1",
"cluster_name" : "elk-cluster-1.7",
"version" : {
"number" : "1.7.6",
"build_hash" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"build_timestamp" : "2016-04-06T13:46:17Z",
"build_snapshot" : false,
"lucene_version" : "4.10.4"
},
"tagline" : "You Know, for Search"
}
Güvenlik Duvarı Ayarları
Eğer sunucunuzda firewalld etkinse, dışarıdan erişime izin vermek için Elasticsearch’ün 9200 portunu açmanız gerekir:
sudo firewall-cmd --add-port=9200/tcp --permanent
sudo firewall-cmd --reload
Adım 3: Logstash 1.5 Kurulumu
Logstash, çeşitli kaynaklardan logları toplayan, işleyen ve Elasticsearch’e gönderen veri işlem hattıdır.
Logstash Deposu Ekleme
Logstash 1.5 için de Elastic deposunu kullanacağız. Elasticsearch için zaten GPG anahtarını içe aktardığımızdan, sadece depo dosyasını oluşturmamız yeterlidir. /etc/yum.repos.d/logstash.repo dosyasını aşağıdaki içerikle oluşturun:
sudo vi /etc/yum.repos.d/logstash.repo
Dosyaya aşağıdaki içeriği ekleyin:
[logstash-1.5]
name=Logstash repository for 1.5.x packages
baseurl=https://packages.elastic.co/logstash/1.5/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
Kaydedin ve çıkın.
Logstash 1.5 Paketini Kurma
Depoyu ekledikten sonra Logstash 1.5’i kurabilirsiniz:
sudo yum install logstash-1.5.6 -y
Not: 1.5.6 en kararlı 1.5 sürümüdür. İsterseniz başka bir 1.5.x sürümünü belirtebilirsiniz.
Logstash Yapılandırması
Logstash, giriş (input), filtre (filter) ve çıkış (output) bölümlerinden oluşan yapılandırma dosyaları aracılığıyla çalışır. Yapılandırma dosyaları genellikle /etc/logstash/conf.d/ dizininde bulunur. Bir örnek yapılandırma dosyası oluşturalım. Bu örnekte, sistem loglarını (syslog) dinleyip Elasticsearch’e göndereceğiz.
sudo vi /etc/logstash/conf.d/02-syslog-input.conf
Dosyaya aşağıdaki içeriği ekleyin:
input {
syslog {
port => 5140
type => "syslog"
}
}
Kaydedin ve çıkın. Bu, Logstash’in 5140 numaralı TCP portunda syslog girişlerini dinlemesini sağlar.
Şimdi bir filtre yapılandırması oluşturalım. Bu filtre, gelen syslog mesajlarını ayrıştırır ve yapılandırılmış alanlara dönüştürür:
sudo vi /etc/logstash/conf.d/03-syslog-filter.conf
Dosyaya aşağıdaki içeriği ekleyin:
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
Kaydedin ve çıkın.
Son olarak, işlenen verileri Elasticsearch’e gönderecek bir çıkış yapılandırması oluşturalım:
sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf
Dosyaya aşağıdaki içeriği ekleyin:
output {
elasticsearch {
host => "localhost" # Elasticsearch sunucusunun IP adresi veya hostname
protocol => "http"
port => "9200"
cluster => "elk-cluster-1.7" # Elasticsearch küme adı
}
stdout { codec => rubydebug } # Hata ayıklama için konsola çıktı verir
}
Kaydedin ve çıkın. stdout { codec => rubydebug } satırı, Logstash’in işlediği verileri konsola da yazdırmasını sağlar, bu da sorun giderme için faydalıdır. Üretim ortamında kaldırılabilir.
Logstash Servisini Başlatma ve Etkinleştirme
Yapılandırmayı tamamladıktan sonra Logstash servisini başlatın ve sistem başlangıcında otomatik olarak başlaması için etkinleştirin:
sudo systemctl daemon-reload
sudo systemctl start logstash
sudo systemctl enable logstash
Logstash Durumunu Doğrulama
Logstash’in durumunu kontrol etmek için:
sudo systemctl status logstash
Logstash’in doğru çalıştığından emin olmak için loglarını kontrol edebilirsiniz:
sudo tail -f /var/log/logstash/logstash.log
Güvenlik Duvarı Ayarları
Eğer Logstash’i başka bir sistemden log almak üzere yapılandırdıysanız (bu örnekte 5140 portu), bu portu güvenlik duvarında açmanız gerekir:
sudo firewall-cmd --add-port=5140/tcp --permanent
sudo firewall-cmd --reload
Adım 4: Kibana 4.1 Kurulumu
Kibana, Elasticsearch’teki verileri görselleştirmek ve analiz etmek için kullanılan web tabanlı bir arayüzdür. Kibana 4.1, genellikle bir .tar.gz arşivi olarak dağıtılır ve manuel olarak kurulur.
Kibana 4.1 İndirme
Kibana 4.1.x’i Elastic’in arşivlenmiş sürümlerinden indirebiliriz. Örnek olarak 4.1.1 sürümünü kullanalım:
cd /opt
sudo wget https://download.elastic.co/kibana/kibana/kibana-4.1.1-linux-x64.tar.gz
Kibana Arşivini Çıkarma
İndirilen arşivi /opt dizinine çıkarın:
sudo tar -zxvf kibana-4.1.1-linux-x64.tar.gz
sudo mv kibana-4.1.1-linux-x64 kibana-4.1.1
Kibana’nın daha kısa bir yoldan erişilebilir olması için sembolik bir bağ oluşturabilirsiniz:
sudo ln -s /opt/kibana-4.1.1 /opt/kibana
Kibana Kullanıcısı Oluşturma
Kibana’yı güvenli bir şekilde çalıştırmak için özel bir kullanıcı oluşturalım:
sudo groupadd kibana
sudo useradd -g kibana kibana
Kibana dizininin sahipliğini oluşturduğumuz kullanıcıya verin:
sudo chown -R kibana:kibana /opt/kibana-4.1.1
sudo chown -R kibana:kibana /opt/kibana
Kibana Yapılandırması
Kibana’nın ana yapılandırma dosyası /opt/kibana/config/kibana.yml adresindedir. Bu dosyayı düzenleyerek temel ayarları yapabiliriz.
sudo vi /opt/kibana/config/kibana.yml
Aşağıdaki satırları bulun ve düzenleyin veya ekleyin:
# Kibana'nın dinleyeceği port. Varsayılan 5601'dir.
server.port: 5601
Kibana'nın dinleyeceği IP adresi.
Yalnızca localhost'tan erişime izin vermek için "localhost" kullanın.
Tüm ağ arayüzlerinden erişime izin vermek için "0.0.0.0" kullanın.
server.host: "0.0.0.0"
Elasticsearch örneğinizin URL'si.
elasticsearch.url: "http://localhost:9200"
Elasticsearch'e veri yazmak için kullanılan dizin.
kibana.index: ".kibana"
Kibana'nın log seviyesi.
logging.verbose: false
server.host: "0.0.0.0" ayarı, Kibana’nın sunucunun tüm IP adreslerinden erişilebilir olmasını sağlar. Güvenlik açısından, eğer sadece yerel uygulamaların erişmesi gerekiyorsa "localhost" olarak bırakmak daha iyidir.
Kibana için Systemd Servisi Oluşturma
Kibana’yı bir servis olarak yönetmek için bir Systemd servis dosyası oluşturalım:
sudo vi /etc/systemd/system/kibana.service
Dosyaya aşağıdaki içeriği ekleyin:
[Unit]
Description=Kibana 4.1
After=elasticsearch.service
[Service]
ExecStart=/opt/kibana/bin/kibana
WorkingDirectory=/opt/kibana
Environment=NODE_ENV=production
User=kibana
Group=kibana
Restart=always
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=kibana
[Install]
WantedBy=multi-user.target
Kaydedin ve çıkın.
Kibana Servisini Başlatma ve Etkinleştirme
Systemd yapılandırmasını yeniden yükleyin, Kibana servisini başlatın ve sistem başlangıcında otomatik olarak başlaması için etkinleştirin:
sudo systemctl daemon-reload
sudo systemctl start kibana
sudo systemctl enable kibana
Kibana Durumunu Doğrulama
Kibana’nın durumunu kontrol etmek için:
sudo systemctl status kibana
Güvenlik Duvarı Ayarları
Eğer sunucunuzda firewalld etkinse, Kibana’nın 5601 portunu dışarıdan erişime izin vermek için açmanız gerekir:
sudo firewall-cmd --add-port=5601/tcp --permanent
sudo firewall-cmd --reload
Adım 5: ELK Stack’i Test Etme
Tüm bileşenler kurulduktan ve yapılandırıldıktan sonra, ELK Stack’in düzgün çalıştığını test edebiliriz.
Log Oluşturma
Logstash’in syslog girişini dinlediğini varsayarak, sunucunuzda bazı test logları oluşturun:
logger "Bu bir test mesajıdır, ELK Stack kurulumu başarılı."
Bu mesaj, Logstash tarafından yakalanmalı, işlenmeli ve Elasticsearch’e gönderilmelidir.
Kibana’ya Erişme
Web tarayıcınızı açın ve Kibana arayüzüne erişmek için sunucunuzun IP adresini veya hostname’ini ve 5601 portunu kullanın:
http://SUNUCU_IP_ADRESİ:5601
Kibana arayüzüne ilk kez eriştiğinizde, bir indeks deseni (index pattern) yapılandırmanız istenecektir. Logstash 1.5 varsayılan olarak logstash- şeklinde indeksler oluşturur. Bu nedenle, “Index name or pattern” alanına logstash- yazın ve “Create” butonuna tıklayın.
İndeks deseni oluşturulduktan sonra, sol taraftaki menüden “Discover” (Keşfet) sekmesine gidin. Burada, Logstash tarafından Elasticsearch’e gönderilen logları görmelisiniz. Oluşturduğunuz test mesajını da burada bulabilmeniz gerekir.
Sonuç
Bu makalede, Elasticsearch 1.7, Logstash 1.5 ve Kibana 4.1’den oluşan eski ELK Stack versiyonlarının CentOS 7 işletim sistemi üzerine nasıl kurulacağını adım adım detaylı bir şekilde anlattık. Bu süreç, Java kurulumundan başlayarak her bir bileşenin depo ekleme, paket yükleme, yapılandırma, servis yönetimi ve güvenlik duvarı ayarlarını kapsadı. Kurulumun sonunda, ELK Stack’in doğru çalıştığını doğrulamak için basit bir log oluşturup Kibana üzerinden görüntüleme adımlarını da tamamladık.
Bu eski sürümlerin kurulumu, modern Elastic Stack’in sunduğu bazı gelişmiş özelliklerden (örneğin, X-Pack güvenlik, Machine Learning, güncel API’ler) yoksun olsa da, belirli legacy sistemlerle uyumluluk veya belirli proje gereksinimleri için hala geçerli bir çözüm sunabilir. Ancak, yeni projeler için her zaman Elastic Stack’in en güncel ve desteklenen sürümlerini kullanmanız önerilir, çünkü bu sürümler performans iyileştirmeleri, yeni özellikler ve güvenlik güncellemeleri içerir.
Kurulum tamamlandıktan sonra, Kibana’da panolar ve görselleştirmeler oluşturarak log verilerinizden daha fazla anlam çıkarabilir, sistemlerinizi daha etkili bir şekilde izleyebilir ve potansiyel sorunları proaktif olarak tespit edebilirsiniz. Güvenlik açısından, üretim ortamlarında ELK Stack’i bir ters proxy (Nginx veya Apache) arkasına almak ve temel kimlik doğrulama eklemek gibi ek önlemler almanız şiddetle tavsiye edilir. Ayrıca, Elasticsearch kümesi için daha fazla düğüm ekleyerek veya Logstash ve Kibana’yı ayrı sunuculara taşıyarak ölçeklenebilirliği artırabilirsiniz.