Merhabalar bu yazımızda sizlere kendi log sunucunuzu nasıl hazırlayabileceğiniz göstereceğim.
ELK Yığın, tam özellikli bir veri analizi platformudur, üç açık kaynak araçtan oluşur Elasticsearch, Logstash ve Kibana. Bu yığın, günlükleri merkezi olarak saklamanıza ve yönetmenize yardımcı olur ve olayları belirli bir zamanda ilişkilendirerek sorunları analiz etme yeteneği sağlar. Bu gönderi, ELK yığınını Ubuntu 18.04 / Ubuntu 16.04’e yüklemenize rehberlik eder.
Bileşenler
Elasticsearch – Gelen günlükleri Logstash’ten kaydeder ve günlükleri / verileri gerçek zamanlı olarak arama imkanı sunar
Logstash – Beats (forwarder) tarafından gönderilen gelen günlüklerin işlenmesi (Topla, zenginleştir ve Elasticsearch’e gönder).
Kibana – Olayların ve kayıtların görselleştirilmesini sağlar.
Beats – İstemci makinelere yüklenir ve atım protokolü aracılığıyla Logstash veya Elasticsearch’e günlükleri gönderir.
Java’yı yükleyin
Elasticsearch’te makinenizde OpenJDK veya Oracle JDK bulunmakta.
İşte, bu demo için OpenJDK kullanıyorum. APT için wget ve HTTPS destek paketi ile birlikte aşağıdaki komutu kullanarak Java’yı yükleyin.
sudo apt update
sudo apt install -y openjdk-8-jdk wget apt-transport-httpsJava sürümünü kontrol edin.
java -versionÇıktı bu şekilde olmalı,
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.18.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)ELK deposunu yapılandır
ELK yığın paketleri, resmi deposunu kurarak Elastic CO’dan kolayca elde edilebilir.
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.listElasticsearch’ü Yükle
Şimdi Lucene merkezli açık kaynaklı bir arama motoru olan Elasticsearch sunucusunu kuracağız. Bir web arayüzü (HTTP) ve şema içermeyen JSON belgeleriyle gerçek zamanlı dağıtılmış, çok kullanıcılı yetenekli tam metin arama motoru sağlar.
Install Elasticsearch using the following command, v6.4 at the time of writing this article.
sudo apt update
sudo apt install -y elasticsearchElasticsearch servisini başlatın.
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearchBirkaç dakika bekleyin ve Elasticsearch REST arayüzünün durumunu görmek için aşağıdaki komutu çalıştırın.
curl -X GET http://localhost:9200Çıktı şuna benzer olmalı,
{
"name" : "nqS7TFZ",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "vERyh1VpR46G9T21H_3gKQ",
"version" : {
"number" : "6.4.0",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "595516e",
"build_date" : "2018-08-17T23:18:47.308994Z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}Yukarıdaki çıktı, Elasticsearch’ün çalıştığını ve iyi çalıştığını onaylar.
Logstash’i yükleyin
Logstash açık kaynaklı bir veri toplama ve log ayrıştırma motorudur. Günlükleri toplar, bunları aramak için Elasticsearch’te saklar ve saklar. Ekstra çalışma gerektirmeyen farklı türde etkinliklerin işlenebilmesini sağlayan Logstash için 160’tan fazla eklenti bulunmaktadır.
sudo apt install -y logstashLogstash için SSL sertifikası oluşturun (İsteğe bağlı)
İstemci makinelere yüklediğimiz İleticinin (Filebeat) günlüklerin güvenli iletimi için SSL sertifikasını kullanması isteğe bağlıdır.
SSL sertifikasını ana bilgisayar adı veya IP SAN ile oluşturun.
cd /etc/ssl/Şimdi, OpenSSL kullanarak SSL sertifikası oluşturun. pegasiem.peganetbilisim.com dosyasını Logstash sunucunuzun ana bilgisayar adı ile değiştirin.
sudo openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout logstash-forwarder.key -out logstash-forwarder.crt -subj /CN=pegasiem.peganetbilisim.com
NOT : Bu logstash-forwarder.crt, logstash sunucusuna log gönderen tüm sunuculara kopyalanmalıdır.
SSL’yi dönüştür
Logstash’in düzgün çalışması için mevcut anahtarı PKCS8 formatına dönüştürün.
sudo openssl pkcs8 -in logstash-forwarder.key -topk8 -nocrypt -out logstash-forwarder.key.pemDosya iznini dünya okunabilir olarak değiştirin.
sudo chmod 644 /etc/ssl/logstash-forwarder.key.pemLogstash Yapılandır
Logtastash konfigürasyonu girdi, filtre ve çıktı olmak üzere üç bölümden oluşur. Tüm bölümleri tek bir dosyaya veya her bölüm için ayrı bir dosyaya koyabilirsiniz, .conf ile bitebilirsiniz.
Burada girdi, filtre ve çıktı bölümlerini yerleştirmek için tek bir dosya kullanacağız. /etc/logstash/conf.d/ dizini altında bir konfigürasyon dosyası oluşturun.
sudo nano /etc/logstash/conf.d/logstash.confGiriş bölümünde, Logstash’ı, gelen günlükler için 5044 numaralı bağlantı noktasını, istemci makinelerinde oturan atımlardan (İletici) dinleyecek şekilde yapılandıracağız.
input {
beats {
port => 5044
# Set to False if you do not SSL
ssl => true
# Delete below lines if no SSL is used
ssl_certificate => "/etc/ssl/logstash-forwarder.crt"
ssl_key => "/etc/ssl/logstash-forwarder.key.pem"
}
}Filtre bölümünde. Grok’u depolamak için Elasticsearch’e göndermeden önce kütükleri ayrıştırmak için kullanacağız.
Aşağıdaki grok filtresi, syslog etiketli kütükleri arayacak ve yapılandırılmış bir dizin oluşturmak için bunları ayrıştırmaya çalışacaktır.
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGLINE}" }
}
date {
match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}Çıkış bölümünde, günlüklerin nerede depolanacağını, açıkça ELK yığını durumunda Elasticsearch’ü tanımlayacağız.
output {
elasticsearch {
hosts => localhost
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
}
stdout {
codec => rubydebug
}
}Şimdi Logstash hizmetini başlatıp etkinleştirin.
sudo systemctl restart logstash
sudo systemctl enable logstashsudo cat /var/log/logstash/logstash-plain.logKibana’yı Kurmak ve Konfigüre Etmek
Kibana, Elasticsearch’te depolanan verilerin görselleştirilmesini sağlar. Aşağıdaki komutu kullanarak Kibana’yı kurun.
sudo apt install -y kibanaErişimi enale etmek için /etc/kibana/kibana.yml dosyasını düzenleyin.
sudo nano /etc/kibana/kibana.ymlserver.host: “localhost” kısmındaki # işareti kaldırıyoruz.
elasticsearch.url: “http://localhost:9200” kısmındaki # işareti kaldırıyoruz.
Makine başlatıldığında Kibana’yı başlatın ve etkinleştirin.
sudo systemctl restart kibana
sudo systemctl enable kibanaBeats yükleyin
Mevcut dört beat istemcisi var.
- Packetbeat – Ağ paket verilerini analiz edin.
- Filebeat – Günlük verilerine gerçek zamanlı bakış açısı.
- Topbeat – Altyapı verilerinden bilgi edinin.
- Metricbeat – Metrikleri Elasticsearch’e gönder.
İstemci makinelerinin Logstash sunucusunun ana bilgisayar adını çözebildiğinden emin olun. Ortamınızda bir DNS sunucusu yoksa, istemci makinede Logstash sunucusu için bir ana bilgisayar girişi eklemeniz gerekir.
sudo nano /etc/hostsAşağıdaki değerleri kendi ip adres ve hostname adreslerinize göre düzenleyin.
68.183.222.152 pegasiem.peganetbilisim.comSon olarak kibana arayüzüne güvenli bir şekilde erişmek için NGINX Reverse Proxy ayarlarını yapacağız.
Adım 1: Nginx’i yükleyin
Nginx, Ubuntu’nun varsayılan depolarında bulunmaktadır, bu yüzden kurulum oldukça basittir.
sudo apt-get update
sudo apt-get install nginxAdım 2: Güvenlik Duvarını Ayarlayın
Nginx’i test etmeden önce, hizmete erişime izin vermek için güvenlik duvarı yazılımımızı yeniden yapılandırmamız gerekir. Nginx, kurulumun ardından güvenlik duvarımız olan ufw ile kendisini bir hizmet olarak kaydeder. Bu Nginx erişimine izin vermek oldukça kolaylaştırır.
UFW yükleyin
sudo apt install ufwArdından durumu kontol edin.
sudo ufw status verboseFirewall dan Nginx’ e izin veriyoruz.
sudo ufw allow 'Nginx HTTP'Tekrar durumu kontrol ediyoruz.
sudo ufw statusArdından Nginx servisi başladımı kontrol ediyoruz.
systemctl status nginxŞimdi Nginx ile kimlik doğrulama yapmak için aşağıdaki komutu girin.
echo "pegasiem:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.usersNOT : pegasiem kısmı kullanıcı adıdır. Siz kendinize göre değişiklik yapabilirsiniz. Yukarıdaki komutu girdiğiniz de sizden 2 defa şifre girmenizi isteyecek sistem. Şifreleri 2 defa girerek Nginx ile kimlik doğrulama işlemini ayarlamış olursunuz.
Sonraki adımda reverse proxy için bir config hazırlanacak.
sudo nano /etc/nginx/sites-available/pegasiem.peganetbilisim.comNOT : pegasiem.peganetbilisim.com kısmını kendi hostname kısmınız ile değiştirebilirsiniz.
Config dosyasına aşağıdaki kısımları giriyoruz.
server {
listen 80;
server_name pegasiem.peganetbilisim.com;
access_log /var/log/nginx/pegasiem.peganetbilisim.com-access.log compression;
error_log /var/log/nginx/pegasiem.peganetbilisim.com-error.log warn;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/htpasswd.users;
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;
}
}Ardından, sitelerin etkin olduğu dizine sembolik bir link oluşturarak yeni yapılandırmayı etkinleştirin. Nginx ön koşulunda aynı ada sahip bir sunucu blok dosyası oluşturduysanız, bu komutu çalıştırmanız gerekmez:
sudo ln -s /etc/nginx/sites-available/pegasiem.peganetbilisim.com /etc/nginx/sites-enabled/pegasiem.peganetbilisim.com
Yapılandırmayı kontrol ediyoruz.
sudo nginx -tNginx servisini yeniden başlatıyoruz.
sudo systemctl restart nginxFirewall da Nginx Full yetki veriyoruz.
sudo ufw allow 'Nginx Full'İşlemler bu kadar. Artık Kibana arayüzüne erişim sağlayabilirsiniz.
















