70 adet ileri seviye Elasticsearch, Logstash ve Kibana mülakat sorusu ve cevabı
30 adet ileri seviye Elasticsearch mülakat sorusu ve cevabı
20 adet ileri seviye Logstash mülakat sorusu ve cevabı
20 adet ileri seviye Kibana mülakat sorusu ve cevabı
Bu dokümanda Elasticsearch mülakatlarında en çok sorulan konular soru-cevap mantığıyla açıklanmış ve örnek kodlar eklenmiştir.
Cevap: Elasticsearch, Apache Lucene tabanlı, dağıtık bir arama ve analiz motorudur.
Elasticsearch Başlatma Komutu:
./bin/elasticsearch
Cevap:
Index Oluşturma Komutu:
PUT /my-index
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
}
}
Cevap:
Farklar:
Shard ve Replica Ayarları:
PUT /my-index/_settings
{
"index" : {
"number_of_replicas" : 2
}
}
Cevap: Mapping, bir index içindeki alanların (fields) ve veri tiplerinin tanımlanmasıdır.
Mapping Oluşturma Komutu:
PUT /my-index
{
"mappings": {
"properties": {
"title": { "type": "text" },
"price": { "type": "float" },
"created_at": { "type": "date" }
}
}
}
Cevap: Analyzer, metin alanlarını işlemek için kullanılan bir bileşenler dizisidir.
Örnek Analyzer'lar:
Ö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"
}
}
}
}
Cevap:
Farklar:
Query Örneği:
GET /my-index/_search
{
"query": {
"match": {
"title": "elasticsearch"
}
}
}
Filter Örneği:
GET /my-index/_search
{
"query": {
"bool": {
"filter": {
"term": {
"status": "published"
}
}
}
}
}
Cevap:
Farklar:
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"
}
}
}
Cevap: Bool Query, birden fazla sorguyu birleştirmek için kullanılan bir bileşik sorgudur.
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" } }
]
}
}
}
Cevap: Aggregation, veri üzerinde istatistiksel analizler ve gruplamalar yapmak için kullanılan bir özelliktir.
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" }
}
}
}
}
}
Cevap: Inverted Index, Elasticsearch'in temel arama mekanizmasıdır.
Çalışma Prensibi:
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]
Cevap:
İlişki:
Cluster Bilgilerini Görme:
GET /_cluster/health GET /_cluster/stats GET /_nodes/stats
Cevap: Reindexing, bir index'teki verileri yeni bir index'e kopyalama işlemidir.
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"
}
}
Cevap: Scroll API, büyük sonuç setlerini sayfalara bölmek için kullanılır.
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=="
}
Cevap: Update by Query, bir sorguya uyan tüm document'ları güncellemek için kullanılır.
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
}
}
}
}
Cevap: Delete by Query, bir sorguya uyan tüm document'ları silmek 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"
}
}
}
}
Cevap:
Farklar:
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"
}
}
}
}
}
Cevap: Suggester, kullanıcıya otomatik tamamlama veya öneri sunmak için kullanılan bir özelliktir.
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"
}
}
}
}
Cevap: Percolate Query, sorguları index'leyen ve document'ları bu sorgularla eşleştiren ters bir arama mekanizmasıdı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"
}
}
}
}
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.
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
}
Cevap: Template, yeni index'ler için varsayılan ayarları ve mapping'leri tanımlamak 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" }
}
}
}
}
Cevap: Elasticsearch performansını optimize etmek için:
Performans Ayarları:
PUT /my-index/_settings
{
"index": {
"refresh_interval": "30s",
"number_of_replicas": 1
}
}
Cevap: Hot-Warm mimarisi, verinin yaşına göre farklı özelliklere sahip node'larda depolanmasıdır.
Avantajları:
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
}
}
}
}
}
}
Cevap: ILM, index'lerin yaşam döngüsünü otomatik olarak yönetmek için kullanılan bir özelliktir.
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": {}
}
}
}
}
}
Cevap:
Farklar:
Doc Values Ayarlama:
PUT /my-index
{
"mappings": {
"properties": {
"title": {
"type": "text",
"doc_values": true
}
}
}
}
Cevap: Elasticsearch'te çeşitli cache mekanizmaları vardır:
Optimizasyon:
Cache Ayarları:
# elasticsearch.yml indices.queries.cache.size: 10% indices.requests.cache.size: 1% indices.fielddata.cache.size: 20%
Cevap:
Farklar:
Refresh Interval Ayarlama:
PUT /my-index/_settings
{
"index": {
"refresh_interval": "30s"
}
}
Manuel Refresh:
POST /my-index/_refresh
Cevap: Translog, document'ların diske yazılmadan önce geçici olarak saklandığı bir log dosyasıdır.
Translog Ayarları:
PUT /my-index/_settings
{
"index": {
"translog.sync_interval": "5s",
"translog.durability": "async"
}
}
Cevap: Segment birleştirme, küçük segment'leri daha büyük segment'ler haline getirme işlemidir.
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
Cevap: Shard Allocation, shard'ların cluster içindeki node'lara nasıl dağıtılacağını belirler.
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"
}
}
]
}
Cevap: Elasticsearch cluster health durumları:
Cluster Health Kontrolü:
GET /_cluster/health
Detaylı Cluster Bilgisi:
GET /_cluster/health?pretty GET /_cluster/health?level=shards
Bu dokümanda Logstash mülakatlarında en çok sorulan konular soru-cevap mantığıyla açıklanmış ve örnek kodlar eklenmiştir.
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.
Logstash Başlatma Komutu:
bin/logstash -f my-pipeline.conf
Cevap:
Örnek Plugin'ler:
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}"
}
}
Cevap: Grok plugin'i, yapılandırılmamış log verilerini yapılandırılmış alanlara ayırmak için kullanılır.
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}
Cevap: Mutate plugin'i, alanları dönüştürmek için kullanılır.
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"
}
}
}
Cevap: Date plugin'i, tarih alanlarını ayrıştırmak ve @timestamp alanını ayarlamak için kullanılır.
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"
}
}
Cevap: GeoIP plugin'i, IP adreslerinden coğrafi bilgileri çıkarmak için kullanılı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"]
}
}
Cevap: CSV plugin'i, CSV formatındaki verileri ayrıştırmak için kullanılır.
CSV Kullanımı:
filter {
csv {
separator => ","
columns => ["timestamp", "level", "message", "source_ip"]
}
}
Header'lı CSV:
filter {
csv {
separator => ","
autodetect_column_types => true
}
}
Cevap: JSON plugin'i, JSON formatındaki verileri ayrıştırmak için kullanılır.
JSON Kullanımı:
filter {
json {
source => "message"
target => "parsed_json"
}
}
Hata Yönetimi:
filter {
json {
source => "message"
skip_on_invalid_json => true
}
}
Cevap: KV plugin'i, key=value formatındaki verileri ayrıştırmak için kullanılır.
KV Kullanımı:
filter {
kv {
source => "message"
field_split => "&?"
value_split => "="
}
}
Örnek:
Girdi: key1=value1&key2=value2
Çıktı: { "key1": "value1", "key2": "value2" }
Cevap: Useragent plugin'i, User-Agent string'lerini ayrıştırmak için kullanılı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
Cevap: Conditional ifadeler, belirli koşullara göre işlem yapmak 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"]
}
}
}
Cevap: Environment değişkenleri, yapılandırmayı dinamik hale getirmek için kullanılır.
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
Cevap: Pipeline to Pipeline, bir pipeline'ın çıktısını başka bir pipeline'ın girdisi olarak kullanma özelliğidir.
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}"
}
}
Cevap: Dead Letter Queue, işlenemeyen olayları saklamak 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}"
}
}
}
Cevap: Persistent Queues, Logstash'in veriyi diskte saklayarak veri kaybını önlemesidir.
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"]
}
}
Cevap: Worker Threads, Logstash'in performansını optimize etmek için kullanılır.
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
Cevap: Codec'ler, veri formatını belirlemek için kullanılır.
Codec Kullanımı:
input {
tcp {
port => 5044
codec => json
}
}
output {
stdout {
codec => rubydebug
}
}
Cevap: Aggregate plugin'i, birden fazla olayı tek bir olayda birleştirmek 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
}
}
}
Cevap: Fingerprint plugin'i, veri bütünlüğünü sağlamak için kullanılır.
Fingerprint Kullanımı:
filter {
fingerprint {
source => ["message", "timestamp", "source_ip"]
target => "fingerprint"
method => "SHA1"
key => "secret-key"
}
}
Cevap: Clone plugin'i, bir olayın kopyasını oluşturmak 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 }
}
}
}
Bu dokümanda Kibana mülakatlarında en çok sorulan konular soru-cevap mantığıyla açıklanmış ve örnek kodlar eklenmiştir.
Cevap: Kibana, Elasticsearch verilerini görselleştirmek ve analiz etmek için kullanılan açık kaynaklı bir arayüzdür.
Kibana Başlatma Komutu:
bin/kibana
Cevap: Index Pattern, Kibana'nın hangi index'lerle çalışacağını belirten bir desendir.
Index Pattern Oluşturma:
POST /api/saved_objects/index-pattern
{
"attributes": {
"title": "logs-*",
"timeFieldName": "@timestamp"
}
}
Cevap:
Farkları:
Cevap: Kibana'da çeşitli visualization türleri vardır:
Cevap: Saved Objects, Kibana'da oluşturulan ve saklanan nesnelerdir.
Saved Objects, .kibana index'inde saklanır ve Kibana arayüzünden yönetilir.
Cevap:
Farklar:
Query Örneği:
status:error AND message:*exception*
Filter Örneği:
status is "error" AND message contains "exception"
Cevap: Timelion, Kibana'da zaman serisi verilerini analiz etmek için kullanılan bir araçtır.
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')
Cevap: Canvas, Kibana'da özel görselleştirmeler ve raporlar oluşturmak için kullanılan bir araçtır.
Canvas, geleneksel dashboard'lardan daha fazla esneklik sunar.
Cevap: Kibana'da çeşitli Machine Learning özellikleri vardır:
Bu özellikler, Elastic Machine Learning (EML) ile entegre çalışır.
Cevap: Kibana'da çeşitli güvenlik özellikleri vardır:
Bu özellikler, Elastic Security ile entegre çalışır.
Cevap: URL Drilling, bir görselleştirmeden diğerine veya başka bir uygulamaya geçmek için kullanılır.
URL Drilling Yapılandırması:
{
"type": "url",
"url": "http://example.com/detail?id={{_source.id}}",
"label": "View Details"
}
Cevap: Dashboard Embedding, Kibana dashboard'larını web sitelerine veya uygulamalara entegre etmek için kullanılır.
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'
}
});
Cevap: Kibana'da çeşitli raporlama özellikleri vardır:
Zamanlanmış Rapor Oluşturma:
POST /api/reporting/generate/report
{
"jobType": "pdf",
"objects": [
{
"type": "dashboard",
"id": "1234567890"
}
],
"trigger": {
"schedule": {
"interval": "0 9 * * *"
}
}
}
Cevap: Alerting, belirli koşullar gerçekleştiğinde bildirim göndermek için kullanılır.
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"
}
]
}
Cevap: Space, Kibana'da nesneleri organize etmek için kullanılan bir kavramdır.
Space Oluşturma:
POST /api/spaces/space
{
"name": "Marketing",
"description": "Marketing analytics",
"color": "#6092c4",
"initials": "MKT"
}
Cevap: Short URL, uzun Kibana URL'lerini kısaltmak için kullanılır.
Short URL Oluşturma:
POST /api/short_url
{
"locator": "http://kibana.example.com/app/dashboards#/view/1234567890"
}
Cevap: Snippets, Kibana'da sık kullanılan kod parçacıklarını saklamak için kullanılır.
Snippet Oluşturma:
POST /api/saved_objects/snippet
{
"attributes": {
"title": "Error Logs",
"description": "Error log search",
"code": "status:error AND message:*exception*"
}
}
Cevap: APM, uygulama performansını izlemek için kullanılır.
APM, Elastic APM agent'ı ile entegre çalışır.
Cevap: Uptime, sunucu ve servislerin durumunu izlemek için kullanılır.
Uptime, Heartbeat agent'ı ile entegre çalışır.
Cevap: SIEM, güvenlik olaylarını yönetmek için kullanılır.
SIEM, Elastic Security ile entegre çalışır.