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

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

Elasticsearch’ü 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 elasticsearch

Elasticsearch servisini başlatın.

sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch

Birkaç 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 logstash

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

Dosya iznini dünya okunabilir olarak değiştirin.

sudo chmod 644 /etc/ssl/logstash-forwarder.key.pem

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

Giriş 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 logstash
sudo cat /var/log/logstash/logstash-plain.log

Kibana’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 kibana

Erişimi enale etmek için /etc/kibana/kibana.yml dosyasını düzenleyin.

sudo nano /etc/kibana/kibana.yml

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

Beats 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/hosts

Aşağıdaki değerleri kendi ip adres ve hostname adreslerinize göre düzenleyin.

68.183.222.152 pegasiem.peganetbilisim.com

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

Adı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 ufw

Ardından durumu kontol edin.

sudo ufw status verbose

Firewall dan Nginx’ e izin veriyoruz.

sudo ufw allow 'Nginx HTTP'

Tekrar durumu kontrol ediyoruz.

sudo ufw status

Ardı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.users

NOT : 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.com

NOT : 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 -t

Nginx servisini yeniden başlatıyoruz.

sudo systemctl restart nginx

Firewall da Nginx Full yetki veriyoruz.

sudo ufw allow 'Nginx Full'

İşlemler bu kadar. Artık Kibana arayüzüne erişim sağlayabilirsiniz.

CEVAP VER

Please enter your comment!
Please enter your name here