ELK Stack Mülakat Soruları

70 adet ileri seviye Elasticsearch, Logstash ve Kibana mülakat sorusu ve cevabı

Elasticsearch

30 adet ileri seviye Elasticsearch mülakat sorusu ve cevabı

Logstash

20 adet ileri seviye Logstash mülakat sorusu ve cevabı

Kibana

20 adet ileri seviye Kibana mülakat sorusu ve cevabı

Elasticsearch Mülakat Soruları

Bu dokümanda Elasticsearch mülakatlarında en çok sorulan konular soru-cevap mantığıyla açıklanmış ve örnek kodlar eklenmiştir.

🔹 Temel Elasticsearch Kavramları

❓ Soru 1: Elasticsearch nedir? Ne işe yarar?

Cevap: Elasticsearch, Apache Lucene tabanlı, dağıtık bir arama ve analiz motorudur.

  • Tam metin arama, yapılandırılmış arama ve analiz yetenekleri sunar.
  • Gerçek zamanlı veri işleme ve hızlı arama performansı sağlar.
  • RESTful arayüzü ile kolay kullanım imkanı sunar.
  • Yatay olarak ölçeklenebilir mimariye sahiptir.

Elasticsearch Başlatma Komutu:

./bin/elasticsearch

❓ Soru 2: Elasticsearch'te Index, Type, Document kavramları nelerdir?

Cevap:

  • Index: Benzer özelliklere sahip document'lerin koleksiyonudur. İlişkisel veritabanlarındaki tabloya benzer.
  • Type (Eski Versiyonlar): Index içindeki document'leri kategorize etmek için kullanılır. Elasticsearch 7.0'dan sonra kaldırılmıştır.
  • Document: Index'te depolanan temel veri birimidir. JSON formatında olur ve ilişkisel veritabanlarındaki satıra benzer.

Index Oluşturma Komutu:

PUT /my-index
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1
  }
}

❓ Soru 3: Elasticsearch'te Shard ve Replica nedir? Arasındaki farklar nelerdir?

Cevap:

  • Shard: Bir index'in parçalarıdır. Her shard, index verisinin bir alt kümesini içerir ve Elasticsearch kümesindeki farklı node'larda dağıtılabilir.
  • Replica: Bir shard'ın kopyasıdır. Veri kaybını önlemek ve okuma performansını artırmak için kullanılır.

Farklar:

  • Shard'lar veriyi böler, replikalar veriyi kopyalar.
  • Shard'lar yazma ve okuma işlemlerini paralel hale getirir, replikalar sadece okuma işlemlerini paralel hale getirir.
  • Her index için shard sayısı oluşturulduğunda belirlenir ve sonradan değiştirilemez, replika sayısı ise dinamik olarak değiştirilebilir.

Shard ve Replica Ayarları:

PUT /my-index/_settings
{
  "index" : {
    "number_of_replicas" : 2
  }
}

❓ Soru 4: Elasticsearch'te Mapping nedir? Ne işe yarar?

Cevap: Mapping, bir index içindeki alanların (fields) ve veri tiplerinin tanımlanmasıdır.

  • Alanların veri tiplerini (string, integer, date, vb.) belirler.
  • Arama ve analiz davranışını kontrol eder.
  • Dinamik mapping (otomatik) veya statik mapping (manuel) olarak oluşturulabilir.

Mapping Oluşturma Komutu:

PUT /my-index
{
  "mappings": {
    "properties": {
      "title": { "type": "text" },
      "price": { "type": "float" },
      "created_at": { "type": "date" }
    }
  }
}

❓ Soru 5: Elasticsearch'te Analyzer nedir? Türleri nelerdir?

Cevap: Analyzer, metin alanlarını işlemek için kullanılan bir bileşenler dizisidir.

  • Character Filter: Metindeki karakterleri değiştirir (HTML etiketlerini kaldırma gibi).
  • Tokenizer: Metni kelimelere böler (boşluk, noktalama işaretleri gibi).
  • Token Filter: Token'ları işler (küçük harfe çevirme, stemleme, stop words kaldırma gibi).

Örnek Analyzer'lar:

  • Standard Analyzer: Varsayılan analyzer, boşluk ve noktalama işaretlerine göre böler.
  • Simple Analyzer: Sadece alfabetik olmayan karakterlere göre böler ve küçük harfe çevirir.
  • Whitespace Analyzer: Sadece boşluklara göre böler.
  • Keyword Analyzer: Metni hiçbir işlem yapmadan olduğu gibi bırakır.

Özel Analyzer Oluşturma:

PUT /my-index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "my_stemmer"
          ]
        }
      },
      "filter": {
        "my_stemmer": {
          "type": "stemmer",
          "name": "english"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text",
        "analyzer": "my_analyzer"
      }
    }
  }
}

❓ Soru 6: Elasticsearch'te Query ve Filter arasındaki fark nedir?

Cevap:

  • Query Context: Dokümanların sorguya ne kadar uygun olduğunu skorlamak için kullanılır. _score alanını hesaplar.
  • Filter Context: Dokümanların sorguya uygun olup olmadığını kontrol etmek için kullanılır. Skor hesaplamaz ve sonuçları önbelleğe alır.

Farklar:

  • Query skoru hesaplar, filter hesaplamaz.
  • Filter sonuçları önbelleğe alır, query almaz.
  • Filter daha hızlı çalışır.

Query Örneği:

GET /my-index/_search
{
  "query": {
    "match": {
      "title": "elasticsearch"
    }
  }
}

Filter Örneği:

GET /my-index/_search
{
  "query": {
    "bool": {
      "filter": {
        "term": {
          "status": "published"
        }
      }
    }
  }
}

❓ Soru 7: Elasticsearch'te Term ve Match sorguları arasındaki fark nedir?

Cevap:

  • Term Query: Tam eşleşme araması yapar. Analiz edilmez, tam olarak aranan terimi arar.
  • Match Query: Tam metin araması yapar. Analiz edilir ve eşleşen terimleri arar.

Farklar:

  • Term query analiz edilmez, match query analiz edilir.
  • Term query tam eşleşme arar, match query kısmi eşleşme arar.
  • Term query keyword alanlar için daha uygundur, match query text alanlar için.

Term Query Örneği:

GET /my-index/_search
{
  "query": {
    "term": {
      "status.keyword": "published"
    }
  }
}

Match Query Örneği:

GET /my-index/_search
{
  "query": {
    "match": {
      "title": "elasticsearch tutorial"
    }
  }
}

