Topbeat ve ELK Stack ile Ubuntu 14.04 Üzerinde Altyapı Metrikleri Toplama Rehberi
Giriş
Günümüzün hızla değişen IT ortamlarında, altyapı bileşenlerinin performansını sürekli olarak izlemek, olası sorunları proaktif bir şekilde tespit etmek ve sistemlerin genel sağlığını anlamak kritik öneme sahiptir. Sunucular, ağ cihazları, depolama birimleri ve uygulamalar gibi farklı katmanlardan gelen metrikleri toplamak ve analiz etmek, operasyonel verimliliği artırmanın ve hizmet kesintilerini minimize etmenin temelini oluşturur. Bu metrikler sayesinde, CPU kullanımı, bellek tüketimi, disk G/Ç oranları, ağ trafiği gibi hayati bilgiler elde edilebilir ve bu veriler ışığında performans darboğazları giderilebilir, kapasite planlaması yapılabilir ve sistem kaynakları daha etkin kullanılabilir.
Bu makalede, açık kaynaklı ve oldukça popüler bir çözüm olan ELK Stack (Elasticsearch, Logstash, Kibana) ile Topbeat kullanarak Ubuntu 14.04 işletim sistemi üzerinde altyapı metriklerinin nasıl toplanacağını, işleneceğini ve görselleştirileceğini detaylı bir şekilde ele alacağız. Ubuntu 14.04, güncel bir işletim sistemi olmamakla birlikte, bazı eski altyapılarda veya belirli projelerde hala kullanılıyor olabilir. Bu nedenle, bu platform üzerinde ELK Stack’in 6.x serisi ve Topbeat’in nasıl kurulup yapılandırılacağını adım adım göstereceğiz. Amacımız, okuyuculara pratik bir rehber sunarak kendi izleme çözümlerini kurmalarına yardımcı olmaktır.
ELK Stack Nedir?
ELK Stack, Elasticsearch, Logstash ve Kibana olmak üzere üç ana bileşenden oluşan, log ve olay yönetimi için tasarlanmış güçlü bir açık kaynaklı platformdur. Ancak zamanla, log toplamanın ötesine geçerek metrik toplama, güvenlik olayları yönetimi (SIEM) ve uygulama performansı izleme (APM) gibi geniş bir kullanım alanına yayılmıştır.
Elasticsearch
Elasticsearch, Apache Lucene üzerine inşa edilmiş, dağıtık, RESTful bir arama ve analiz motorudur. Büyük veri kümelerini hızlı bir şekilde depolayabilir, arayabilir ve analiz edebilir. JSON tabanlı belgeleri indeksler ve bunları yatay olarak ölçeklenebilir bir küme yapısında saklar. Metrik verileri gibi zaman serisi verileri için ideal bir depolama çözümüdür, çünkü bu veriler üzerinde hızlı sorgulama ve toplama işlemleri yapılmasına olanak tanır.
Logstash
Logstash, çeşitli kaynaklardan veri toplayabilen, işleyebilen ve farklı hedeflere gönderebilen dinamik bir veri işleme hattıdır. Çeşitli giriş (input) eklentileri (Beats, dosya, Syslog, Kafka vb.) sayesinde farklı formatlardaki verileri alabilir. Filtre (filter) eklentileri (Grok, Mutate, Date, Geoip vb.) ile verileri ayrıştırabilir, zenginleştirebilir ve dönüştürebilir. Son olarak, çıkış (output) eklentileri (Elasticsearch, Kafka, Redis vb.) aracılığıyla işlenmiş verileri istediğiniz hedefe yönlendirebilir. Logstash, verilerinizi Elasticsearch’e göndermeden önce standartlaştırmak ve temizlemek için güçlü bir araçtır.
Kibana
Kibana, Elasticsearch’te depolanan verileri keşfetmek, analiz etmek ve görselleştirmek için kullanılan bir web arayüzüdür. Kullanıcı dostu arayüzü sayesinde, indekslenmiş veriler üzerinde arama yapabilir, özel sorgular oluşturabilir, farklı görselleştirmeler (çizgi grafikler, pasta grafikler, histogramlar vb.) tasarlayabilir ve bu görselleştirmeleri bir araya getirerek dinamik panolar (dashboard) oluşturabilirsiniz. Kibana, toplanan altyapı metriklerinin anlaşılır ve eyleme geçirilebilir bir şekilde sunulmasında kritik bir rol oynar.
Topbeat Nedir ve Neden Kullanılır?
Topbeat, Elastic Stack’in bir parçası olan ve sunucularınızdan sistem metriklerini toplamak için tasarlanmış hafif bir veri göndericisidir (shipper). “Beats” ailesinin bir üyesidir ve Filebeat (loglar için), Metricbeat (genel metrikler için), Packetbeat (ağ trafiği için) gibi diğer Beats araçlarıyla birlikte çalışır. Topbeat, özellikle CPU kullanımı, bellek tüketimi, disk G/Ç oranları, ağ trafiği ve çalışan süreçler gibi temel sistem kaynaklarının anlık durumunu izlemek için kullanılır.
Neden Topbeat Kullanılır?
* Hafif ve Kaynak Dostu: Topbeat, Go dilinde yazılmıştır ve çok düşük sistem kaynakları tüketir. Bu sayede izlenen sunucuların performansını olumsuz etkilemez.
* Kolay Kurulum ve Yapılandırma: Kurulumu ve yapılandırması oldukça basittir. YAML tabanlı yapılandırma dosyaları ile kolayca ayarlanabilir.
* Güvenilir Veri İletimi: Toplanan metrikleri doğrudan Elasticsearch’e veya Logstash aracılığıyla Elasticsearch’e güvenli ve verimli bir şekilde iletir. Ağ kesintileri durumunda verileri önbelleğe alabilir ve bağlantı yeniden kurulduğunda göndermeye devam edebilir.
* Özelleştirilebilir Metrikler: Hangi metriklerin toplanacağını ve ne sıklıkla gönderileceğini yapılandırma dosyası üzerinden belirleyebilirsiniz.
* ELK Stack ile Entegrasyon: ELK Stack ile sorunsuz bir şekilde entegre olur. Toplanan metrikler Kibana’da kolayca görselleştirilebilir.
Bu makalede, Topbeat’in sistem metriklerini nasıl toplayıp ELK Stack’e göndereceğini adım adım inceleyeceğiz.
Sistem Gereksinimleri ve Ön Hazırlıklar
Ubuntu 14.04 üzerinde ELK Stack 6.x serisini ve Topbeat’i kurmak için bazı ön hazırlıklar yapmamız gerekmektedir.
Ubuntu 14.04 Güncelleme
Kuruluma başlamadan önce sistemin güncel olduğundan emin olmalıyız. Bu, olası bağımlılık sorunlarını ve güvenlik açıklarını önlemeye yardımcı olacaktır.
sudo apt-get update
sudo apt-get upgrade -y
Java Kurulumu
Elasticsearch ve Logstash, Java Runtime Environment (JRE) gerektirir. ELK Stack’in 6.x serisi için Java 8 (OpenJDK 8 veya Oracle Java 8) önerilir. Ubuntu 14.04 varsayılan olarak eski Java sürümlerini içerebilir, bu yüzden Java 8’i manuel olarak kurmamız gerekecek. Burada OpenJDK 8’i kuracağız.
sudo apt-get install software-properties-common -y
sudo add-apt-repository ppa:openjdk-r/ppa -y
sudo apt-get update
sudo apt-get install openjdk-8-jre -y
Kurulumdan sonra Java sürümünü kontrol edelim:
java -version
Çıktı, Java 1.8.x sürümünü göstermelidir.
Elastic Stack Depo Anahtarı ve Depo Ekleme
Elastic Stack bileşenlerini APT paket yöneticisi aracılığıyla kurabilmek için Elastic’in GPG anahtarını ve depo adresini sistemimize eklememiz gerekmektedir.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
sudo apt-get update
Bu komutlar, Elastic’in genel anahtarını ekler ve Elastic 6.x depo URL’sini /etc/apt/sources.list.d/elastic-6.x.list dosyasına yazar. Son apt-get update komutu, yeni depoyu sisteminize tanıtır.
ELK Stack Kurulumu
Şimdi Elastic Stack bileşenlerini kurmaya başlayabiliriz.
Elasticsearch Kurulumu
Elasticsearch’ü kurmak oldukça basittir:
sudo apt-get install elasticsearch -y
Kurulumdan sonra, Elasticsearch’ün yapılandırma dosyasını (/etc/elasticsearch/elasticsearch.yml) düzenleyerek bazı temel ayarları yapmamız gerekecek. Özellikle network.host ayarını, Elasticsearch’ün hangi IP adresinden erişilebilir olacağını belirtmek için değiştirmemiz önemlidir. Tek bir sunucu üzerinde çalıştığımız için localhost veya sunucunun IP adresini kullanabiliriz.
sudo nano /etc/elasticsearch/elasticsearch.yml
Aşağıdaki satırları bulun ve düzenleyin (veya ekleyin):
# A node can have a name, which by default is a random ID.
# node.name: node-1
Use a descriptive name for your cluster:
# cluster.name: my-application
# ---------------------------------- Network -----------------------------------
# Set the bind address to a specific IP (IPv4 or IPv6):
network.host: localhost # Veya sunucunuzun IP adresi, örn: "192.168.1.100"
Set a custom port for HTTP:
# http.port: 9200
network.host ayarını localhost olarak bırakmak, Elasticsearch’e sadece aynı sunucu üzerinden erişilebileceği anlamına gelir. Eğer başka makinelerden de erişim sağlamak istiyorsanız, sunucunun IP adresini belirtmelisiniz.
Değişiklikleri kaydedip çıktıktan sonra, Elasticsearch servisini başlatın ve sistem başlangıcında otomatik başlaması için etkinleştirin:
sudo systemctl daemon-reload # Ubuntu 14.04'te systemctl yerine init.d/service kullanılır
sudo service elasticsearch start
sudo update-rc.d elasticsearch defaults 95 10 # Servisi otomatik başlatmak için
Elasticsearch’ün çalışıp çalışmadığını kontrol etmek için tarayıcınızdan veya curl ile http://localhost:9200 adresine erişebilirsiniz:
curl -X GET "localhost:9200/"
Başarılı bir kurulumda, Elasticsearch küme bilgileriyle ilgili bir JSON çıktısı almalısınız.
Logstash Kurulumu
Logstash’ı kurmak da Elasticsearch kadar basittir:
sudo apt-get install logstash -y
Logstash kurulumundan sonra, varsayılan olarak herhangi bir yapılandırma dosyasıyla gelmez. Kendi pipeline’ımızı oluşturmamız gerekecek. Şimdilik sadece kurup bırakalım, Topbeat yapılandırması ile birlikte Logstash pipeline’ını oluşturacağız.
Logstash servisini başlatın ve otomatik başlaması için etkinleştirin:
sudo service logstash start
sudo update-rc.d logstash defaults 95 10
Kibana Kurulumu
Kibana’yı kurmak için:
sudo apt-get install kibana -y
Kibana’nın yapılandırma dosyasını (/etc/kibana/kibana.yml) düzenlememiz gerekecek. server.host ve elasticsearch.url ayarlarını kontrol edelim.
sudo nano /etc/kibana/kibana.yml
Aşağıdaki satırları bulun ve düzenleyin:
# Specifies the address to which the Kibana server will bind.
server.host: "localhost" # Veya sunucunuzun IP adresi, örn: "192.168.1.100"
The URL of the Elasticsearch instance to use for all your queries.
elasticsearch.url: "http://localhost:9200"
server.host ayarını localhost olarak bırakmak, Kibana’ya sadece aynı sunucu üzerinden erişilebileceği anlamına gelir. Eğer Kibana’ya uzaktan erişmek istiyorsanız, sunucunun IP adresini belirtmelisiniz.
Değişiklikleri kaydedip çıktıktan sonra, Kibana servisini başlatın ve otomatik başlaması için etkinleştirin:
sudo service kibana start
sudo update-rc.d kibana defaults 95 10
Kibana’nın çalışıp çalışmadığını kontrol etmek için tarayıcınızdan http://:5601 adresine erişmeyi deneyin. Varsayılan olarak 5601 portunu kullanır. Eğer localhost olarak yapılandırdıysanız, sunucu üzerinde bir tarayıcıdan veya SSH tünellemesi ile erişebilirsiniz.
Topbeat Kurulumu ve Yapılandırması
ELK Stack’in temel bileşenlerini kurduktan sonra, sıra altyapı metriklerini toplayacak olan Topbeat’e geldi.
Topbeat Kurulumu
Topbeat’i kurmak için daha önce eklediğimiz Elastic deposunu kullanabiliriz:
sudo apt-get install topbeat -y
Topbeat Yapılandırması
Topbeat’in ana yapılandırma dosyası /etc/topbeat/topbeat.yml konumundadır. Bu dosyayı düzenleyerek Topbeat’in hangi metrikleri toplayacağını ve bunları nereye göndereceğini belirleyeceğiz.
sudo nano /etc/topbeat/topbeat.yml
Yapılandırma dosyasında dikkat etmemiz gereken ana bölümler şunlardır:
1. topbeat.procs (İsteğe Bağlı): Hangi süreçlerin metriklerini toplayacağınızı belirler. Varsayılan olarak tüm süreçleri izler.
# Defines the processes to monitor.
topbeat.procs: ["."] # Tüm süreçleri izle
# topbeat.procs: ["apache", "mysql", "nginx"] # Sadece belirli süreçleri izle
2. output.elasticsearch veya output.logstash: Toplanan metriklerin doğrudan Elasticsearch’e mi yoksa Logstash aracılığıyla mı gönderileceğini belirler. Logstash üzerinden göndermek, verileri daha fazla işleme yeteneği sağlar ve Elasticsearch üzerindeki yükü azaltır. Biz bu rehberde Logstash üzerinden göndermeyi tercih edeceğiz.
Logstash Çıkış Yapılandırması (Önerilen):
# ---------------------------- Logstash Output -----------------------------
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"] # Logstash'ın çalıştığı sunucu ve port
# Optional SSL. By default is off.
# List of root certificates for SSL verification
# ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
# Certificate for SSL client authentication
# ssl.certificate: "/etc/pki/client/cert.pem"
# Client Key for SSL client authentication
# ssl.key: "/etc/pki/client/cert.key"
output.logstash bölümünü etkinleştirin ve hosts kısmını Logstash’ın dinlediği IP adresi ve port (varsayılan 5044) ile güncelleyin. Diğer output.elasticsearch bölümünü yorum satırı yaparak devre dışı bırakın.
Elasticsearch Çıkış Yapılandırması (Alternatif):
Eğer Logstash kullanmak istemiyorsanız, doğrudan Elasticsearch’e gönderebilirsiniz:
# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["localhost:9200"] # Elasticsearch'ın çalıştığı sunucu ve port
# Optional protocol and basic auth credentials.
# protocol: https
# username: "elastic"
# password: "changeme"
Bu durumda output.logstash bölümünü yorum satırı yapın.
Yapılandırma dosyasını kaydettikten sonra, Topbeat servisini başlatın ve sistem başlangıcında otomatik başlaması için etkinleştirin:
Topbeat Servisini Başlatma
sudo service topbeat start
sudo update-rc.d topbeat defaults 95 10
Topbeat’in durumunu kontrol etmek için:
sudo service topbeat status
Her şey yolundaysa, Topbeat metrikleri toplamaya ve yapılandırıldığı gibi Logstash’a (veya doğrudan Elasticsearch’e) göndermeye başlayacaktır.
Logstash ile Veri İşleme (İsteğe Bağlı ama Önerilen)
Topbeat’ten gelen verileri Logstash üzerinden işlemek, verilerinizi daha tutarlı hale getirmenize ve Elasticsearch’e göndermeden önce zenginleştirmenize olanak tanır.
Logstash için yeni bir yapılandırma dosyası oluşturalım:
sudo nano /etc/logstash/conf.d/topbeat-pipeline.conf
Bu dosyaya aşağıdaki içeriği ekleyin:
input {
beats {
port => 5044 # Topbeat'in veri gönderdiği port
}
}
filter {
# Topbeat verileri genellikle temiz gelir, ancak isteğe bağlı olarak filtreler eklenebilir.
# Örneğin, bir alanın tipini değiştirmek veya yeni bir alan eklemek için:
# mutate {
# add_field => { "env" => "production" }
# }
}
output {
elasticsearch {
hosts => ["localhost:9200"] # Elasticsearch'ın çalıştığı sunucu ve port
index => "topbeat-%{+YYYY.MM.dd}" # Günlük indeks oluşturma
document_type => "%{[@metadata][type]}" # Topbeat'in gönderdiği tip bilgisini kullan
}
stdout { # Hata ayıklama için konsola çıktı alma
codec => rubydebug
}
}
Açıklamalar:
* input { beats { port => 5044 } }: Logstash’ın Beats istemcilerinden (Topbeat gibi) 5044 numaralı port üzerinden bağlantıları dinlemesini sağlar.
* filter { ... }: Topbeat verileri genellikle iyi yapılandırılmış olduğundan, genellikle karmaşık filtreleme gerektirmez. Ancak, veriye özel etiketler eklemek (mutate filtresi ile) veya başka dönüşümler yapmak isterseniz bu bölümü kullanabilirsiniz.
* output { elasticsearch { ... } }: İşlenmiş verileri Elasticsearch’e gönderir.
* hosts: Elasticsearch sunucusunun adresi ve portu.
* index: Oluşturulacak Elasticsearch indeksinin adı. topbeat-%{+YYYY.MM.dd} formatı, her gün için yeni bir indeks oluşturulmasını sağlar, bu da veri yönetimi ve saklama politikaları açısından faydalıdır.
* document_type: Topbeat’in gönderdiği @metadata alanındaki type bilgisini belge tipi olarak kullanır. (Not: Elasticsearch 6.x ve sonrası sürümlerinde _type kavramı deprecated edilmiştir, ancak Beats hala bu alanı gönderebilir ve Logstash bunu kullanabilir. Daha yeni ELK sürümlerinde bu satır kaldırılabilir veya farklı bir yaklaşımla ele alınabilir.)
* stdout { codec => rubydebug }: Hata ayıklama amacıyla işlenen verileri Logstash konsoluna yazdırır. Kurulum ve test aşamasında oldukça faydalıdır. Canlı sistemde kaldırılması önerilir.
Yapılandırma dosyasını kaydettikten sonra, Logstash servisini yeniden başlatın ki yeni yapılandırmayı yüklesin:
sudo service logstash restart
Logstash’ın sorunsuz çalıştığından emin olmak için /var/log/logstash/logstash-plain.log dosyasını kontrol edebilirsiniz. stdout çıktısı sayesinde konsolda da verilerin akmaya başladığını görebilirsiniz.
Kibana ile Verileri Görselleştirme
Metrikler Topbeat tarafından toplanıp Logstash aracılığıyla Elasticsearch’e gönderildikten sonra, sıra bu verileri Kibana ile anlamlı hale getirmeye gelir.
Kibana’ya Erişim
Tarayıcınızdan http://:5601 adresine gidin. Kibana arayüzü karşınıza gelecektir.
Index Pattern Oluşturma
Kibana’nın Elasticsearch’teki verilerinizi sorgulayabilmesi için bir indeks deseni (index pattern) oluşturmanız gerekir.
1. Kibana arayüzünde sol menüden “Management” (Yönetim) bölümüne tıklayın.
2. “Kibana” altında “Index Patterns” (İndeks Desenleri) seçeneğini seçin.
3. “Create index pattern” (İndeks deseni oluştur) butonuna tıklayın.
4. “Index pattern” alanına topbeat-* yazın ve “Next step” (Sonraki adım) butonuna tıklayın. Bu, topbeat-2023.10.27 gibi tüm Topbeat indekslerini kapsayacaktır.
5. “Time Filter field name” (Zaman Filtresi alanı adı) açılır menüsünden @timestamp öğesini seçin. Bu, Kibana’nın zaman bazlı filtrelemeler yapabilmesi için önemlidir.
6. “Create index pattern” butonuna tıklayın.
Artık Kibana, Topbeat verilerinizi sorgulamaya hazırdır.
Dashboard Oluşturma
Şimdi Topbeat’ten gelen metrikleri görselleştirmek için bir pano (dashboard) oluşturalım.
1. Kibana’nın sol menüsünden “Discover” (Keşfet) bölümüne tıklayın. Burada Topbeat’ten gelen ham verileri görebilirsiniz. Zaman aralığını sağ üst köşeden “Last 15 minutes” (Son 15 dakika) veya “Last 1 hour” (Son 1 saat) gibi bir değere ayarlayın.
2. Sol menüden “Visualize” (Görselleştir) bölümüne tıklayın ve “Create new visualization” (Yeni görselleştirme oluştur) butonuna tıklayın.
3. Örnek Görselleştirmeler:
* CPU Kullanımı (Line Chart):
* Görselleştirme tipi olarak “Line” (Çizgi) seçin.
* Y-Axis (Y Ekseni) için:
* Aggregation: Max
* Field: system.cpu.total.norm.pct (veya system.cpu.total.pct eski versiyonlarda)
* X-Axis (X Ekseni) için:
* Aggregation: Date Histogram
* Field: @timestamp
* Interval: Auto (veya 1m gibi bir değer)
* “Apply changes” (Değişiklikleri uygula) butonuna tıklayın ve görselleştirmeyi “CPU Kullanımı” adıyla kaydedin.
* Bellek Kullanımı (Area Chart):
* Görselleştirme tipi olarak “Area” (Alan) seçin.
* Y-Axis (Y Ekseni) için:
* Aggregation: Max
* Field: system.memory.used.pct
* X-Axis (X Ekseni) için:
* Aggregation: Date Histogram
* Field: @timestamp
* Interval: Auto
* “Apply changes” butonuna tıklayın ve görselleştirmeyi “Bellek Kullanımı” adıyla kaydedin.
* Disk G/Ç (Line Chart):
* Görselleştirme tipi olarak “Line” seçin.
* Y-Axis (Y Ekseni) için iki metrik ekleyin:
* Aggregation: Max, Field: system.diskio.write.bytes
* Aggregation: Max, Field: system.diskio.read.bytes
* X-Axis (X Ekseni) için:
* Aggregation: Date Histogram, Field: @timestamp, Interval: Auto
* “Apply changes” butonuna tıklayın ve görselleştirmeyi “Disk G/Ç” adıyla kaydedin.
* Ağ Trafiği (Line Chart):
* Görselleştirme tipi olarak “Line” seçin.
* Y-Axis (Y Ekseni) için iki metrik ekleyin:
* Aggregation: Max, Field: system.network.out.bytes
* Aggregation: Max, Field: system.network.in.bytes
* X-Axis (X Ekseni) için:
* Aggregation: Date Histogram, Field: @timestamp, Interval: Auto
* “Apply changes” butonuna tıklayın ve görselleştirmeyi “Ağ Trafiği” adıyla kaydedin.
4. Dashboard Oluşturma:
* Sol menüden “Dashboard” (Pano) bölümüne tıklayın ve “Create new dashboard” (Yeni pano oluştur) butonuna tıklayın.
* “Add” (Ekle) butonuna tıklayarak az önce oluşturduğunuz görselleştirmeleri panoya ekleyin.
* Görselleştirmeleri sürükle-bırak yöntemiyle düzenleyin ve boyutlarını ayarlayın.
* Panoyu “Altyapı Metrikleri Panosu” gibi bir adla kaydedin.
Artık Ubuntu 14.04 sunucunuzun temel altyapı metriklerini canlı olarak Kibana panonuzda izleyebilirsiniz.
Performans ve Ölçeklenebilirlik İpuçları
ELK Stack, doğru yapılandırıldığında ve yönetildiğinde oldukça ölçeklenebilir bir çözümdür. Ancak büyük veri hacimleriyle uğraşırken bazı noktalara dikkat etmek önemlidir.
Veri Saklama Politikaları
Metrik verileri zamanla birikecek ve disk alanınızı dolduracaktır. Bu nedenle eski verileri otomatik olarak silmek veya arşivlemek için bir strateji belirlemeniz gerekir.
* Index Lifecycle Management (ILM): ELK Stack’in daha yeni sürümlerinde (6.7 ve üzeri) yerleşik bir ILM özelliği bulunur. Ancak 6.x serisinde bu özellik tam olarak gelişmiş değildir.
* Curator: Elastic’in curator aracı, indeksleri yönetmek için güçlü bir komut satırı aracıdır. Belirli bir yaştan sonra indeksleri silebilir veya kapatabilir. Ubuntu 14.04’te pip install elasticsearch-curator ile kurup yapılandırabilirsiniz. Örneğin, 30 günden eski indeksleri silmek için bir curator işi tanımlayabilirsiniz.
* Manuel Silme: En basit yöntem, belirli aralıklarla curl -X DELETE "localhost:9200/topbeat-YYYY.MM.DD" komutlarıyla eski indeksleri manuel olarak silmektir.
Donanım Gereksinimleri
ELK Stack, özellikle Elasticsearch, donanım kaynakları açısından talepkar olabilir.
* RAM: Elasticsearch, sorgu ve indeksleme performansını artırmak için bol miktarda RAM’e ihtiyaç duyar. Genellikle sunucunun RAM’inin yarısı Elasticsearch’e ayrılır (maksimum 30-32 GB).
* CPU: Logstash ve Elasticsearch, veri işleme ve arama işlemleri için güçlü CPU’lara ihtiyaç duyar.
* Disk: SSD’ler, özellikle Elasticsearch için yüksek G/Ç performansından dolayı şiddetle tavsiye edilir. Yeterli disk alanı olduğundan ve verilerinizi yedeklediğinizden emin olun.
* Ağ: ELK kümesi içindeki bileşenler ve Beats ile ELK arasındaki iletişim için yüksek bant genişliğine sahip bir ağ önemlidir.
Güvenlik
ELK Stack’i güvenli bir şekilde dağıtmak kritik öneme sahiptir.
* Güvenlik Duvarı (Firewall): Sunucularınızda güvenlik duvarını etkinleştirin (örn: ufw) ve sadece gerekli portlara (örn: 9200, 5044, 5601, 22) erişime izin verin.
* Ağ Segmentasyonu: ELK Stack bileşenlerini ayrı bir ağ segmentinde çalıştırmak, güvenlik risklerini azaltabilir.
* Kimlik Doğrulama ve Yetkilendirme: Elasticsearch ve Kibana’ya erişimi korumak için kimlik doğrulama ve yetkilendirme mekanizmaları kullanın. Elastic’in X-Pack’i (ücretli veya temel sürümde bazı ücretsiz özellikler sunar) veya üçüncü taraf çözümler (örn: Nginx ile temel kimlik doğrulama) kullanılabilir.
* SSL/TLS: Beats, Logstash ve Elasticsearch arasındaki iletişimi SSL/TLS ile şifreleyerek veri güvenliğini artırın.
Sorun Giderme (Troubleshooting)
Kurulum veya yapılandırma sırasında sorunlarla karşılaşmak olasıdır. İşte yaygın sorunları gidermek için bazı ipuçları:
Log Kontrolleri
Her bileşenin kendi log dosyaları vardır ve bu dosyalar sorunların kök nedenini anlamak için ilk bakmanız gereken yerlerdir.
* Elasticsearch: /var/log/elasticsearch/ altındaki log dosyaları.
* Logstash: /var/log/logstash/ altındaki log dosyaları (özellikle logstash-plain.log).
* Kibana: /var/log/kibana/ altındaki log dosyaları.
* Topbeat: /var/log/topbeat/ altındaki log dosyaları.
Loglarda ERROR veya WARN seviyesindeki mesajları arayın.
Port Kontrolleri
Bileşenlerin doğru portlarda dinleyip dinlemediğini ve birbirleriyle iletişim kurabildiğini kontrol edin.
* sudo netstat -tulnp komutu ile açık portları ve hangi servisin kullandığını görebilirsiniz.
* Elasticsearch: 9200
* Logstash (Beats input): 5044
* Kibana: 5601
Yapılandırma Dosyası Hataları
YAML yapılandırma dosyaları girinti (indentation) konusunda çok hassastır. Yanlış girintiler veya sözdizimi hataları servislerin başlamamasına neden olabilir.
* Yapılandırma dosyalarını düzenlerken dikkatli olun.
* Logstash yapılandırmalarını test etmek için sudo -u logstash /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/topbeat-pipeline.conf --config.test_and_exit komutunu kullanabilirsiniz.
Servis Durumu
Bileşen servislerinin çalışır durumda olduğundan emin olun.
* sudo service elasticsearch status
* sudo service logstash status
* sudo service kibana status
* sudo service topbeat status
Çalışmıyorsa, start yerine restart komutunu kullanın ve logları kontrol edin.
Sonuç
Bu makalede, Ubuntu 14.04 işletim sistemi üzerinde Topbeat ve ELK Stack’in 6.x serisini kullanarak altyapı metriklerini toplama, işleme ve görselleştirme sürecini adım adım ele aldık. Elasticsearch, Logstash ve Kibana’nın temel bileşenlerini kurduk, Topbeat’i yapılandırarak sistem metriklerini toplamasını sağladık ve bu verileri Kibana’da anlamlı panolar halinde görselleştirdik. Ayrıca, performans, ölçeklenebilirlik ve güvenlik konularında önemli ipuçları ve yaygın sorun giderme yöntemlerini de paylaştık.
Bu rehber, eski bir sistem üzerinde dahi olsa, güçlü ve esnek bir izleme çözümünü nasıl hayata geçirebileceğinizi göstermektedir. Altyapı metriklerini etkin bir şekilde izlemek, sistemlerinizin sağlığını korumanıza, performans darboğazlarını erkenden tespit etmenize ve genel operasyonel verimliliğinizi artırmanıza yardımcı olacaktır. Bu kurulum, daha karmaşık izleme ihtiyaçlarınız için bir başlangıç noktası olabilir ve üzerine ekleyerek daha kapsamlı çözümler geliştirebilirsiniz. Unutmayın, iyi bir izleme altyapısı, sorunları ortaya çıkmadan önce görmenizi ve proaktif müdahalelerde bulunmanızı sağlar.
