top of page

Elasticsearch: Nedir, Nasıl Çalışır ve Ne İçin Kullanılır?

ree

Elasticsearch, büyük veri setlerini hızlı ve verimli bir şekilde aramak ve analiz etmek için kullanılan, dağıtık ve açık kaynaklı bir arama ve analiz motorudur. Apache Lucene üzerine inşa edilmiş olup, JSON formatında veri işleyerek arama yapar. Elasticsearch, esnek veri yapılarına ve güçlü arama yeteneklerine sahip olmasıyla bilinir.


Elasticsearch’in Temel Kavramları


  • Belgeler (Documents): JSON formatında veri birimleridir. Her belge, belirli bir varlığı temsil eder ve benzersiz bir kimliğe sahiptir.

  • Dizinler (Indices): Benzer belgeleri gruplandıran veri yapılarıdır. İndeksler, ilişkisel veritabanlarındaki tablolara benzer.

  • Ters İndeks (Inverted Index): Arama motorlarının temel mekanizmasıdır. Kelimeleri belgelerdeki konumlarına eşler, böylece hızlı arama sağlar.

  • Küme (Cluster): Birden fazla düğümden oluşur ve görevleri dağıtarak arama ve indeksleme işlemlerini gerçekleştirir.

  • Düğüm (Node): Kümenin bir parçası olan tek bir sunucudur. Veriyi depolar ve arama yeteneklerine katılır.

  • Parçalar (Shards): Dizinlerin alt bölümleridir ve dağıtım ile ölçeklenebilirliği sağlar.

  • Replikalar (Replicas): Birincil parçaların kopyalarıdır ve veri güvenliği ile sorgu kapasitesini artırır.


Elastic Stack (ELK)


Elasticsearch, Elastic Stack’in (ELK Stack) merkezi bileşenidir. Elastic Stack, veri toplama, zenginleştirme, depolama, analiz ve görselleştirme için kullanılır:

  • Kibana: Elasticsearch verilerini görselleştirmek ve analiz etmek için kullanılır.

  • Logstash: Verileri toplar, işler ve Elasticsearch’e gönderir.

  • Beats: Hafif veri toplayıcılarıdır ve verileri Logstash veya Elasticsearch’e gönderir.


Elasticsearch’in Kullanım Alanları


  • Uygulama Araması: Veri erişimi ve geri alma için arama platformlarına dayanan uygulamalar.

  • Web Sitesi Araması: İçeriği depolayan web siteleri için etkili arama sağlar.

  • Kurumsal Arama: Şirket içi belgeler, ürünler ve blog aramaları gibi geniş çaplı aramalar.

  • Log ve Log Analitiği: Gerçek zamanlı log verisi toplama ve analiz.

  • İnfra Yapı Metriği ve Konteyner İzleme: Performans parametrelerini analiz etme.

  • Güvenlik Analitiği: Erişim logları ve sistem güvenliği loglarının analizi.

  • İş Analitiği: İş analitiği aracı olarak kullanım.


Örnek Kullanım Alanları


  • Netflix: Müşteri hizmetleri operasyonlarını ve güvenlik loglarını izlemek ve analiz etmek için ELK Stack’i kullanır.

  • eBay: İçerik arama ve analiz için Elasticsearch kullanır.

  • Walmart: Müşteri satın alma desenlerini ve mağaza performans metriklerini analiz etmek için Elastic Stack’i kullanır.


Elasticsearch ile Log Yönetimi ve Analizi


Elasticsearch, log verilerinin toplanması, depolanması, analizi ve görselleştirilmesi için ideal bir platformdur. Log yönetimi ve analitiği, büyük veri hacimlerine sahip sistemlerde kritik bir öneme sahiptir. Elasticsearch ve Elastic Stack (ELK Stack), log verilerini yönetmek ve analiz etmek için yaygın olarak kullanılır.


Log Verilerinin Toplanması


  • Beats: Hafif veri toplayıcılarıdır ve log verilerini doğrudan Elasticsearch’e veya Logstash’e gönderir. Örneğin, Filebeat log dosyalarını izler ve verileri toplar.

  • Logstash: Log verilerini toplar, işler ve Elasticsearch’e gönderir. Farklı veri kaynaklarından gelen verileri birleştirir ve yapılandırır.

Log Verilerinin Depolanması

Elasticsearch, log verilerini JSON belgeleri olarak depolar. Her log girdisi, bir belge olarak indekslenir ve belirli bir dizin içinde saklanır.

  • Dizinler (Indices): Benzer log belgelerini gruplar ve sorgulama işlemleri için optimize eder.

  • Ters İndeks (Inverted Index): Kelimeleri belgelerdeki konumlarına eşleyerek hızlı arama sağlar.


Log Verilerinin Analizi


Elasticsearch, log verilerini analiz etmek için güçlü arama ve analiz özelliklerine sahiptir.

  • Arama (Search): Log verilerini belirli bir zaman aralığında, belirli bir anahtar kelimeye göre veya belirli bir koşula göre arayabilir.

  • Filtreleme (Filtering): Belirli kriterlere göre log verilerini filtreleyerek analiz edebilir.

  • Agregasyon (Aggregation): Log verilerini özetlemek ve analiz etmek için agregasyonlar kullanılır.