❓ Soru 8: Elasticsearch'te Bool Query nedir? Kullanım alanları nelerdir?

Cevap: Bool Query, birden fazla sorguyu birleştirmek için kullanılan bir bileşik sorgudur.

  • must: Tüm sorguların eşleşmesi gerekir (AND operatörü).
  • should: Sorgulardan en az birinin eşleşmesi gerekir (OR operatörü).
  • must_not: Sorguların hiçbirinin eşleşmemesi gerekir (NOT operatörü).
  • filter: Filtreleme için kullanılır, skor hesaplamaz.

Bool Query Örneği:

GET /my-index/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "elasticsearch" } },
        { "match": { "content": "tutorial" } }
      ],
      "should": [
        { "match": { "tags": "search" } },
        { "match": { "tags": "database" } }
      ],
      "must_not": [
        { "match": { "status": "draft" } }
      ],
      "filter": [
        { "term": { "category": "technology" } }
      ]
    }
  }
}

❓ Soru 9: Elasticsearch'te Aggregation nedir? Türleri nelerdir?

Cevap: Aggregation, veri üzerinde istatistiksel analizler ve gruplamalar yapmak için kullanılan bir özelliktir.

  • Metric Aggregations: Sayısal değerler üzerinde hesaplamalar yapar (sum, avg, min, max, stats, cardinality vb.).
  • Bucket Aggregations: Veriyi gruplara böler (terms, range, date_range, histogram vb.).
  • Pipeline Aggregations: Diğer aggregation'ların sonuçları üzerinde işlem yapır (derivative, moving_avg, bucket_script vb.).

Metric Aggregation Örneği:

GET /my-index/_search
{
  "size": 0,
  "aggs": {
    "avg_price": {
      "avg": { "field": "price" }
    },
    "stats_price": {
      "stats": { "field": "price" }
    }
  }
}

Bucket Aggregation Örneği:

GET /my-index/_search
{
  "size": 0,
  "aggs": {
    "category_terms": {
      "terms": { "field": "category.keyword" },
      "aggs": {
        "avg_price": {
          "avg": { "field": "price" }
        }
      }
    }
  }
}

❓ Soru 10: Elasticsearch'te Inverted Index nedir? Nasıl çalışır?

Cevap: Inverted Index, Elasticsearch'in temel arama mekanizmasıdır.

  • Her terim için, o terimi içeren tüm document'lerin listesini içerir.
  • Arama yaparken, aranan terim inverted index'te bulunur ve ilgili document'lar döndürülür.
  • Hızlı arama performansı sağlar.

Çalışma Prensibi:

  1. Document'ler index'e eklendiğinde, her alan analyzer ile analiz edilir.
  2. Analiz sonucunda elde edilen terimler inverted index'e eklenir.
  3. Her terim için, o terimi içeren document ID'leri ve pozisyon bilgileri saklanır.
  4. Arama yapıldığında, aranan terim inverted index'te bulunur ve ilgili document'lar döndürülür.

Inverted Index Yapısı:

Terim: "elasticsearch"
Document'ler: [1, 3, 5, 8]

Terim: "tutorial"
Document'ler: [2, 3, 7]

Terim: "search"
Document'ler: [1, 4, 6, 8]

🔹 Elasticsearch İleri Düzey Konular

❓ Soru 11: Elasticsearch'te Cluster, Node, Shard kavramları arasındaki ilişki nedir?

Cevap:

  • Cluster: Bir veya daha fazla node'un bir araya gelmesiyle oluşan yapıdır. Veri ve yük dağıtımını sağlar.
  • Node: Cluster içindeki tek bir sunucudur. Veri depolar ve indeksleme ve arama işlemlerini gerçekleştirir.
  • Shard: Bir index'in parçalarıdır. Cluster içindeki node'lara dağıtılır.

İlişki:

  • Bir cluster birden fazla node içerir.
  • Her node birden fazla shard barındırabilir.
  • Her shard, bir index'in verisinin bir kısmını içerir.
  • Shard'lar cluster içindeki node'lara dağıtılır ve bu da yük dengelemesini sağlar.

Cluster Bilgilerini Görme:

GET /_cluster/health
GET /_cluster/stats
GET /_nodes/stats

❓ Soru 12: Elasticsearch'te Reindexing nedir? Ne zaman yapılır?

Cevap: Reindexing, bir index'teki verileri yeni bir index'e kopyalama işlemidir.

  • Mapping değişiklikleri yaparken (alan tipi değiştirme, yeni alan ekleme vb.).
  • Analyzer değişiklikleri yaparken.
  • Index ayarlarını değiştirirken (shard sayısı, replica sayısı vb.).
  • Veri yapısını yeniden düzenlerken.

Reindexing Komutu:

POST /_reindex
{
  "source": {
    "index": "old-index"
  },
  "dest": {
    "index": "new-index"
  }
}

Sorgu ile Reindexing:

POST /_reindex
{
  "source": {
    "index": "old-index",
    "query": {
      "term": {
        "status": "published"
      }
    }
  },
  "dest": {
    "index": "new-index"
  }
}

❓ Soru 13: Elasticsearch'te Scroll API nedir? Ne işe yarar?

Cevap: Scroll API, büyük sonuç setlerini sayfalara bölmek için kullanılır.

  • Geleneksel sayfalama (from/size) yerine kullanılır.
  • Büyük veri setleri için daha performanslıdır.
  • Sunucu tarafında arama bağlamını korur.

Scroll API Kullanımı:

POST /my-index/_search?scroll=1m
{
  "size": 1000,
  "query": {
    "match_all": {}
  }
}

Sonraki Sayfaları Getirme:

POST /_search/scroll
{
  "scroll": "1m",
  "scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAIWYnJ0LV9hZmZsU0hXN2d5U1R0d0FwQQ=="
}

Scroll'u Temizleme:

DELETE /_search/scroll
{
  "scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAAIWYnJ0LV9hZmZsU0hXN2d5U1R0d0FwQQ=="
}

❓ Soru 14: Elasticsearch'te Update by Query nedir? Ne işe yarar?

Cevap: Update by Query, bir sorguya uyan tüm document'ları güncellemek için kullanılır.

  • Birden fazla document'ı aynı anda güncellemek için kullanılır.
  • Sadece belirli alanları güncellemek için kullanılır.
  • Script ile karmaşık güncelleme işlemleri yapılabilir.

Update by Query Kullanımı:

POST /my-index/_update_by_query
{
  "script": {
    "source": "ctx._source.status = 'published'",
    "lang": "painless"
  },
  "query": {
    "term": {
      "status": "draft"
    }
  }
}

Değer Artırma:

POST /my-index/_update_by_query
{
  "script": {
    "source": "ctx._source.price += params.amount",
    "lang": "painless",
    "params": {
      "amount": 10
    }
  },
  "query": {
    "range": {
      "price": {
        "lt": 100
      }
    }
  }
}

❓ Soru 15: Elasticsearch'te Delete by Query nedir? Ne işe yarar?

Cevap: Delete by Query, bir sorguya uyan tüm document'ları silmek için kullanılır.

  • Birden fazla document'ı aynı anda silmek için kullanılır.
  • Karmaşık silme işlemleri için kullanılır.

Delete by Query Kullanımı:

POST /my-index/_delete_by_query
{
  "query": {
    "term": {
      "status": "draft"
    }
  }
}

Tarih Aralığına Göre Silme:

POST /my-index/_delete_by_query
{
  "query": {
    "range": {
      "created_at": {
        "lt": "2020-01-01"
      }
    }
  }
}

❓ Soru 16: Elasticsearch'te Nested ve Parent-Child ilişkileri arasındaki fark nedir?

Cevap:

  • Nested Data Type: Bir document içindeki nesneleri ayrı document'lar olarak depolar.
  • Parent-Child Relationship: Farklı document'lar arasındaki ilişkiyi tanımlar.

Farklar:

  • Nested, aynı document içindeki nesneler arasındaki ilişkidir.
  • Parent-Child, farklı document'lar arasındaki ilişkidir.
  • Nested, veriyi birlikte güncellemeyi gerektirir.
  • Parent-Child, veriyi ayrı ayrı güncellemeye izin verir.

Nested Mapping Örneği:

PUT /my-index
{
  "mappings": {
    "properties": {
      "name": { "type": "text" },
      "comments": {
        "type": "nested",
        "properties": {
          "author": { "type": "text" },
          "content": { "type": "text" }
        }
      }
    }
  }
}

Parent-Child Mapping Örneği:

PUT /my-index
{
  "mappings": {
    "properties": {
      "join": {
        "type": "join",
        "relations": {
          "question": "answer"
        }
      }
    }
  }
}

❓ Soru 17: Elasticsearch'te Suggester nedir? Türleri nelerdir?

Cevap: Suggester, kullanıcıya otomatik tamamlama veya öneri sunmak için kullanılan bir özelliktir.

  • Term Suggester: Yazım hatalarını düzeltmek için öneriler sunar.
  • Phrase Suggester: Cümlelerdeki hataları düzeltmek için öneriler sunar.
  • Completion Suggester: Otomatik tamamlama için öneriler sunar.
  • Context Suggester: Bağlama göre öneriler sunar.

Completion Suggester Örneği:

PUT /my-index
{
  "mappings": {
    "properties": {
      "title_suggest": {
        "type": "completion"
      }
    }
  }
}

Suggester Kullanımı:

POST /my-index/_search
{
  "suggest": {
    "my-suggestion": {
      "text": "el",
      "completion": {
        "field": "title_suggest"
      }
    }
  }
}

❓ Soru 18: Elasticsearch'te Percolate Query nedir? Ne işe yarar?

Cevap: Percolate Query, sorguları index'leyen ve document'ları bu sorgularla eşleştiren ters bir arama mekanizmasıdır.

  • Document'ları sorgularla eşleştirir.
  • Gerçek zamanlı uyarı ve bildirim sistemleri için kullanılır.
  • İçerik filtreleme ve kategorizasyon için kullanılır.

Percolate Query Örneği:

PUT /queries
{
  "mappings": {
    "properties": {
      "query": {
        "type": "percolator"
      },
      "category": {
        "type": "keyword"
      }
    }
  }
}

Sorgu Ekleme:

PUT /queries/_doc/1
{
  "query": {
    "match": {
      "message": "elasticsearch"
    }
  },
  "category": "technology"
}

Percolate Arama:

GET /queries/_search
{
  "query": {
    "percolate": {
      "field": "query",
      "document": {
        "message": "elasticsearch tutorial"
      }
    }
  }
}

❓ Soru 19: Elasticsearch'te Snapshot ve Restore nedir? Ne işe yarar?

Cevap: Snapshot, bir veya daha fazla index'in anlık görüntüsünü almak için kullanılır. Restore ise bu anlık görüntüden geri yükleme işlemidir.

  • Veri yedekleme ve kurtarma için kullanılır.
  • Index'leri farklı cluster'lara taşımak için kullanılır.
  • Test ve geliştirme ortamları için veri kopyalamak için kullanılır.

Snapshot Repository Oluşturma:

PUT /_snapshot/my_backup
{
  "type": "fs",
  "settings": {
    "location": "/mnt/backups"
  }
}

Snapshot Alma:

PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true
{
  "indices": "index_1,index_2"
}

Restore Etme:

POST /_snapshot/my_backup/snapshot_1/_restore
{
  "indices": "index_1,index_2",
  "ignore_unavailable": true,
  "include_global_state": false
}

❓ Soru 20: Elasticsearch'te Template nedir? Ne işe yarar?

Cevap: Template, yeni index'ler için varsayılan ayarları ve mapping'leri tanımlamak için kullanılır.

  • Index oluşturulduğunda otomatik olarak uygulanır.
  • İsim deseni (pattern) ile eşleşen index'ler için geçerlidir.
  • Standartlaşmış yapılar oluşturmak için kullanılır.

Template Oluşturma:

PUT /_index_template/my_template
{
  "index_patterns": ["te*"],
  "template": {
    "settings": {
      "number_of_shards": 1,
      "number_of_replicas": 1
    },
    "mappings": {
      "properties": {
        "title": { "type": "text" },
        "timestamp": { "type": "date" }
      }
    }
  }
}

🔹 Elasticsearch Performans ve Optimizasyon

❓ Soru 21: Elasticsearch performansını optimize etmek için nelere dikkat etmek gerekir?

Cevap: Elasticsearch performansını optimize etmek için:

  • Doğru Shard Sayısı: Her shard için 10-50 GB veri olmalıdır.
  • Hardware Optimizasyonu: Yeterli RAM, SSD disk ve hızlı CPU.
  • Index Ayarları: Refresh interval, translog ayarları.
  • Mapping Optimizasyonu: Doğru alan tipleri, analyzer seçimi.
  • Sorgu Optimizasyonu: Filter kullanımı, caching.
  • Cluster Yapılandırması: Node rolleri, replica ayarları.

