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.
- 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.
- 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.
- 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.
- 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.
Elastic Search’ü Yükleme
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 – input
ve output
. input
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ı.