Log Verilerinin Görselleştirilmesi


Elasticsearch ile log verilerini görselleştirmek için Kibana kullanılır. Kibana, Elasticsearch verilerini gerçek zamanlı olarak görselleştirmek için güçlü bir araçtır.

  • Gerçek Zamanlı Görselleştirme: Log verilerini gerçek zamanlı olarak izleyebilir ve analiz edebilir.

  • Özelleştirilebilir Panolar (Dashboards): Kibana, kullanıcıların log verilerini özelleştirilebilir panolar üzerinde görselleştirmesine olanak tanır.

  • Log Analizi: Kibana, log verilerini analiz etmek için güçlü filtreleme ve sorgulama yeteneklerine sahiptir.


Lua Programlama Dili ve Loglama


Giriş


Lua, yüksek performanslı, hafif ve esnek bir programlama dilidir. 1993 yılında Brezilya’daki Pontifical Catholic University of Rio de Janeiro’da geliştirilen Lua, özellikle oyun geliştirme, gömülü sistemler ve genişletilebilir uygulamalar için tercih edilir. Adı Portekizce’de “ay” anlamına gelir.

Lua’nın Temel Özellikleri

  • Hafif ve Verimli: Küçük boyutlu ve düşük bellek tüketimli bir dildir.

  • Kolay Öğrenilebilir: Basit ve anlaşılır bir sözdizimine sahiptir.

  • Gömülebilirlik: C ve C++ gibi diğer dillerle kolayca entegre edilebilir.

  • Yüksek Performans: JIT (Just-In-Time) derleyicisi olan LuaJIT ile birlikte kullanıldığında yüksek performans sunar.

  • Dinamik Türlendirme: Esneklik ve kolaylık sağlar.


Lua’nın Kullanım Alanları


  • Oyun Geliştirme: Popüler oyun motorları Lua kullanır.

  • Gömülü Sistemler: Hafif ve verimli yapısı nedeniyle tercih edilir.

  • Web Geliştirme: Nginx gibi web sunucuları Lua ile genişletilebilir.

  • Konfigürasyon Dosyaları: Yapılandırma dosyaları oluşturmak için kullanılır.

  • Bilimsel Hesaplamalar ve Veri Analitiği: Yüksek performans gerektiren uygulamalarda kullanılır.


Lua ile Loglama


Loglama, uygulamalarda hata ayıklama, performans izleme ve genel olay takibi için önemli bir işlemdir. Lua dilinde loglama işlemleri çeşitli yöntemler ve kütüphaneler kullanılarak gerçekleştirilebilir.


Basit Loglama


Lua, temel dosya işlemleri ve print fonksiyonu ile basit loglama işlemlerini gerçekleştirebilir.

function log(message)    
local file = io.open("log.txt", "a")    
file:write(os.date("%Y-%m-%d %H:%M:%S") .. " - " .. message .. 
"\n")
end
log("Uygulama başlatıldı")
log("Bir hata oluştu")

Gelişmiş Loglama Kütüphaneleri


  • LuaLogging: Kapsamlı bir loglama kütüphanesidir. Log seviyeleri, dosya ve konsol çıktısı gibi özellikler sunar.

local logging = require("logging")
local logger = logging.new(function(self, level, message)
    print(level, message)    
	return trueend)
logger:info("Bilgi mesajı")
logger:error("Hata mesajı")

Log4Lua: Daha gelişmiş loglama özellikleri sunar.

local log4lua = require("log4lua")
local logger = log4lua.getLogger("example")

logger:debug("Debug mesajı")
logger:info("Bilgi mesajı")
logger:warn("Uyarı mesajı")
logger:error("Hata mesajı")
logger:fatal("Kritik hata mesajı")

Log Seviyeleri

  • DEBUG: Geliştiriciye yönelik detaylı bilgi.

  • INFO: Genel bilgi mesajları.

  • WARN: Uyarı mesajları.

  • ERROR: Hata mesajları.

  • FATAL: Kritik hata mesajları.


Log Formatlama ve Rotasyonu


Gelişmiş loglama kütüphaneleri, log mesajlarını belirli bir formatta yazma ve log dosyalarını belirli bir boyuta ulaştığında döndürme (rotasyon) özellikleri sunar.

local logging = require("logging")
local logging.file = require("logging.file")

local logger = logging.file("application.log", "%Y-%m-%d")
logger:setLevel(logging.DEBUG)

logger:info("Bilgi mesajı")
logger:error("Hata mesajı")

Lua’da Doğal Logaritma Hesaplama


Lua’nın matematik kütüphanesindeki math.log() fonksiyonu, verilen bir sayının doğal logaritmik değerini hesaplar. Doğal logaritma, tabanı e olan logaritmadır; burada e, yaklaşık olarak 2.71828 değerinde olan Euler sayısıdır.

local num = 20
local result = math.log(num)
local output = string.format("The natural Logarithm of %.0f: %.4f", num, result)
print(output)

Bu örneğin çıktısı şu şekildedir:

The natural Logarithm of 20: 2.9957

 
 
bottom of page