Performans Ayarları:

PUT /my-index/_settings
{
  "index": {
    "refresh_interval": "30s",
    "number_of_replicas": 1
  }
}

❓ Soru 22: Elasticsearch'te Hot-Warm mimarisi nedir? Avantajları nelerdir?

Cevap: Hot-Warm mimarisi, verinin yaşına göre farklı özelliklere sahip node'larda depolanmasıdır.

  • Hot Node'lar: Yeni ve sık erişilen veriler için. Yüksek performanslı SSD diskler ve daha fazla RAM.
  • Warm Node'lar: Daha az erişilen eski veriler için. Daha düşük maliyetli HDD diskler.

Avantajları:

  • Maliyet optimizasyonu.
  • Performans optimizasyonu.
  • Veri yaşam döngüsü yönetimi.

Hot-Warm Yapılandırması:

# elasticsearch.yml
node.attr.box_type: hot # veya warm

# Index lifecycle policy
PUT /_ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "50GB",
            "max_age": "30d"
          }
        }
      },
      "warm": {
        "min_age": "7d",
        "actions": {
          "shrink": {
            "number_of_shards": 1
          }
        }
      }
    }
  }
}

❓ Soru 23: Elasticsearch'te Index Lifecycle Management (ILM) nedir? Nasıl çalışır?

Cevap: ILM, index'lerin yaşam döngüsünü otomatik olarak yönetmek için kullanılan bir özelliktir.

  • Hot Phase: Index aktif olarak kullanılır, sık okuma/yazma işlemleri.
  • Warm Phase: Index daha az erişilir, read-only olabilir.
  • Cold Phase: Index çok nadir erişilir, daha ucuz depolama.
  • Delete Phase: Index silinir.

ILM Policy Oluşturma:

PUT /_ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_size": "50GB",
            "max_age": "30d"
          }
        }
      },
      "warm": {
        "min_age": "7d",
        "actions": {
          "shrink": {
            "number_of_shards": 1
          },
          "forcemerge": {
            "max_num_segments": 1
          }
        }
      },
      "cold": {
        "min_age": "30d",
        "actions": {
          "freeze": {}
        }
      },
      "delete": {
        "min_age": "90d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

❓ Soru 24: Elasticsearch'te Field Data ve Doc Values arasındaki fark nedir?

Cevap:

  • Field Data: Aggregation, sorting ve scripting işlemleri için kullanılan veri yapısı.
  • Doc Values: Disk tabanlı veri yapısı, field data'nın modern versiyonu.

Farklar:

  • Field data bellekte tutulur, doc values diskte.
  • Doc values daha az bellek kullanır.
  • Doc values daha hızlı yükleme süreleri sağlar.

Doc Values Ayarlama:

PUT /my-index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "doc_values": true
      }
    }
  }
}

❓ Soru 25: Elasticsearch'te Cache mekanizmaları nelerdir? Nasıl optimize edilir?

Cevap: Elasticsearch'te çeşitli cache mekanizmaları vardır:

  • Query Cache: Sorgu sonuçlarını önbelleğe alır.
  • Request Cache: Shard seviyesinde sorgu sonuçlarını önbelleğe alır.
  • Field Data Cache: Alan verilerini önbelleğe alır.
  • Index Cache: Index dosyalarını önbelleğe alır.

Optimizasyon:

  • Doğru cache boyutlarını ayarlamak.
  • Filter sorguları kullanmak.
  • Doc values kullanmak.

Cache Ayarları:

# elasticsearch.yml
indices.queries.cache.size: 10%
indices.requests.cache.size: 1%
indices.fielddata.cache.size: 20%

❓ Soru 26: Elasticsearch'te Refresh ve Flush işlemleri arasındaki fark nedir?

Cevap:

  • Refresh: Bellekteki document'leri searchable hale getirir. Index'e yazılmaz.
  • Flush: Bellekteki segment'leri diske yazar ve translog'u temizler.

Farklar:

  • Refresh sıklıdır (varsayılan 1 saniye), flush daha az sıklıkta olur.
  • Refresh veriyi arama yapılabilir hale getirir, flush veriyi kalıcı hale getirir.
  • Refresh performansı etkiler, flush veri güvenliğini sağlar.

Refresh Interval Ayarlama:

PUT /my-index/_settings
{
  "index": {
    "refresh_interval": "30s"
  }
}

Manuel Refresh:

POST /my-index/_refresh

❓ Soru 27: Elasticsearch'te Translog nedir? Ne işe yarar?

Cevap: Translog, document'ların diske yazılmadan önce geçici olarak saklandığı bir log dosyasıdır.

  • Veri kaybını önlemek için kullanılır.
  • Node çöktüğünde, translog'daki veriler kurtarılır.
  • Flush işlemi sırasında translog temizlenir.

Translog Ayarları:

PUT /my-index/_settings
{
  "index": {
    "translog.sync_interval": "5s",
    "translog.durability": "async"
  }
}

❓ Soru 28: Elasticsearch'te Segment birleştirme (merge) nedir? Ne işe yarar?

Cevap: Segment birleştirme, küçük segment'leri daha büyük segment'ler haline getirme işlemidir.

  • Arama performansını artırır.
  • Disk alanını optimize eder.
  • Açık segment sayısını azaltır.

Manuel Merge:

POST /my-index/_forcemerge?max_num_segments=1

Merge Ayarları:

# elasticsearch.yml
indices.merge.scheduler.max_thread_count: 4
indices.merge.policy.max_merge_at_once: 10

❓ Soru 29: Elasticsearch'te Shard Allocation nedir? Nasıl yönetilir?

Cevap: Shard Allocation, shard'ların cluster içindeki node'lara nasıl dağıtılacağını belirler.

  • Balanced Allocation: Shard'lar eşit olarak dağıtılır.
  • Awareness Attributes: Shard'ları belirli özelliklere göre dağıtır.

Shard Allocation Ayarları:

PUT /_cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.awareness.attributes": "zone"
  }
}

Shard'ları Taşıma:

POST /_cluster/reroute
{
  "commands": [
    {
      "move": {
        "index": "my-index",
        "shard": 0,
        "from_node": "node1",
        "to_node": "node2"
      }
    }
  ]
}

❓ Soru 30: Elasticsearch'te Cluster Health durumları nelerdir? Anlamları nedir?

