ElasticSearch:
Lucene merkezli
bir arama motorudur. HTTP web arayüzü ve şema içermeyen JSON belgelerine sahip,
dağıtık, çok kanallı, tam metinli bir arama motoru sağlar. Elasticsearch, Java
ile geliştirilmiş ve Apache Lisansı koşulları altında açık kaynak olarak
piyasaya sürülmüştür. Resmi istemciler Java, .NET ( C # ), PHP, Python, Apache
Groovy, Ruby ve diğer birçok dilde kullanılabilir. DB-Motorları, Elasticsearch
ardından en popüler kurumsal arama motorudur.
Logstash:
Logstash,
olayları ve log mesajlarını toplamak, işlemek ve iletmek için kullanılan bir
araçtır. Koleksiyon, ham soket/paket iletişimi, dosya kuyruğu ve birkaç mesaj
veri yolu istemcisi dahil yapılandırılabilir. Giriş eklentileri aracılığıyla
gerçekleştirilir. Bir giriş eklentisi veri topladıktan sonra, olay verilerini
değiştiren ve not ekleyen herhangi bir sayıda filtre ile işlenebilir. Son
olarak, logstash olayları, eklentileri Elasticsearch, yerel dosyalar ve birkaç
mesaj yolu uygulaması dahil olmak üzere çeşitli harici programlara iletebilen
çıkış eklentilerine yönlendirir.
Kibana:
Kibana açık
kaynak veri görselleştirme eklentisi olarak tanımlanabilir. Bir Elasticsearch
kümesinde indekslenen içeriğin üst kısmında görselleştirme özellikleri sağlar.
Kullanıcılar, büyük hacimli verilerin üzerine çubuk, çizgi ve dağılım
grafikleri veya pasta grafikleri ve haritalar oluşturabilir.
Windows OS üzerine ELK Stack Kurulumu
ELASTCSEARCH
Not: Kurulum
yapılacak olan cihazın min. 4 GB ram kullanılması gerekmektedir.
İlk olarak https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
adresinden Java SE Development
Kit 8u201 versiyonunu indirip bilgisayarımıza kuruyoruz.
Dipnot: “Elasticsearch ve Logstash” JAVA
ile geliştirilen uygulamalar olduğundandır.
NOT: İlgili
java kurulumu sırasında kurulacak olan java’nın fiziksel yolunun belirlendiği
alanın sonunda JAVA_HOME isimli bir
dosya oluşturulup bu dosya içerisine kurulum yapılması gerekmektedir.
Elasticsearch bu dosya ismini aramaktadır.
Java SE Development Kit 8u201 versiyonunu kurduktan sonra, https://www.elastic.co/downloads/elasticsearch
adresinden elasticsearch uygulamasının son versiyonunu indirebiliriz. Windows
OS üzerine kurulum yapacağımızdan dolayı aşağıdaki sarı ile işaretli
paketlerden birini indirmemiz gerekmektedir. Biz MSI (BETA) paketini indireceğim.
İndirme işlemi bittikten sonra MSI (BETA) dosyasını çalıştırdığımızda karşımıza aşağıdaki bir
pencere açılmaktadır.
İlgili alanları aşağıdaki gibi doldurduktan sonra next butonuna basarak ilerliyoruz.
Sonra karşmıza aşağıdaki bir pencere gelmektedir. Burada ise Do not install as a service (start manually
when needed) seçeneğini seçerek ilerliyoruz.
Sonra karşmıza aşağıdaki bir pencere gelmektedir.
İsterdiğimiz Cluster Name ve Node Name alanlarını doldurup Memory’ imizi belirledikten sonra next butonuna tıklayarak ilerliyoruz. Bu
alanda istediğimiz network host
bilgisinide girebiliriz.
Sonra karşmıza aşağıdaki bir pencere gelmektedir. İstediğimiz
precessor’leri bu alandan
eklenmesini ister isek seçip ilgili plugin’leri
yükleyebiliriz. Biz herhangi bir plugin yüklemeden ilerliyeceğiz.
Sonra karşmıza aşağıdaki bir pencere gelmektedir. Bu
pencerede artık kurulumumuzun gerçekleştiğini görmekteyiz.
Aratık elasticsearch moturumuzu yapılandırmaya geldi.
Bilgisayarımızdan cmd konsoluna gelerek aşağıdaki adımları takip ederek
yapılandırma işlemlerini gerçekleştirebiliriz.
cd %PROGRAMFILES%\Elastic\Elasticsearch\6.5.4\bin.\elasticsearch.exe
Elasticsearch’ümüzün çalıştığını aşağıdaki gibi servislerin
başladığından anlamaktayız.
Elasticsearch başladığına göre herhangi bir http(s) isteği
gönderebileceğimiz araç ile https://localhost:9200 adresine istek yaparak Elasticsearch’ümüzün
detaylarını görebiliriz.
LOGSTASH
Sıra artık Logstash’I kurmaya geldi. İlk olarak https://www.elastic.co/downloads/logstash#ga-release
adresinden Logstash uygulamasını indirmemiz gerekmektedir. Windows OS üzerine
kurulum yaptığımız için ZIP dosyasını indirmemiz gerekiyor.
İndirme işlemi bittikten sonra zip’li dosyadan klasörlerimizi
çıkarıp düzenli bir şekilde ilerlemek için C:\\’ nin altında ELK adında klasör
oluşturup alt dizinine kopyalayabiliriz.
NOT: “Program files” dizininin altında
barındırırsak dosya ismindeki boşluktan dolayı logstash başlamayacaktır.
Klasörlerimizi incelediğimizde Logstash dosyalarında bulunan
config dizininde bazı düzenlemeler yapmamız gerekmektedir.
Config klasörümüzün içeriğinde bulunan logstash-sample.conf dosyasını düzenlemek için açıyoruz.
Düzenlemek için açmış olduğumuz dosyamızda Logstash’in
haberleştiği port numarasının 5044
olduğunu görebiliriz.
Şimdi ise Logstash’i başlatmak için pipeline.yml dosyasında düzenleme yapmamız gerekmektedir. Aşağıdaki
seçili alanda config dosyamızın
yolunu düzenleyerek Logstash’imizi başlatabiliriz.
Dikkat: Verececk
olduğumuz dosyanın fiziksel yolunu çift “\\”
ile ayırmamız gerekmektedir. Yapmış olduğumuz düzenlemeler aşağıdaki
gibidir.
Şimdi Logstash’imizi başlatma zamanı CMD konsolumuzu açtıktan
sonra aşağıda belirtilen adımları gerçekleştirmemiz gerekmektedir.
cd C:\ELK\logstash\bin.\logstash.bat
Komut satırında yukarıdaki kodları çalıştırmığımızda
aşağıdaki gibi logstash’in başladığını görebiliriz.
KIBANA
Artık Logstash’ de başladığına göre yakalacağımız logları
sergilemek için Kibana’nın kurulumuna geçebiliriz.
İlk olarak https://www.elastic.co/downloads/kibana
adresinden WINDOWS dosyasını indirmemiz gerekmektedir.
İndirme işlemi bittikten sonra zip’li dosyayı açtığımızda
aşağıdaki dosyalar bütününü görmekteyiz.
Config dizininde bulunan kibana.yml
dosyasında gereli düzenlemeleri yapmamız gerekmektedir. Aşağıdaki gibi sarı ile
işaretli satırları açmamız gerekmektedir.
Gerekli düzenlemeleri yaptıktan sonra CMD komut satırına
aşağıdaki komutları yazarak kibana’mızı çalıştırabiliriz.
cd C:\ELK\kibana\bin.\kibana.bat
Komut satırında yukarıdaki kodları çalıştırdığımızda
aşağıdaki gibi kibana’nın başladığını görebiliriz.
Herhangi bir http(s) isteği gönderebileceğimiz araç ile http://localhost:5601 adresine istek
yaptığımızda Kibana’nın web arayüzüne erişebildiğimizi görebiliriz.
Kibana’nın içeriğini biraz incelemek isterseniz bu versiyonda
içerisinde örnek log verileri bulunmaktadır. Bu sayede Kibana’nın içeriğini
detaylı olarak analiz edebilirsiniz.
BEATS
Şimdi Beat yani ELK Stack’in agent’larından Winlogbeat
kurulumuna geçebiliriz. İlk olarak https://www.elastic.co/downloads/beats
adresinde bulunan beats seçeneklerine bir göz gezdirmede fayda var. Biz
Winlogbeat agent’ını kuracağımız için https://www.elastic.co/downloads/beats/winlogbeat
adresinden Winlogbeat’i indireceğiz.
Windows OS 64 bit olduğu için aşağıdaki sarı işaretli olan
Winlogbeat agent’ını indiriyoruz.
İndirme işlemi bittikten sonra zip’li dosyaları çıkartıp
incelediğimizde aşağıdaki gibi dosyaların bulunduğu görmekteyiz.
Dosyaları inceledikten sonra Winlogbeat dizinini C:\Program File\ dizinin altına
taşımamız gerekmektedir. Taşıma işlemi gerçekleştikten sonra Powershell açmamız
gerekmektedir.
Powershell’i Administrator haklarıyla açtıktan sonra
aşağıdaki komutları sırasıyla işletmeliyiz.
cd C:\Program Files\winlogbeat.\install-service-winlogbeat.ps1Set-Service –Name “winlogbeat” –StartupType automatic
Start-Service –Name “winlogbeat”
Komut satırında yukarıdaki kodları çalıştırdığımızda
aşağıdaki gibi Winlogbeat’in başladığını görebiliriz.
Windows OS üzerine ELK Stack kurulumumuzu bu adımla birlikte
tamamlamış bulunuyoruz.
Ubuntu 18.04 OS üzerine ELK Stack Kurulumu
Elasticsearch
Not: Kurulum yapılacak olan cihazın min. 4 GB ram
kullanılması gerekmektedir.
İlk olarak Windows OS’inde anlatmış olduğum gibi JAVA
uygulamasının kurulumu ile başlıyoruz.
Komut satırına aşağıdaki komutları sırasıyla yapıştırıyoruz.
sudo apt install software-properties-common apt-transport-https -y
sudo add-apt-repository ppa:webupd8team/java -y
sudo add-apt-repository ppa:webupd8team/java -y
Şimdi sıra indirmiş olduğumz Java8’in kurulumunda aşağıdaki
komutu, komut satırına yapıştırınız.
sudo apt install oracle-java8-installer -y
Kurulum tamamlandıktan sonra java versiyonunu kontrol etmek
için komut satırına aşağıdaki komutu yapıştırınız.
java -version
Java kurulumu bitti şimdi java’ nın kullandığı alternatif
dosyayı kontrol etmek için aşağıdaki koutu, komut satırına yapıştırıyoruz.
update-alternatives --config java
Komutu çalıştırdığımızda aşağıdaki gibi alternatif dosya
yolunun /usr/lib/jvm/java-8-oracle/jre/bin/java
olduğunu görmekteyiz.
Şimdi java.sh
dosyasında gerekli konfigürasyon ayarlamak için aşağıdaki komutu, komut
satırına yapıştırıyoruz.
vim /etc/profile.d/java.sh
Komutu çalıştırıdığımızda karşımıza aşağıdaki gibi Vim
editörü sayesinde açılmış boş bir dosya görmekteyiz. Bu boş dosya içeriğine
aşağıdaki komutları yapıştırmamız gerekmektedir.
Burada Elasticsearh’ün
çalışması için java dosyasının JAVA_HOME dizinine ayarlamamız gerekmektedir.
#Set JAVA_HOME
JAVA_HOME="/usr/lib/jvm/java-8-oracle"
export JAVA_HOME
PATH=$PATH:$JAVA_HOME
export PATH
Vim edtörüne yukarıdaki komutları yapıştırdıktan sonra “:w”
yazarak enter tuşuna basarak yazmış olduğumuz komutları java.sh dosyasına
yazmış oluyoruz.
Sonra ":q" yazıp enter tuşuna basarak Vim editöründen çıkış
yapabiliriz.
İlgili dosyaya komutlarımızı yazdıktan sonra dosyayı
çalıştırmak için yetki vermemiz gerekmektedir.
Bu işlemide aşağıdaki komutlar
sayesinde yaparak çalıştırabiliriz.
chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh
source /etc/profile.d/java.sh
echo $JAVA_HOME
JAVA_HOME
dizinimizi java’ya sembolink olarak tanımladıktan sonra artık Elasticsearch
kurulumumuza geçebiliriz.
Elasticsearch kurulumu için aşağıdaki komutları sırasıyla
komut satırına yapıştırarak kurulumu başlatabiliriz.
wget -qO -
https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Aşağıdaki komutları sırasıyla komut satırına yapıştırınız.
sudo apt update
sudo apt install elasticsearch -y
sudo apt install elasticsearch -y
Kurulum tamamlandıktan sonra Elasticsearch’un kurulmuş olduğu
dizine geçip elasticsearch.yml dosyasını
düzenlememiz gerekmektedir. Aşağıdaki komutları sırasıyla komut satırına
yapıştırınız.
cd /etc/elasticsearch/
vim elasticsearch.yml
vim elasticsearch.yml
Vim editörü ile açmış olduğumuz elasticsearch.yml dosyasının içeriğini düzenlemek için aşağıdaki
yazılı olan komutları elasticsearch.yml
dosyasında aktif hale getirmemiz gerekmektedir. İlgili komutları aktif hale
getirmek için aşağıdaki komut satırlarının bulunduğu satırın başındaki # işaretini silip dosyayı kayıt etmemiz
yeterli olmaktadır.
network.host: localhost
http.port: 9200
elastichsearch.yml
dosyasında ilgili değişiklikleri yaptıktan sonra dosyayı kaydedip çıktıktan
sonra artık elasticsearch’ümüzü başlatabiliriz. Elasticsearch’ümüzü başlatmak
için aşağıdaki komutları sırasıyla komut satırına yapıştırınız.
systemctl start
elasticsearch
systemctl enable elasticsearch
systemctl enable elasticsearch
Komutları çalıştırdığımızda aşağıdaki gibi elasticsearch’ün
çalıştığını görebilirsiniz.
Çalıştığından emin olmak için Elasticsearh’ün portunu kontrol
etmek için aşağıdaki komutu, komut satırına yapıştırınız.
netstat -plntu
Çalıştırdığımızda aşağıdaki resimden analaşıldığı gibi 9200
portunun ayağa kalktığını görebiliriz.
Herhangi bir http(s) isteği gönderebileceğimiz araç ile Elasticsearch’ün
çalıştığını ve versiyonunu görmek için http://localhost:9200 adresine
istek yaptığımızd aşağıdaki gibi bir ekran karşımıza gelmektedir.
Eğer komut satırından bakmak ister iseniz aşağıdaki komutu,
komut satırına yapıştırınız.
curl -XGET
'localhost:9200/?pretty'
Yapıştırdığınızda karşınıza aşağıdaki gibi bir sonuç
gelmektedir.
Elasticsearch kurulumumuzu tamamlamış olduk.
Logstash
Logstash’I kurmadan önce openssl sürümümüzü kontrol ediyoruz.
Aşağıdaki komutu, komut satırına yapıştırınız.
openssl version -a
Logstash için openssl
1.1.0.g versiyonuna kadar olan sürümleri kullanmanızı tavsiye ederim. 1.1.2 versiyonunda logstash bazen sorun
çıkarabilmektedir.
Şimdi Logstash kurulumu için aşağıdaki komutu, komut satırına
yapıştırınız.
sudo apt install
logstash -y
Yükleme işlemi tamamlandıktan sonra, istemci veri tabanından
Logstash sunucusuna log verisi transferini güvence altına almak için SSL
sertifika anahtarı üretmek için /etc/hosts
dosyasını düzenlemiz gerekmektedir. Aşağıdaki komut ile ilgili dosyayı
düzenlemek için açınız.
vim /etc/hosts
İlgili dosyayı açtıktan sonra aşağıdaki komutu kendi
makinanızın IP adresini yazarak ilgili dosyanın içeriğine ekleyiniz.
192.168.152.17 elk-btrisk
Dosyayı kayıt ettik sonra /etc/logstash/ dizinin altında ssl
adında bir dosya oluşturmak için aşağıdaki komutu, komut satırına yapıştırınız.
mkdir -p
/etc/logstash/ssl
cd /etc/logstash/ssl
İlgili dosya oluştuktan sonra ssl sertifikasını oluşturmak
için aşağıdaki komutu, komut satırına yapıştırınız.
openssl req -subj
'/CN=elk-btrisk/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout
ssl/logstash-forwarder.key -out ssl/logstash-forwarder.crt
Logstash için SSL sertifika dosyaları /etc/logstash/ssl dizininde oluşturuldu.
Ardından, logstash için yeni yapılandırma dosyaları
oluşturacağız. Filebeat'ten giriş dosyası, 'syslog-filter.conf'
ve syslog işleme için syslog-filter.conf
ve sonra Elasticsearch çıktısını tanımlamak için bir output-elasticsearch.conf dosyası olan bir yapılandırma dosyası
oluşturacağız.
Logstash configuration dizinine gidin ve 'conf.d' dizininde filebeat-input.conf
yeni yapılandırma dosyalarını oluşturun.
cd /etc/logstash/
vim conf.d/filebeat-input.conf
vim conf.d/filebeat-input.conf
İlgili dosya açıldıktan sonra aşağıdaki komutları açılan
dosya içeriğine kopyalayıp kaydediniz.
input {
beats {
port => 5443
type => syslog
ssl => true
ssl_certificate =>
"/etc/logstash/ssl/logstash-forwarder.crt"
ssl_key =>
"/etc/logstash/ssl/logstash-forwarder.key"
}
}
Syslog işlem log verileri için 'grok' adlı filtre eklentisini kullanmamız gerekmektedir. Yeni bir
konfigürasyon 'syslog-filter.conf'
adında bir dosya oluşturmak için aşağıdaki komutu, komut satırına yapıştırınız.
vim conf.d/syslog-filter.conf
Vim editörü açıktıktan sonra aşağıdaki komutları içeriğine
ekleyerek kayıt ediniz.
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}" ]
}
date {
match => [
"syslog_timestamp", "MMM
d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
Elasticsearch çıktıları için 'output-elasticsearch.conf' isimli yapılandırma dosyasını
oluşturmamız gerekmektedir. Bu dosyayı oluşturmak için aşağıdaki komutu, komut
satırına yapıştırınız.
vim
conf.d/output-elasticsearch.conf
Vim editörü açıktıktan sonra aşağıdaki komutları içeriğine
ekleyerek kayıt ediniz.
output {
elasticsearch { hosts =>
["localhost:9200"]
hosts => "localhost:9200"
manage_template => false
index =>
"%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type =>
"%{[@metadata][type]}"
}
}
Kaydetme işlemi bittikten sonra logstash’I başlatmak için
aşağıdaki komutları sırasıyla, komut satırına yapıştırınız.
sudo systemctl enable
logstash
sudo systemctl start logstash
sudo systemctl start logstash
Logstash’in başladığından emin olmak için aşağıdaki komutları
sırasıyla komut satırına yapıştırınız.
netstat -plntu
systemctl status logstash
systemctl status logstash
Logstash kurulumunu tamamlamış olduk.
Kibana
Kibanayı kurmak için aşağıdaki komutu, komut satırına
yapıştırınız.
sudo apt install
kibana -y
Kurulum işlemi bittikten sonra /etc/kibana dizininde bulunan kibana.yml
dosyasını düzenlemek için aşağıdaki komutları, komut satırına sırasıyla
yapıştırınız.
cd /etc/kibana/
vim kibana.yml
vim kibana.yml
Vim editörü açıldıktan sonra aşağıda yazılı olan komutları
açılan dosya içeriğinde aktif hale getirmek için komutların başında yazılı olan
“#” işaretini kaldırdıktan sonra
kayıt ediniz.
server.port: 5601
server.host:
"localhost"
elasticsearch.url:
"http://localhost:9200"
Şimdi Kibanayı çalıştırmak için aşağıdaki komutları sarısıyla
komut satırına yapıştırınız.
sudo systemctl enable
kibana
sudo systemctl start kibana
sudo systemctl start kibana
Kibananın çalıştığından emin olmak için aşağıdaki komutu, komut
satırına yapıştırıp çalıştırınız.
netstat -plntu
Herhangi bir http(s) isteği gönderebileceğimiz araç Kibana’nın
UI tarafını incelemek için http://localhost:5601 adersine
istek yaptığınızda aşağıdaki gibi bir pencere karşınıza gelmektedir.
ELK stack eğer aynı network’te içinde kullanılacaksa ngnix
kurulumu yapmanıza gerek bulunmamaktadır. Fakat internete açacağınız bir
sunucunuz log verilerini tutacaksanız ngnix ile reverse proxy yapmanız tavsiye
edilir.
Kibana kurulumu bittikten sonra nginx ve apache2-utils
paketlerini sisteme yüklemek için aşağıdaki komutu, komut satırına
yapıştırınız.
sudo apt install nginx
apache2-utils -y
Kurulum tamamlandıktan sonra /etc/nginx dizininde bulunan
konfigürasyon dosyasını düzenlemek için aşağıdaki komutları sırasıyla komut
satırına yapıştırınız.
cd /etc/nginx/
vim sites-available/kibana
vim sites-available/kibana
Vim editörü ile açmış olduğumuz dosyanın içeriğine aşağıdaki
komutları yapıştırıp kaydediniz.
server {
listen 80;
server_name elastic-stack.io;
auth_basic "Restricted Access";
auth_basic_user_file
/etc/nginx/.kibana-user;
location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Kaydettikten sonra kibana panosuna erişmek için yeni temel
kimlik doğrulama web sunucusu oluşturmak için aşağıdaki komutu, komut satırına
yapıştırınız.
sudo htpasswd -c
/etc/nginx/.kibana-user elastic
Elasticsearch kullanıcısın parolasını yazmanız gerekmektedir.
Elasticsearch kullanıcısın parolasını yazmanız gerekmektedir.
Kibana sanal ana bilgisayarını etkinleştirip ve nginx
yapılandırmasını test etmek için aşağıdaki komutları sırasıyla komut satırına
yapıştırınız.
ln -s
/etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/
nginx -t
nginx -t
Testimizi tamamladıktan sonra ngnix servisini başlatmak için
aşağıdaki komutları sırasıyla komut satırnı yapıştırınız.
systemctl enable nginx
systemctl restart nginx
systemctl restart nginx
Kibana için ngnix kurulumu ve konfigürasyonu tamamlanmıştır.
ELK stack kurulumumuzu tamamlamış bulunmaktayız.