Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

ELK Stack

ELK Stack açık kaynak kodlu yazılmış olan 4 farklı yazılımın birlikte çalışarak log
yönetimi sağladığı bir araçtır. Bu yapı sayesinde farklı vendor’ lar tarafından üretilen loglar
derinlemesine analiz edilerek aynı zamanda Web GUI aracılığıyla bir Dashboard üzerinden görsel
olarak grafiklendirilir. Sistem üzerinde bu yapıyı kurmadan önce yapıyı oluşturan yazılımlar
hakkında aşağıdaki gibi genel bir bilgiye sahip olabiliriz;
▪ Elasticsearch: Logların JSON biçiminde saklanmasında, sıralanmasında ve
spesifik ifadelerin aranması işlemlerine yardımcı olan bir araçtır. Bu yazılımın
temel özellikleri aşağıdaki gibidir;
✓ Bir arama motoru, sunucusudur.
✓ NoSQL tabanlı bir veri tabanıdır. Bu sayede sorgular sırasında SQL
kullanılmaz.
✓ Apache Lucune tabanlı RESTful API kullanır.
✓ Arama yapma sırasında kendisine ait oluşturduğu dizin yapısını kullanılır.
Bu sayede hızlı bir süreç sağlanır.
▪ Logstash: Sistem loglarını filtreleyen, toplayan ve ayrıştıran(parse) açık kaynak
kodlu bir araçtır. Bu yazılımın temel özellikleri aşağıdaki gibidir;
✓ Data pipeline aracıdır.
✓ Veri işlemeyi merkezileştirir.
✓ Çok çeşitli(vendor bağımsız) yapılandırılmış verileri ve olayları toplayarak
ayrıştırır ve analiz eder.
▪ Kibana: Verileri aramamızı, görüntülememizi ve derlememizi sağlayan bir Web
GUI ortamını sunan araçtır. Bu yazılımın temel özellikleri aşağıdaki gibidir;
✓ Görselleştirme
✓ Gerçek zamanlı analiz, özetleme, grafik ve hata ayıklama özellikleri sağlar.
✓ Arama yapılan logların, olayların anlık görüntülerini(snapshot)
paylaşılmasını sağlar.
▪ Beats: Çeşitli kaynaklardan(vendor) veri toplayarak bu verileri Logstash veya
Elasticsearch’ e aktarılmasını sağlayan bir araçtır.
Sistemde aktif bir şekilde çalışabilmesi için aşağıdaki servislere ihtiyaç duymaktadır,
ayrıca aşağıda gösterilen minimum sistem kaynaklarına sahip olunması gerekmektedir. Bu
servislerin yapılandırmalarında aşağıdaki tablo referans alınacaktır. Buradaki ELK kurulumu
sırasında ilgili paketleri yüklemeden önce herbiri için yeni bir “Repository” oluşturulacaktır. Bu
yüzden bu adımları sırasıyla aşağıdaki tabloyu referans alarak uygulayabilirsiniz.
▪ Java
✓ yum -y install java-openjdk-devel java-openjdk
✓ wget --no-cookies --no-check-certificate --header "Cookie:
gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-
securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u77-
b02/jdk-8u77-linux-x64.rpm
✓ rpm -ivh jdk-8u77-linux-x64.rpm

1
▪ Apache
✓ yum -y install httpd
▪ Elasticsearch
✓ yum -y install elasticsearch
▪ Logstash
✓ yum -y install logstash
▪ Kibana
✓ yum -y install kibana
▪ Gerekli sistem kaynakları;
✓ Centos 7 – 64 Bit – 4Gb Ram – 2 CPU
✓ Ubuntu 14.04 – 4Gb Ram – 2 CPU
Genel olarak yapımız aşağıdaki gibi bir topoloji üzerinde gözlemlenebilir.

Yukarıda gösterilen sistem gereçleri sağlanıldığını varsayarak aşağıdaki yapılandırma