Cevap: Elasticsearch cluster health durumları:

  • Green (Yeşil): Tüm primary ve replica shard'lar atanmıştır. Cluster tamamen çalışır durumdadır.
  • Yellow (Sarı): Tüm primary shard'lar atanmıştır, ancak bazı replica shard'lar atanmamıştır. Cluster çalışır ancak veri kaybı riski vardır.
  • Red (Kırmızı): Bazı primary shard'lar atanmamıştır. Cluster kısmen çalışır durumdadır, bazı veriler erişilemez.

Cluster Health Kontrolü:

GET /_cluster/health

Detaylı Cluster Bilgisi:

GET /_cluster/health?pretty
GET /_cluster/health?level=shards

Logstash Mülakat Soruları

Bu dokümanda Logstash mülakatlarında en çok sorulan konular soru-cevap mantığıyla açıklanmış ve örnek kodlar eklenmiştir.

🔹 Temel Logstash Kavramları

❓ Soru 1: Logstash nedir? Ne işe yarar?

Cevap: Logstash, veri toplama, dönüştürme ve gönderme için kullanılan açık kaynaklı bir veri işleme aracıdır.

  • Farklı kaynaklardan veri toplar (loglar, metrikler, web events vb.).
  • Verileri yapılandırılmış ve analiz edilebilir formata dönüştürür.
  • İşlenmiş verileri Elasticsearch, veritabanları, mesaj kuyrukları gibi hedeflere gönderir.
  • ELK Stack (Elasticsearch, Logstash, Kibana) içinde veri işleme katmanıdır.

Logstash Başlatma Komutu:

bin/logstash -f my-pipeline.conf

❓ Soru 2: Logstash'te Input, Filter, Output plugin'leri nelerdir? Görevleri nelerdir?

Cevap:

  • Input Plugin'leri: Veri toplamak için kullanılır.
  • Filter Plugin'leri: Veriyi işlemek ve dönüştürmek için kullanılır.
  • Output Plugin'leri: İşlenmiş veriyi hedeflere göndermek için kullanılır.

Örnek Plugin'ler:

  • Input: file, beats, tcp, udp, http, kafka, jdbc
  • Filter: grok, mutate, date, geoip, csv, json
  • Output: elasticsearch, file, tcp, udp, http, kafka, jdbc

Temel Pipeline Yapısı:

input {
  # Veri kaynağı
  beats {
    port => 5044
  }
}

filter {
  # Veri işleme
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {
    match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output {
  # Veri hedefi
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "apache-logs-%{+YYYY.MM.dd}"
  }
}

❓ Soru 3: Logstash'te Grok plugin'i nedir? Ne işe yarar?

Cevap: Grok plugin'i, yapılandırılmamış log verilerini yapılandırılmış alanlara ayırmak için kullanılır.

  • Düzenli ifadeler (regex) kullanarak metinleri ayrıştırır.
  • 120'den fazla hazır pattern içerir (%{TIMESTAMP_ISO8601}, %{IP}, vb.).
  • Özel pattern'ler oluşturulabilir.

Grok Kullanımı:

filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" }
  }
}

Özel Pattern Oluşturma:

filter {
  grok {
    patterns_dir => ["/patterns"]
    match => { "message" => "%{MY_CUSTOM_PATTERN}" }
  }
}

Pattern Dosyası (patterns/my-pattern):

MY_CUSTOM_PATTERN %{DATE:date} - %{WORD:level} - %{GREEDYDATA:log}

❓ Soru 4: Logstash'te Mutate plugin'i nedir? Ne işe yarar?

Cevap: Mutate plugin'i, alanları dönüştürmek için kullanılır.

  • Alan ekleme, kaldırma, yeniden adlandırma.
  • Değerleri değiştirme.
  • Veri tiplerini dönüştürme.

Mutate Kullanımı:

filter {
  mutate {
    # Alan yeniden adlandırma
    rename => { "old_field" => "new_field" }
    
    # Alan ekleme
    add_field => { "new_field" => "value" }
    
    # Alan kaldırma
    remove_field => [ "field1", "field2" ]
    
    # Değiştirme
    replace => { "message" => "%{message} processed" }
    
    # Büyük/küçük harf değiştirme
    lowercase => [ "field1" ]
    uppercase => [ "field2" ]
    
    # Veri tipi değiştirme
    convert => {
      "price" => "float"
      "quantity" => "integer"
    }
  }
}

❓ Soru 5: Logstash'te Date plugin'i nedir? Ne işe yarar?

Cevap: Date plugin'i, tarih alanlarını ayrıştırmak ve @timestamp alanını ayarlamak için kullanılır.

  • Metin formatındaki tarihleri tarih nesnesine dönüştürür.
  • Elasticsearch'te doğru sıralama ve analiz için önemlidir.

Date Kullanımı:

filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{GREEDYDATA:message}" }
  }
  
  date {
    match => [ "timestamp", "yyyy-MM-dd HH:mm:ss.SSS" ]
    target => "@timestamp"
  }
}

Çoklu Format Desteği:

filter {
  date {
    match => [ "timestamp", "yyyy-MM-dd HH:mm:ss.SSS", "ISO8601" ]
    target => "@timestamp"
  }
}

❓ Soru 6: Logstash'te GeoIP plugin'i nedir? Ne işe yarar?

Cevap: GeoIP plugin'i, IP adreslerinden coğrafi bilgileri çıkarmak için kullanılır.

  • Ülke, şehir, enlem, boylam bilgilerini sağlar.
  • MaxMind GeoIP2 veritabanlarını kullanır.

GeoIP Kullanımı:

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  
  geoip {
    source => "clientip"
    target => "geoip"
  }
}

Şehir Bilgisi Ekleme:

filter {
  geoip {
    source => "clientip"
    target => "geoip"
    fields => ["city_name", "country_name", "location"]
  }
}

❓ Soru 7: Logstash'te CSV plugin'i nedir? Ne işe yarar?

Cevap: CSV plugin'i, CSV formatındaki verileri ayrıştırmak için kullanılır.

  • Satırları ve sütunları ayrıştırır.
  • Column isimlerini belirler.

CSV Kullanımı:

filter {
  csv {
    separator => ","
    columns => ["timestamp", "level", "message", "source_ip"]
  }
}

Header'lı CSV:

filter {
  csv {
    separator => ","
    autodetect_column_types => true
  }
}

❓ Soru 8: Logstash'te JSON plugin'i nedir? Ne işe yarar?

Cevap: JSON plugin'i, JSON formatındaki verileri ayrıştırmak için kullanılır.

  • JSON string'lerini nesnelere dönüştürür.
  • Nested JSON yapılarını destekler.

