04 Şubat 2019

Windows OS ve Ubuntu 18.04 ELK Stack Kurulumu



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.ps1
Set-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

Ş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
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

Aşağıdaki komutları sırasıyla komut satırına yapıştırınız.

sudo apt update
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 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

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

İ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

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



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 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

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 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.

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



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

Kibana için ngnix kurulumu ve konfigürasyonu tamamlanmıştır.



ELK stack kurulumumuzu tamamlamış bulunmaktayız.