dosyaları üzerinde gerekli işlemler yapılmıştır.
## Paket kurulumlarına başlamadan öncelikle Remi Repo’ sunu sisteme ekleyelim.##
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum-utils
## Elasticsearch için aşağıdaki gibi Repository oluşturalım. ##
cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
## Elasticsearch GPG key’ ini RPM’ e eklemek için aşağıdaki komutu çalıştıralım
ve sisteme Elasticsearch’ i yükleyelim. Ardından aşağıdaki komut ile sistemde ilgili
RPM paketlerini kontrol edebilirsiniz. ##
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
rpm -qi elasticsearch
## Bu aşamadan sonra artık sistemde Java paketleri üzerinde bazı optimizasyon
ayarlarını /etc/elasticsearch/jvm.options dosyası aracılığıyla düzenleyelim. Dosya
üzerinde gerekli güncellemeler yapıldıktan sonra Elasticsearch servisi başlatılır,
ilgili servis 9200 portu üzerinden haberleşmektedir. Kontrol etmek için netstat
komutu kullanılabilir. ##
-Xms256m

2
-Xmx512m
systemctl enable elasticsearch
systemctl start elasticsearch
netstat -plntu
## Elasticsearch yapılandırmamızı başarılı şekilde tamamladıktan sonra artık
Kibana kurulumuna geçebiliriz. Kibana için aşağıdaki gibi Repository oluşturalım.
##
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.1.1-x86_64.rpm
rpm -ivh kibana-5.1.1-x86_64.rpm

## Kibana’ yı sisteme yükleyelim ve ardından /etc/kibana/kibana.yml dosyası


üzerinde aşağıdaki ayarları güncelleyelim. ##
server.host: "0.0.0.0"
server.name: "kibana.com"
elasticsearch.url: http://IP_ADDRESS:9200
## Yukarıdaki yapılandırmaları gerçekleştirdikten sonra Kibana servisi
başlatılır, ilgili servis 5601 portu üzerinden haberleşmektedir. Kontrol etmek için
netstat komutu kullanılabilir. ##
systemctl enable kibana
systemctl start kibana
netstat –plntu
## Kibana yapılandırmamızı başarılı şekilde tamamladıktan sonra artık Logstash
kurulumuna geçebiliriz. Logstash Elasticsearch ile aynı GPG Key’ i paylaştığı için
direkt olarak ilgili paketleri sisteme kurabiliriz. ##
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.rpm
rpm -ivh logstash-5.1.1.rpm
## Logstash yapılandırma dosyası JSON formatında olup /etc/logstash/conf.d
dizini altında altında konumlandırılacak olan input, output ve filter dosyalarından
oluşmaktadır. Bunun için öncelikle input dosyasını aşağıdaki şekilde oluşturalım.
##
vim /etc/logstash/conf.d/input.conf
input {
beats {
port => 5044
}
}
## Filter dosyasını yine aynı dizinde aşağıdaki şekilde oluşturalım. ##
vim /etc/logstash/conf.d/filter.conf
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" ]
}
}
}
## Output dosyasını yine aynı dizinde aşağıdaki şekilde oluşturalım. ##
vim /etc/logstash/conf.d/output.conf

3
output {
elasticsearch {
hosts => ["IP_ADDRESS:9200"]
sniffing => true
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
## Yukarıdaki yapılandırmaları gerçekleştirdikten sonra Kibana servisi
başlatılır, ilgili servis 5044 portu(input file belirtilen) üzerinden
haberleşmektedir. Kontrol etmek için netstat komutu kullanılabilir. ##
systemctl enable logstash
systemctl start logstash
netstat –plntu
## Aşağıdaki adımlar sayesinde Kibana üzerinde Dashboard arşivi oluşturulur ve
curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-
1.1.0.zip
unzip beats-dashboards-*.zip
cd beats-dashboards-*
./load.sh
curl -O
https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1
adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json
curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@filebeat-
index-template.json
Output:
{
"acknowledged" : true
}
## Bu aşamadan sonra ELK server Filebeat dosyalarını almaya hazır durumdadır.
Bundan sonra Client tarafından Filebeat kurulumunu gerçekleştireceğiz. ##
rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
vim /etc/yum.repos.d/elastic-beats.repo
[beats]
name=Elastic Beats Repository
baseurl=https://packages.elastic.co/beats/yum/el/$basearch
enabled=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
gpgcheck=1
yum -y install filebeat
vim /etc/filebeat/filebeat.yml
paths:
/var/log/*.log
document_type: syslog
logstash:
hosts: ["IP_ADDRESS:5044"]
bulk_max_size: 1024
systemctl start filebeat
systemctl enable filebeat

You might also like