JSON Kullanımı:

filter {
  json {
    source => "message"
    target => "parsed_json"
  }
}

Hata Yönetimi:

filter {
  json {
    source => "message"
    skip_on_invalid_json => true
  }
}

❓ Soru 9: Logstash'te KV (Key-Value) plugin'i nedir? Ne işe yarar?

Cevap: KV plugin'i, key=value formatındaki verileri ayrıştırmak için kullanılır.

  • Query string formatındaki verileri işler.
  • Özel ayraçları destekler.

KV Kullanımı:

filter {
  kv {
    source => "message"
    field_split => "&?"
    value_split => "="
  }
}

Örnek:

Girdi: key1=value1&key2=value2
Çıktı: { "key1": "value1", "key2": "value2" }

❓ Soru 10: Logstash'te Useragent plugin'i nedir? Ne işe yarar?

Cevap: Useragent plugin'i, User-Agent string'lerini ayrıştırmak için kullanılır.

  • Tarayıcı, işletim sistemi ve cihaz bilgilerini çıkarır.
  • UA Parser kütüphanesini kullanır.

Useragent Kullanımı:

filter {
  useragent {
    source => "user_agent"
    target => "user_agent"
  }
}

Çıktı Alanları:

user_agent.name: Chrome
user_agent.os: Windows 10
user_agent.device: Other

🔹 Logstash İleri Düzey Konular

❓ Soru 11: Logstash'te Conditional ifadeler nasıl kullanılır?

Cevap: Conditional ifadeler, belirli koşullara göre işlem yapmak için kullanılır.

  • Alan değerlerine göre koşullu işlem yapma.
  • Hata yönetimi için kullanılır.

Conditional Kullanımı:

filter {
  if [loglevel] == "ERROR" {
    mutate {
      add_tag => ["error"]
    }
  }
  
  if [message] =~ /exception/ {
    mutate {
      add_field => { "has_exception" => true }
    }
  }
  
  if [status] == 404 {
    mutate {
      replace => { "status" => "Not Found" }
    }
  }
}

Else ve Else If:

filter {
  if [loglevel] == "ERROR" {
    mutate {
      add_tag => ["error"]
    }
  } else if [loglevel] == "WARN" {
    mutate {
      add_tag => ["warning"]
    }
  } else {
    mutate {
      add_tag => ["info"]
    }
  }
}

❓ Soru 12: Logstash'te Environment değişkenleri nasıl kullanılır?

Cevap: Environment değişkenleri, yapılandırmayı dinamik hale getirmek için kullanılır.

  • ${ENV_VARIABLE} formatında kullanılır.
  • Güvenlik için hassas bilgileri environment değişkenlerinde saklamak.

Environment Değişkeni Kullanımı:

input {
  tcp {
    port => "${TCP_PORT:5044}"
  }
}

output {
  elasticsearch {
    hosts => ["${ES_HOST:localhost}:9200"]
    index => "${INDEX_NAME:logs}-%{+YYYY.MM.dd}"
  }
}

Logstash Başlatma:

export TCP_PORT=5045
export ES_HOST=elasticsearch.example.com
export INDEX_NAME=app-logs

bin/logstash -f my-pipeline.conf

❓ Soru 13: Logstash'te Pipeline to Pipeline (P2P) nasıl çalışır?

Cevap: Pipeline to Pipeline, bir pipeline'ın çıktısını başka bir pipeline'ın girdisi olarak kullanma özelliğidir.

  • Karmaşık işlemleri bölmek için kullanılır.
  • Veri akışını yönetmek için kullanılır.

P2P Yapılandırması:

# pipeline1.conf
input {
  beats {
    port => 5044
  }
}

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
}

output {
  pipeline {
    send_to => ["pipeline2"]
  }
}

# pipeline2.conf
input {
  pipeline {
    address => "pipeline2"
  }
}

filter {
  date {
    match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "apache-logs-%{+YYYY.MM.dd}"
  }
}

❓ Soru 14: Logstash'te Dead Letter Queue (DLQ) nasıl yapılandırılır?

Cevap: Dead Letter Queue, işlenemeyen olayları saklamak için kullanılır.

  • Hatalı olayları kaybetmemek için kullanılır.
  • Sorun analizi için kullanılır.

DLQ Yapılandırması:

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "logs-%{+YYYY.MM.dd}"
    dlq_enabled => true
    dlq_ttl => 7 # 7 gün
  }
}

Özel DLQ Pipeline:

output {
  if [type] == "error" {
    pipeline {
      send_to => ["dlq-pipeline"]
    }
  } else {
    elasticsearch {
      hosts => ["localhost:9200"]
      index => "logs-%{+YYYY.MM.dd}"
    }
  }
}

❓ Soru 15: Logstash'te Persistent Queues nedir? Ne işe yarar?

Cevap: Persistent Queues, Logstash'in veriyi diskte saklayarak veri kaybını önlemesidir.

  • Logstash yeniden başlatıldığında veri kaybını önler.
  • Yüksek veri akışlarında kullanılır.

Persistent Queue Yapılandırması:

# logstash.yml
queue.type: persisted
queue.page_capacity: 250mb
queue.max_events: 50000
queue.max_bytes: 1gb

Pipeline Ayarları:

input {
  beats {
    port => 5044
  }
}

# Persistent queue otomatik olarak aktif olur
filter {
  # ...
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
  }
}

❓ Soru 16: Logstash'te Worker Threads nasıl optimize edilir?

Cevap: Worker Threads, Logstash'in performansını optimize etmek için kullanılır.

  • İşlemci çekirdek sayısına göre ayarlanır.
  • Yüksek veri akışları için önemlidir.

Worker Thread Ayarları:

# logstash.yml
pipeline.workers: 4 # CPU çekirdek sayısına göre
pipeline.batch.size: 125
pipeline.batch.delay: 50
pipeline.output.workers: 4

Performans İzleme:

# Logstash API
GET /_node/stats
GET /_node/stats/pipeline

❓ Soru 17: Logstash'te Codec'ler nedir? Türleri nelerdir?

Cevap: Codec'ler, veri formatını belirlemek için kullanılır.

  • json: JSON formatında veri.
  • line: Her satırı ayrı bir olay olarak.
  • plain: Düz metin formatı.
  • rubydebug: Debug amaçlı format.

Codec Kullanımı:

input {
  tcp {
    port => 5044
    codec => json
  }
}

output {
  stdout {
    codec => rubydebug
  }
}

