LinuxOpen Source

Ubuntu 22.04’e Elastic (ELK Stack) nasıl kurulur

Elastic Nedir?
Genellikle ELK, Elastic Stack veya Elastic Search /bileşenlerinden birinde/ olarak anılır, üç açık kaynaklı yazılım ürünüdür: Elasticsearch, Logstash ve Kibana. Bu kombinasyon aslında büyük miktarda veriyi toplamak, işlemek, depolamak, aramak, analiz etmek ve görselleştirmek için kullanılan çok güçlü bir araç setidir.

  1. ElasticSearch: Elasticsearch bir arama ve analiz motorudur. Verileri depolayan ve indeksleyen, aramayı, almayı ve analiz etmeyi kolaylaştıran ELK Stack’in temel bileşenidir.
  2. Logstash: Logstash bir veri işleme ve alım aracıdır. Çeşitli kaynaklardan veri toplamak ve işlemek, onu ortak bir biçime dönüştürmek ve indeksleme için Elasticsearch’e göndermekten sorumludur.
  3. Kibana: Kibana, Elasticsearch ile çalışan bir veri görselleştirme ve gösterge paneli aracıdır. Kibana’nın kullanıcı dostu arayüzü, kullanıcıların verileri görsel olarak keşfetmesini ve analiz etmesini sağlar.
  4. Beats : Beats, çeşitli kaynaklardan veri toplayan, gönderen ve işleyen hafif veri taşıyıcılarıdır. Farklı veri türlerini toplamak ve daha fazla işleme için Elasticsearch veya Logstash’e göndermek üzere tasarlanmıştır. Beats genellikle veri toplama yeteneklerini geliştirmek için kullanılır.

Bu eğitimde, tüm yığın bileşenlerini nasıl yükleyeceğinizi ve eşleştireceğinizi göstereceğiz. Oluşturulmuş bir sudo kullanıcısıyla Ubuntu 22.04 VPS kullanacağız.


ELK yığını bileşenleri Ubuntu’nun apt depolarında varsayılan olarak mevcut değildir. Elastic’in paket kaynak listesini manuel olarak eklememiz gerekecek.
Bunu şu komutu çalıştırarak yapabiliriz:

curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch |sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg
echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Paket listenizi güncelleyin ve Elastic Search’ü yükleyin.

sudo apt update
sudo apt install elasticsearch

Şimdi Elastic Search yapılandırma dosyasına bazı değişiklikler uygulamamız gerekecek. Bu YAML, . konumunda bulunan bir dosyadır /etc/elasticsearch/.
Dosyayı tercih ettiğiniz metin düzenleyicisiyle açın. Bizim durumumuzda, . kullanacağız nano.

sudo nano /etc/elasticsearch/elasticsearch.yml

💡

YAML, insan tarafından okunabilen bir veri serileştirme dilidir. Genellikle yapılandırma dosyaları için kullanılır.YAML sözdizimi girintilere büyük ölçüde güvenir, bu nedenle dosyayı değiştirirken dikkatli olmamız gerekir. Aynı girinti biçimini koruduğunuzdan emin olun.

Elastic Search, 9220 numaralı portta her yerden gelen trafiği dinler. Bunu böyle bırakmak ciddi bir güvenlik sorunu olabilir. Bunu yapılandırma dosyasında değiştirmemiz gerekecek. Dosyadaki satırı
bulun , yorumunu kaldırın ve değerini . olarak güncelleyin. Şöyle görünmelidir .network.host localhost

Elastic Search artık tüm arayüzleri ve bağlı IP’leri dinleyecek. Belirli bir IP’yi dinlemesini istiyorsanız / birden fazla atanmış IP’niz varsa /, localhost onunla değiştirebilirsiniz.

Artık Elastic Search’ü çalıştırarak başlatabilir, etkinleştirebilir ve test edebiliriz:

sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
curl -X GET "localhost:9200"

Kurulumunuz düzgünse, curl aşağıdakine benzer bir çıktı alırsınız:

{
  "name" : "alpha-vps-elastic",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "eIJ2JbTHTSKRw8vJlL6Ewg",
  "version" : {
    "number" : "7.17.12",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "e3b0c3d3c5c130e1dc6d567d6baef1c73eeb2059",
    "build_date" : "2023-07-20T05:33:33.690180787Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Kibana’yı yükleme

Kibana’yı şu komutu çalıştırarak yükleyebilirsiniz:

sudo apt install kibana

Etkinleştirin ve şununla başlatın:

sudo systemctl enable kibana
sudo systemctl start kibana

Nginx’i kurma ve Kibana’ya hizmet verme

Kibana yalnızca üzerinde dinleyecek şekilde yapılandırılmıştır localhost. Dışarıdan erişime izin vermek için ters bir proxy ayarlamalıyız. Bu amaçla, çok popüler bir web sunucusu olan Nginx’i kullanacağız.

Nginx’i sunucumuza şu komutu çalıştırarak kurabiliriz:

sudo apt install nginx

Kibana web arayüzüne erişmek için kullanacağınız bir Kibana kullanıcısı oluşturmamız gerekecek. Bunu openssl CLI aracıyla yapabiliriz. Kendi kullanıcı adınızı belirtmeniz gerekecek.

echo "username-here:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users

Güvenli şifrenizi girin ve onaylayın.

Bir Nginx sunucu bloğu oluşturun ve alan adınızı belirtin:

sudo nano /etc/nginx/sites-available/elastic.kockerim.com

Aşağıdaki içeriği sunucu blok dosyanıza ekleyin. Alan adınızı da burada belirttiğinizden emin olun.

server {
    listen 80;

    server_name elastic.kockerim.com;

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

Yeni yapılandırma dosyasını etkinleştirmek için şunu çalıştırın:

sudo ln -s /etc/nginx/sites-available/elastic.kockerim.com /etc/nginx/sites-enabled/elastic.kockerim.com

Yapılandırma dosyanızı test edin ve Nginx’i yeniden yükleyin.

sudo nginx -t
sudo systemctl reload nginx

syntax is ok Her şey yolundaysa bir çıktı alacaksınız   .💡Eğer aktif bir UFW güvenlik duvarınız varsa, Nginx’e bağlantılara izin vermeniz gerekecektir. Bunu sudo 

ufw allow 'Nginx Full‘ komutuyla yapabilirsiniz.

Artık tarayıcınızda Kibana’nın web GUI’sine gidebilirsiniz.
Git http://elastic.kockerim.com veya http://ip-address-here💡

sudo rm /etc/nginx/sites-avalable/default Varsayılan Nginx sunucu blok dosyasını ve komutunu çalıştırarak tamamen kaldırabilirsiniz 

sudo rm /etc/nginx/sites-enabled/default.

Kullanıcı adınızı ve şifrenizi girip giriş yapın.

Logstash’i Yükleme

Logstash, Elastic Stack’in veri işleme bileşenidir. Bilgileri işleyen ve Elastic Search’e gönderen bir boru hattıdır. İki gerekli bileşeni vardır – inputve outputinput bir kaynaktan veri alırken output. veriyi gönderir. A, filter giriş ve çıkış arasında “ara yazılım” görevi gören isteğe bağlı bir Logstash bileşenidir. filter Verileri işler.

Logstash’i şu komutla yükleyin:

sudo apt install logstash

Logstash’in yapılandırma dosyaları şurada bulunur : Aşağıdaki komutu çalıştırarak /etc/logstash/conf.d
yeni bir yapılandırma dosyası oluşturabiliriz :input

sudo nano /etc/logstash/conf.d/02-beats-input.conf

ve içine aşağıdaki yapılandırmayı ekleyin:

input {
  beats {
    port => 5044
  }
}

Şimdi bileşenimiz için bir yapılandırma dosyası oluşturalım output.

sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf
output {
  if [@metadata][pipeline] {
	elasticsearch {
  	hosts => ["localhost:9200"]
  	manage_template => false
  	index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  	pipeline => "%{[@metadata][pipeline]}"
	}
  } else {
	elasticsearch {
  	hosts => ["localhost:9200"]
  	manage_template => false
  	index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
	}
  }
}

Yapılandırma output, Logstash’e Beats verilerini Elastic Search’e göndermesini söyler.

Bunu yaptıktan sonra yapılandırmanızı şu komutu çalıştırarak test edebilirsiniz:

sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

Logstash’i başlatmak ve etkinleştirmek için şunları çalıştırın:

sudo systemctl start logstash
sudo systemctl enable logstash

Bir Beat Kurulumu

Beats, farklı kaynaklardan veri toplayan ve bunları doğrudan Logstash veya Elasticsearch’e taşıyan hafif veri taşıyıcılarıdır.

Beats platformunda şu anda farklı veri türleri için 6 farklı veri taşıyıcısı bulunuyor:

  • Filebeat: Günlükler ve diğer veriler için hafif nakliye aracı
  • Metricbeat: Metrik veriler için hafif nakliye aracı
  • Packetbeat: Ağ verileri için hafif nakliyeci
  • Winlogbeat: Windows olay günlükleri için hafif taşıyıcı
  • Auditbeat: Denetim verileri için hafif nakliyeci
  • Heartbeat: Çalışma süresi izleme için hafif nakliyeci

Bu eğitim için, yerel günlükleri Logstash’e gönderecek olan Filebeat’e geçeceğiz. Bunu şu şekilde çalıştırarak kurabiliriz:

sudo apt install filebeat

Filebeat’i Logstash’e bağlanacak şekilde yapılandıralım. Yapılandırma dosyasına şu şekilde erişebiliriz:

sudo nano /etc/filebeat/filebeat.yml

Bunun yine bir dosya olduğunu fark edin YAML. Biçim ve girintilere dikkat edin.

Filebeat aynı anda birden fazla çıktıyı destekler. Bizim durumumuzda, çıktımızı Logstash’e göndereceğiz, ancak varsayılan olarak, Filebeat’in yapılandırması doğrudan Elastic Search’e bir çıktı içerir. Yapılandırmayı değiştirerek bunu devre dışı bırakmamız gerekecektir.

output.elasticsearch Aşağıdaki görselde gösterildiği gibi satırı bulun ve yorumlayın.

Çıktıyı Logstash’e yapılandırmak için, output.logstash aşağıdaki satırı bulun ve satırların açıklamasını kaldırın:

Dosyayı kaydedip kapatın.

Filebeat’i yapılandırma

Filebeat, Filebeat modülleriyle genişletilebilir. Bu modüller, verileri almak, depolamak, aramak ve görselleştirmek için bir araç koleksiyonudur. Farklı günlük ve olay verisi türlerini işlemeyi kolaylaştıran önceden yapılandırılmış giriş yapılandırmaları, ayrıştırıcılar ve panolar kümeleridir. Her modül, sistem günlükleri, uygulama günlükleri, güvenlik günlükleri ve daha fazlası gibi belirli bir veri kaynağı türü için uyarlanmıştır.

Filebeat modüllerini şu komutu çalıştırarak etkinleştirebilirsiniz:

sudo filebeat modules enable system

Modülleri şu komutu çalıştırarak listeleyebilirsiniz:

sudo filebeat modules list

Benzer bir çıktı alacaksınız:

Enabled:
system

Disabled:
activemq
apache
auditd
aws
awsfargate
azure
barracuda
bluecoat
cef
checkpoint
cisco
coredns
crowdstrike
cyberark
cyberarkpas
cylance
elasticsearch
envoyproxy
f5
fortinet
gcp
google_workspace
googlecloud
gsuite
haproxy
ibmmq
icinga
iis
imperva
infoblox

Ubuntu sisteminiz tarafından oluşturulan logları toplayan ve ayrıştıran sistem modülünü kullanacağız.

Bir Filebeat modülünü etkinleştirdiğinizde, belirli bir günlük veya olay verisi türü için gerekli girdileri, filtreleri ve çıktıları otomatik olarak yapılandırır. Ayrıca Kibana’da önceden oluşturulmuş panoları da içerebilir.

Şimdi sistem modülü için alım hattını yüklememiz gerekecek. Bunu şunu girerek yapabiliriz:

sudo filebeat setup --pipelines --modules system

Bunu yaptıktan sonra, sözde dizin şablonunu Elastic Search’e yüklememiz gerekecek.💡Bir dizin, benzer veri yapılarını ve niteliklerini paylaşan belgelerin bir koleksiyonudur. Bir dizindeki her belge bir bilgi parçasını temsil eder ve bu belgeler hızlı arama ve analizi kolaylaştırmak için saklanır ve dizinlenir.

Yeni bir dizin oluşturulduğunda dizin şablonları otomatik olarak uygulanır.
Şablonu şu şekilde çalıştırarak yükleyebiliriz:

sudo filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'

Önceden oluşturulmuş Kibana panolarını yüklemek ve Filebeat verilerini görselleştirmek için şunları çalıştırmamız gerekecek:

sudo filebeat setup -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

Bu yapılandırma adımları tamamlandıktan sonra Filebeat’i aşağıdaki komutlarla başlatabilir ve etkinleştirebiliriz:

sudo systemctl start filebeat
sudo systemctl enable filebeat

APM Server’ı yükleyin:

sudo apt install apm-server

APM Server’ı başlatın:

sudo systemctl start apm-server
sudo systemctl enable apm-server

APM Server’ı Yapılandırma

APM Server’ı Elasticsearch ile iletişim kuracak şekilde yapılandırmanız gerekir.

APM Server Konfigürasyon Dosyasını Düzenleme:

Yapılandırma dosyasını açın:

sudo nano /etc/apm-server/apm-server.yml

Elasticsearch bağlantısını ayarlayın: output.elasticsearch bölümünü bulun ve Elasticsearch’ün URL’sini ve kimlik doğrulama bilgilerini ekleyin:

output.elasticsearch:
  hosts: ["http://localhost:9200"]
  username: "elastic"  # Elasticsearch kullanıcı adı
  password: "your_password"  # Elasticsearch şifresi

Kibana entegrasyonu (isteğe bağlı): Kibana ile entegrasyonu sağlamak için şu ayarları yapın:

setup.kibana:
  host: "http://localhost:5601"

Değişiklikleri kaydedin ve çıkın: Ctrl+O ve ardından Ctrl+X ile değişiklikleri kaydedip dosyadan çıkın.

APM Server’ı yeniden başlatın:

sudo systemctl restart apm-server

Artık tüm ELK stack bileşenlerimiz başarıyla kuruldu ve yapılandırıldı.

Muhammed Kerim Koç

1996 yılında Giresun Şebinkarahisarda dünyaya geldim. İlk ve orta öğretimi Şebinkarahisarda tamamladım. Liseyi Şebinkarahisar Anadolu Teknik ve Endüstri Meslek Lisesinde bitirdim. Üniversite için de Şebinkarahisar Teknik Bilimler Meslek Yüksek Okulunda Bilgisayar programcılığını okudum. Üniversite stajı için gelmiş olduğum özel bir firmada işe başladım. 5,5 yıl bu firmadan çalıştıktan sonra farklı bir sektör olan inşaat sektöründe Bilgi teknolojileri Uzmanı olarak 8 ay çalıştım. Daha sonra özel bir şirkette Sistem Network Sorumlusu olarak 4 ay çalıştıktan sonra proje sonlandırılmasından dolayı işten ayrıldım. Tekrar dan 5.5 yıl çalışmış olduğum firmaya Sistem ve Network Yöneticisi olarak geri döndüm ve çalışmaya başladım. Kendimi geliştirmek için Bilge Adam Akademi den Sistem Uzmanlığı eğitimi aldım. Sanallaştırma ve Ağ tarafında kendimi sürekli olarak geliştiriyorum.

İlgili Makaleler

Başa dön tuşu