❓ Soru 18: Logstash'te Aggregate plugin'i nedir? Ne işe yarar?

Cevap: Aggregate plugin'i, birden fazla olayı tek bir olayda birleştirmek için kullanılır.

  • İlgili olayları gruplamak için kullanılır.
  • Zaman serisi analizi için kullanılır.

Aggregate Kullanımı:

filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{WORD:event_type} %{GREEDYDATA:details}" }
  }
  
  if [event_type] == "start" {
    aggregate {
      task_id => "%{task_id}"
      code => "
        map['start_time'] = event.get('timestamp')
        map['start_details'] = event.get('details')
      "
    }
  }
  
  if [event_type] == "end" {
    aggregate {
      task_id => "%{task_id}"
      code => "
        map['end_time'] = event.get('timestamp')
        map['end_details'] = event.get('details')
        map['duration'] = (event.get('timestamp') - map['start_time'])
      "
      end_of_task => true
    }
  }
}

❓ Soru 19: Logstash'te Fingerprint plugin'i nedir? Ne işe yarar?

Cevap: Fingerprint plugin'i, veri bütünlüğünü sağlamak için kullanılır.

  • Verinin benzersiz bir parmak izini oluşturur.
  • Tekrarlayan verileri tespit etmek için kullanılır.

Fingerprint Kullanımı:

filter {
  fingerprint {
    source => ["message", "timestamp", "source_ip"]
    target => "fingerprint"
    method => "SHA1"
    key => "secret-key"
  }
}

❓ Soru 20: Logstash'te Clone plugin'i nedir? Ne işe yarar?

Cevap: Clone plugin'i, bir olayın kopyasını oluşturmak için kullanılır.

  • Aynı veriyi farklı formatlarda işlemek için kullanılır.
  • Test ve geliştirme için kullanılır.

Clone Kullanımı:

filter {
  clone {
    clones => [
      {
        "target" => "original"
      },
      {
        "target" => "processed"
      }
    ]
  }
}

filter {
  if [type] == "processed" {
    # İşlenmiş veri için işlemler
    mutate {
      add_field => { "processed" => true }
    }
  }
}

Kibana Mülakat Soruları

Bu dokümanda Kibana mülakatlarında en çok sorulan konular soru-cevap mantığıyla açıklanmış ve örnek kodlar eklenmiştir.

🔹 Temel Kibana Kavramları

❓ Soru 1: Kibana nedir? Ne işe yarar?

Cevap: Kibana, Elasticsearch verilerini görselleştirmek ve analiz etmek için kullanılan açık kaynaklı bir arayüzdür.

  • Elasticsearch'deki verileri görselleştirir.
  • Dashboard'lar oluşturur.
  • Gerçek zamanlı veri analizi sağlar.
  • ELK Stack (Elasticsearch, Logstash, Kibana) içinde görselleştirme katmanıdır.

Kibana Başlatma Komutu:

bin/kibana

❓ Soru 2: Kibana'da Index Pattern nedir? Ne işe yarar?

Cevap: Index Pattern, Kibana'nın hangi index'lerle çalışacağını belirten bir desendir.

  • Örnek: logs-*, metric-*
  • Zaman serisi verileri için kullanılır.
  • Birden fazla index'i tek bir desende birleştirir.

Index Pattern Oluşturma:

POST /api/saved_objects/index-pattern
{
  "attributes": {
    "title": "logs-*",
    "timeFieldName": "@timestamp"
  }
}

❓ Soru 3: Kibana'da Discover, Visualize, Dashboard kavramları nelerdir?

Cevap:

  • Discover: Elasticsearch'deki verileri keşfetmek ve aramak için kullanılır.
  • Visualize: Grafikler ve görselleştirmeler oluşturmak için kullanılır.
  • Dashboard: Birden fazla görselleştirmeyi tek bir sayfada birleştirmek için kullanılır.

Farkları:

  • Discover veri keşfi, Visualize grafik oluşturma, Dashboard ise bu grafikleri bir araya getirme.
  • Discover ham veri, Visualize işlenmiş veri, Dashboard ise özet bilgi.

❓ Soru 4: Kibana'da Visualization türleri nelerdir?

Cevap: Kibana'da çeşitli visualization türleri vardır:

  • Line Chart: Zaman serisi verilerini gösterir.
  • Area Chart: Alan grafiği, veri dağılımını gösterir.
  • Bar Chart: Kategorik verileri karşılaştırmak için kullanılır.
  • Pie Chart: Yüzde dağılımlarını gösterir.
  • Data Table: Tablo formatında veri gösterir.
  • Heat Map: İki boyutlu veri yoğunluğunu gösterir.
  • Tag Cloud: Kelime frekansını gösterir.
  • Metric: Tek bir metrik değerini gösterir.

❓ Soru 5: Kibana'da Saved Objects kavramı nedir?

Cevap: Saved Objects, Kibana'da oluşturulan ve saklanan nesnelerdir.

  • Searches: Kaydedilmiş aramalar.
  • Visualizations: Kaydedilmiş görselleştirmeler.
  • Dashboards: Kaydedilmiş dashboard'lar.
  • Index Patterns: Kaydedilmiş index desenleri.

Saved Objects, .kibana index'inde saklanır ve Kibana arayüzünden yönetilir.

❓ Soru 6: Kibana'da Query ve Filter arasındaki fark nedir?

Cevap:

  • Query: Veri aramak için kullanılır. Lucene sorgu sözdizimini destekler.
  • Filter: Veri filtrelemek için kullanılır. Daha hızlıdır ve sonuçları önbelleğe alır.

Farklar:

  • Query skor hesaplar, filter hesaplamaz.
  • Filter daha hızlı çalışır.
  • Filter sonuçları önbelleğe alınır.

Query Örneği:

status:error AND message:*exception*

Filter Örneği:

status is "error" AND message contains "exception"

❓ Soru 7: Kibana'da Timelion nedir? Ne işe yarar?

Cevap: Timelion, Kibana'da zaman serisi verilerini analiz etmek için kullanılan bir araçtır.

  • Zaman serisi verilerini karşılaştırır.
  • Matematiksel işlemler uygular.
  • Trend analizi yapar.

Timelion Sözdizimi:

.es(index=metric-*, metric=cpu.usage).label('CPU Usage')
.es(index=metric-*, metric=memory.usage).label('Memory Usage')
.add().subtract().label('Difference')

❓ Soru 8: Kibana'da Canvas nedir? Ne işe yarar?

Cevap: Canvas, Kibana'da özel görselleştirmeler ve raporlar oluşturmak için kullanılan bir araçtır.

  • Esnek ve özelleştirilebilir raporlar oluşturur.
  • Farklı veri kaynaklarını birleştirir.
  • İnteraktif ve dinamik raporlar oluşturur.

Canvas, geleneksel dashboard'lardan daha fazla esneklik sunar.

❓ Soru 9: Kibana'da Machine Learning özellikleri nelerdir?

Cevap: Kibana'da çeşitli Machine Learning özellikleri vardır:

  • Anomaly Detection: Anomali tespiti.
  • Regression: Regresyon analizi.
  • Classification: Sınıflandırma.
  • Forecasting: Tahminleme.

Bu özellikler, Elastic Machine Learning (EML) ile entegre çalışır.

❓ Soru 10: Kibana'da Security özellikleri nelerdir?

Cevap: Kibana'da çeşitli güvenlik özellikleri vardır:

  • Authentication: Kimlik doğrulama (LDAP, SAML, OAuth).
  • Authorization: Yetkilendirme (rol tabanlı erişim).
  • Field Level Security: Alan seviyesinde güvenlik.
  • Document Level Security: Document seviyesinde güvenlik.

Bu özellikler, Elastic Security ile entegre çalışır.

🔹 Kibana İleri Düzey Konular

❓ Soru 11: Kibana'da URL Drilling nedir? Ne işe yarar?

Cevap: URL Drilling, bir görselleştirmeden diğerine veya başka bir uygulamaya geçmek için kullanılır.

  • Detaylı analiz için kullanılır.
  • Farklı sistemler arasında bağlantı sağlar.

URL Drilling Yapılandırması:

{
  "type": "url",
  "url": "http://example.com/detail?id={{_source.id}}",
  "label": "View Details"
}

❓ Soru 12: Kibana'da Dashboard Embedding nasıl yapılır?

Cevap: Dashboard Embedding, Kibana dashboard'larını web sitelerine veya uygulamalara entegre etmek için kullanılır.

  • iFrame kullanarak embedding.
  • Kibana Embedding API kullanarak.

iFrame Embedding:

<iframe 
  src="http://kibana.example.com/app/dashboards#/view/1234567890?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-7d,mode:quick,to:now))">
</iframe>

Embedding API:

const dashboard = await kibanaEmbedding.embedDashboard(container, {
  id: '1234567890',
  filters: [],
  timeRange: {
    from: 'now-7d',
    to: 'now'
  }
});

❓ Soru 13: Kibana'da Reporting özellikleri nelerdir?

Cevap: Kibana'da çeşitli raporlama özellikleri vardır:

  • PDF Reports: Dashboard'ları PDF formatında dışa aktarma.
  • PNG Reports: Görselleştirmeleri PNG formatında dışa aktarma.
  • CSV Reports: Verileri CSV formatında dışa aktarma.
  • Scheduled Reports: Zamanlanmış raporlar.

Zamanlanmış Rapor Oluşturma:

POST /api/reporting/generate/report
{
  "jobType": "pdf",
  "objects": [
    {
      "type": "dashboard",
      "id": "1234567890"
    }
  ],
  "trigger": {
    "schedule": {
      "interval": "0 9 * * *"
    }
  }
}

❓ Soru 14: Kibana'da Alerting nasıl yapılandırılır?

Cevap: Alerting, belirli koşullar gerçekleştiğinde bildirim göndermek için kullanılır.

  • Threshold Alerting: Eşiği aştığında bildirim gönderme.
  • Anomaly Alerting: Anomali tespit edildiğinde bildirim gönderme.
  • Custom Alerting: Özel koşullar için bildirim gönderme.

Alert Oluşturma:

POST /api/alerting/alert
{
  "name": "High CPU Usage",
  "interval": "1m",
  "condition": {
    "script": {
      "source": "ctx.results[0].value > 80",
      "lang": "painless"
    }
  },
  "actions": [
    {
      "id": "email-action",
      "type": ".email"
    }
  ]
}

❓ Soru 15: Kibana'da Space kavramı nedir? Ne işe yarar?

Cevap: Space, Kibana'da nesneleri organize etmek için kullanılan bir kavramdır.

  • İlgili nesneleri gruplar.
  • Erişim kontrolü sağlar.
  • Farklı departmanlar için ayrı çalışma alanları oluşturur.

Space Oluşturma:

POST /api/spaces/space
{
  "name": "Marketing",
  "description": "Marketing analytics",
  "color": "#6092c4",
  "initials": "MKT"
}

❓ Soru 16: Kibana'da Short URL nasıl oluşturulur?

Cevap: Short URL, uzun Kibana URL'lerini kısaltmak için kullanılır.

  • Kolay paylaşım için kullanılır.
  • Basit ve anlaşılır URL'ler oluşturur.

Short URL Oluşturma:

POST /api/short_url
{
  "locator": "http://kibana.example.com/app/dashboards#/view/1234567890"
}

❓ Soru 17: Kibana'da Snippets nasıl kullanılır?

Cevap: Snippets, Kibana'da sık kullanılan kod parçacıklarını saklamak için kullanılır.

  • Sık kullanılan sorguları saklar.
  • Şablonlar oluşturur.

Snippet Oluşturma:

POST /api/saved_objects/snippet
{
  "attributes": {
    "title": "Error Logs",
    "description": "Error log search",
    "code": "status:error AND message:*exception*"
  }
}

❓ Soru 18: Kibana'da APM (Application Performance Monitoring) nasıl çalışır?

Cevap: APM, uygulama performansını izlemek için kullanılır.

  • Uygulama performans metriklerini toplar.
  • Hata oranlarını izler.
  • Dağıtık izleme (distributed tracing) sağlar.

APM, Elastic APM agent'ı ile entegre çalışır.

❓ Soru 19: Kibana'da Uptime (Heartbeat) nasıl çalışır?

Cevap: Uptime, sunucu ve servislerin durumunu izlemek için kullanılır.

  • Sunucu metriklerini toplar.
  • Servis durumlarını izler.
  • Uptime raporları oluşturur.

Uptime, Heartbeat agent'ı ile entegre çalışır.

❓ Soru 20: Kibana'da SIEM (Security Information and Event Management) nasıl çalışır?

Cevap: SIEM, güvenlik olaylarını yönetmek için kullanılır.

  • Güvenlik loglarını toplar.
  • Tehditleri tespit eder.
  • Güvenlik olaylarını analiz eder.

SIEM, Elastic Security ile entegre çalışır.