Altyapı Metriklerini Packetbeat ve ELK ile Toplama (Ubuntu 16.04)
Modern altyapılarda sistemlerin ve uygulamaların sağlığını, performansını ve güvenliğini sürekli olarak izlemek kritik öneme sahiptir. Ağ trafiği, bu izleme sürecinin temel taşlarından biridir; zira ağ üzerinden geçen veriler, sistemler arası iletişimi, olası performans darboğazlarını, güvenlik ihlallerini ve uygulama davranışlarını anlamak için paha biçilmez bilgiler sunar. Bu rehberde, hafif ve güçlü bir ağ paket analizcisi olan Packetbeat’i kullanarak Ubuntu 16.04 sunucularından altyapı metriklerini nasıl toplayacağımızı ve bu verileri popüler ELK (Elasticsearch, Logstash, Kibana) yığını ile nasıl depolayıp görselleştireceğimizi adım adım inceleyeceğiz.
Packetbeat, ağ arayüzlerini dinleyerek belirli protokoller üzerindeki trafiği analiz eder ve bu verileri yapılandırılmış bir formatta Elasticsearch’e gönderir. HTTP, DNS, TLS, MySQL, PostgreSQL gibi birçok uygulama protokolünü destekler. ELK yığını ise bu verileri merkezi bir depoda saklamanıza, güçlü sorgularla analiz etmenize ve Kibana’nın zengin görselleştirme yetenekleriyle anlamlı panolar oluşturmanıza olanak tanır. Bu sayede, ağınızda neler olup bittiğini gerçek zamanlı olarak takip edebilir, sorunları proaktif olarak tespit edebilir ve altyapınızın genel sağlığı hakkında derinlemesine bilgi edinebilirsiniz.
Bu rehber, Ubuntu 16.04 üzerinde ELK yığınını kurmayı ve ardından Packetbeat’i yapılandırarak ağ metriklerini toplamayı ve Kibana üzerinde görselleştirmeyi hedefler.
ELK Stack Kurulumu (Elasticsearch ve Kibana)
ELK Stack’in temel bileşenleri olan Elasticsearch ve Kibana’yı, Packetbeat verilerini depolamak ve görselleştirmek için kuracağız. Ubuntu 16.04’te kurulum adımları şunlardır.
Ön Gereksinimler
Elasticsearch’ün çalışması için Java Runtime Environment (JRE) gereklidir. OpenJDK’yı kurarak başlayabiliriz:
sudo apt update
sudo apt install openjdk-8-jre-headless -y
Elasticsearch Kurulumu
Elasticsearch’ü kurmak için Elastic’in APT deposunu sistemimize eklememiz gerekiyor.
1. Elastic GPG anahtarını ekleyin:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
2. Elastic deposunu ekleyin:
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
Not: Ubuntu 16.04 için Elastic Stack’in 5.x veya 6.x sürümleri genellikle daha uyumludur. Bu rehberde 5.x reposunu kullanacağız.
3. Depo listesini güncelleyin ve Elasticsearch’ü kurun:
sudo apt update
sudo apt install elasticsearch -y
4. Elasticsearch yapılandırması (/etc/elasticsearch/elasticsearch.yml):
Temel bir yapılandırma için, özellikle tek düğümlü bir kurulumda, network.host ayarını yapmanız yeterlidir. Bu, Elasticsearch’ün hangi IP adresinden erişilebilir olacağını belirler.
# /etc/elasticsearch/elasticsearch.yml
Ağ ayarları
network.host: 0.0.0.0 # Tüm arayüzlerden erişime izin verir, üretimde belirli bir IP ile sınırlayın
http.port: 9200
Değişiklikleri kaydedin ve Elasticsearch servisini başlatıp etkinleştirin:
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
5. Durumu kontrol edin:
curl -X GET 'http://localhost:9200'
Çıktıda cluster_name, name ve tagline gibi bilgiler görmelisiniz.
Kibana Kurulumu
Kibana, Elasticsearch’teki verileri görselleştirmek için kullanılan arayüzdür.
1. Kibana’yı kurun:
Elastic GPG anahtarı ve deposu zaten ekli olduğu için doğrudan kurulum yapabiliriz:
sudo apt install kibana -y
2. Kibana yapılandırması (/etc/kibana/kibana.yml):
Kibana’nın hangi IP adresinden erişilebilir olacağını ve hangi Elasticsearch örneğine bağlanacağını yapılandırın.
# /etc/kibana/kibana.yml
Kibana sunucu ayarları
server.port: 5601
server.host: "0.0.0.0" # Tüm arayüzlerden erişime izin verir
server.name: "your-kibana-server"
Elasticsearch ayarları
elasticsearch.url: "http://localhost:9200" # Elasticsearch sunucunuzun IP'si
Değişiklikleri kaydedin ve Kibana servisini başlatıp etkinleştirin:
sudo systemctl start kibana
sudo systemctl enable kibana
3. Firewall ayarları (UFW):
Eğer UFW kullanıyorsanız, Elasticsearch (9200) ve Kibana (5601) portlarına dışarıdan erişime izin vermeniz gerekebilir:
sudo ufw allow 9200/tcp
sudo ufw allow 5601/tcp
sudo ufw enable
Artık bir web tarayıcısı üzerinden http://:5601 adresine giderek Kibana arayüzüne erişebilirsiniz.
Packetbeat Kurulumu ve Yapılandırması
Şimdi sıra, ağ metriklerini toplayacak olan Packetbeat’i kurmaya geldi. Packetbeat’i, izlemek istediğiniz sunucuya (bu rehberde Ubuntu 16.04) kurmalısınız.
Packetbeat Kurulumu
Packetbeat de Elastic Stack’in bir parçası olduğu için, daha önce eklediğimiz Elastic deposunu kullanabiliriz.
1. Packetbeat’i kurun:
sudo apt update
sudo apt install packetbeat -y
Packetbeat Yapılandırması
Packetbeat’in yapılandırma dosyası /etc/packetbeat/packetbeat.yml konumundadır. Bu dosyada Packetbeat’in hangi ağ arayüzlerini dinleyeceğini, hangi protokolleri analiz edeceğini ve verileri nereye göndereceğini belirtiriz.
1. Yapılandırma dosyasını düzenleyin:
sudo nano /etc/packetbeat/packetbeat.yml
2. Temel yapılandırma:
Aşağıdaki önemli bölümleri dikkatlice yapılandırmamız gerekiyor:
* packetbeat.interfaces: Packetbeat’in hangi ağ arayüzünü dinleyeceğini veya tüm arayüzleri dinlemesini sağlar. device: any tüm arayüzleri dinler.
# /etc/packetbeat/packetbeat.yml
Ağ arayüzleri
packetbeat.interfaces:
- device: any # Tüm arayüzleri dinle
# snapshot_length: 1514 # Opsiyonel: Paketlerin ne kadarının yakalanacağını belirler
# type: af_packet # Linux için önerilen yakalama mekanizması
* packetbeat.protocols: Packetbeat’in analiz edeceği protokolleri etkinleştirin. Bu kısım, toplamak istediğiniz metriklerin türünü doğrudan etkiler. Örneğin, HTTP istek sürelerini, DNS sorgu tiplerini veya MySQL sorgu gecikmelerini izleyebilirsiniz.
# HTTP protokolünü etkinleştir
packetbeat.protocols.http:
ports: [80, 8080, 8000, 5000, 8002] # İzlenecek HTTP portları
DNS protokolünü etkinleştir
packetbeat.protocols.dns:
ports: [53]
TLS/SSL protokolünü etkinleştir (HTTPS için)
packetbeat.protocols.tls:
ports: [443]
MySQL protokolünü etkinleştir
packetbeat.protocols.mysql:
ports: [3306]
PostgreSQL protokolünü etkinleştir
packetbeat.protocols.pgsql:
ports: [5432]
Redis protokolünü etkinleştir
packetbeat.protocols.redis:
ports: [6379]
İhtiyaçlarınıza göre diğer protokolleri de etkinleştirebilirsiniz. Her protokol için ports ayarını dikkatlice kontrol edin.
* output.elasticsearch: Verilerin gönderileceği Elasticsearch sunucusunun adresi.
# Çıktı ayarları: Verileri Elasticsearch'e gönder
output.elasticsearch:
hosts: [":9200"] # Elasticsearch sunucunuzun IP'si
# username: "elastic" # Eğer Elasticsearch'te kimlik doğrulama etkinse
# password: "changeme"
ELASTICSEARCH_IP_ADRESI yerine Elasticsearch sunucunuzun gerçek IP adresini yazın.
* setup.kibana: Packetbeat’in önceden tanımlanmış Kibana panolarını ve indeks şablonlarını yükleyebilmesi için Kibana sunucusunun adresi.
# Kibana ayarları: Panoları yüklemek için
setup.kibana:
host: ":5601" # Kibana sunucunuzun IP'si
# username: "kibana_system" # Eğer Kibana'da kimlik doğrulama etkinse
# password: "changeme"
KIBANA_IP_ADRESI yerine Kibana sunucunuzun gerçek IP adresini yazın.
* setup.template.settings: Küçük ölçekli kurulumlar için indeks şard sayısını ayarlamak faydalı olabilir.
# İndeks şablonu ayarları
setup.template.settings:
index.number_of_shards: 1
# index.codec: best_compression
3. Yapılandırmayı test edin:
sudo packetbeat test config -e
sudo packetbeat test output
Her iki komut da herhangi bir hata döndürmemeli ve başarıyla tamamlandığını belirtmelidir.
4. Packetbeat’i başlatın ve etkinleştirin:
sudo systemctl start packetbeat
sudo systemctl enable packetbeat
Packetbeat artık ağ trafiğini yakalıyor ve yapılandırılan protokollere göre analiz ederek verileri Elasticsearch’e gönderiyor olmalıdır.
Verilerin Görselleştirilmesi
Packetbeat verileri Elasticsearch’e akmaya başladıktan sonra, bu verileri Kibana’da keşfetmek ve görselleştirmek için adımlar atmamız gerekiyor.
Kibana’da İndeks Şablonlarını ve Panoları Yükleme
Packetbeat, Kibana için önceden tanımlanmış indeks şablonları, ingest pipeline’ları ve panolarla birlikte gelir. Bunları yüklemek, başlangıç için büyük kolaylık sağlar. Bu işlemi Packetbeat’in kurulu olduğu sunucudan veya Kibana’ya erişimi olan herhangi bir sunucudan yapabilirsiniz:
sudo packetbeat setup -e
Bu komut, Packetbeat’in Elasticsearch’e indeks şablonunu ve Kibana’ya örnek panoları yüklemesini sağlar. setup komutunun başarıyla tamamlandığını görmelisiniz.
Kibana Arayüzünde Keşif
1. Kibana’ya erişin: Bir web tarayıcısı açın ve http://:5601 adresine gidin.
2. İndeks deseni oluşturma: Sol menüden “Management” (Yönetim) -> “Index Patterns” (İndeks Desenleri) bölümüne gidin. Eğer packetbeat setup komutunu çalıştırdıysanız, packetbeat- deseni zaten oluşturulmuş olabilir. Eğer değilse, packetbeat- yazıp oluşturun ve zaman damgası alanı olarak @timestamp‘ı seçin.
3. Verileri keşfedin: Sol menüden “Discover” (Keşfet) bölümüne gidin. Burada Packetbeat tarafından toplanan ham verileri görebilirsiniz. Zaman aralığını sağ üst köşeden “Last 15 minutes” (Son 15 dakika) veya “Last 1 hour” (Son 1 saat) olarak ayarlayarak en güncel verilere odaklanabilirsiniz. Gelen verilerde http.request.method, dns.question.name, tls.server.subject_cn gibi alanları görmelisiniz.
Önceden Tanımlanmış Panoları Kullanma
packetbeat setup komutu ile yüklenen panoları kullanmaya başlayabilirsiniz.
1. Panolara erişim: Sol menüden “Dashboard” (Pano) bölümüne gidin.
2. Packetbeat panolarını seçin: Arama kutusuna “Packetbeat” yazarak Packetbeat’e özel panoları filtreleyebilirsiniz. Örneğin, “Packetbeat Overview” veya “Packetbeat HTTP” panolarını açarak ağ trafiğiniz hakkında genel bir bakış veya HTTP trafiğinizin detaylı analizini görebilirsiniz. Bu panolar, ağdaki en çok konuşanları, HTTP yanıt sürelerini, DNS sorgu oranlarını ve daha birçok metrikleri hazır bir şekilde sunar.
Özel Görselleştirmeler Oluşturma
Kibana’nın “Visualize” (Görselleştir) veya “Lens” (Mercek) araçlarını kullanarak kendi özel görselleştirmelerinizi ve panolarınızı oluşturabilirsiniz.
1. Yeni bir görselleştirme oluşturma: Sol menüden “Visualize” bölümüne gidin ve “Create new visualization” (Yeni görselleştirme oluştur) düğmesine tıklayın.
2. Örnek: HTTP yanıt sürelerini gösteren bir çubuk grafik:
* Bir “Vertical Bar” (Dikey Çubuk) grafik türü seçin.
* Y-ekseni (Metrics) için “Average” (Ortalama) agregasyonu ile http.response.time.ns alanını seçin (nanosaniye cinsinden yanıt süresi).
* X-ekseni (Buckets) için “Terms” (Terimler) agregasyonu ile http.request.method veya http.response.status_code gibi bir alan seçebilirsiniz.
* Bu, hangi HTTP metodlarının veya durum kodlarının ortalama olarak ne kadar yanıt süresi aldığını gösterecektir.
3. Görselleştirmeyi kaydet ve panoya ekle: Oluşturduğunuz görselleştirmeyi kaydedin ve mevcut bir Packetbeat panosuna ekleyebilir veya yeni bir özel pano oluşturabilirsiniz.
Bu sayede, altyapınızdaki ağ metriklerini derinlemesine inceleyebilir, performans sorunlarını hızla tespit edebilir ve ağ trafiğinizin davranışını anlayabilirsiniz.
Sonuç ve Sıkça Sorulan Sorular (SSS)
Bu rehberde, Ubuntu 16.04 üzerinde Packetbeat ve ELK Stack’i kullanarak altyapı metriklerini nasıl toplayacağınızı, depolayacağınızı ve görselleştireceğinizi öğrendiniz. Packetbeat, ağ seviyesinde derinlemesine görünürlük sağlayarak, uygulamalarınızın ve servislerinizin gerçek zamanlı performansını izlemenize olanak tanır. ELK Stack ile birleştiğinde, bu verileri merkezi bir konumda toplayarak, güçlü analizler yapabilir ve Kibana’nın zengin görselleştirme yetenekleriyle anlamlı panolar oluşturarak karar verme süreçlerinizi destekleyebilirsiniz. Bu kurulum, ağ sorunlarını gidermek, güvenlik tehditlerini tespit etmek ve genel sistem sağlığını proaktif olarak yönetmek için sağlam bir temel sunar.
Sıkça Sorulan Sorular (SSS)
1. Packetbeat hangi protokolleri izleyebilir?
Packetbeat, HTTP, HTTPS (TLS), DNS, MySQL, PostgreSQL, Redis, MongoDB, ICMP ve daha birçok yaygın uygulama protokolünü izleyebilir. Yapılandırma dosyasında (packetbeat.yml) istediğiniz protokolleri etkinleştirerek izleme kapsamını genişletebilirsiniz.
2. Packetbeat’i sadece belirli bir ağ arayüzünde çalıştırabilir miyim?
Evet, packetbeat.interfaces bölümünde device: any yerine belirli bir ağ arayüzünün adını (örneğin, device: eth0) belirterek Packetbeat’i yalnızca o arayüzde çalıştırabilirsiniz.
3. Veriler Elasticsearch’e ulaşmıyorsa ne yapmalıyım?
* Packetbeat servisi çalışıyor mu kontrol edin: sudo systemctl status packetbeat.
* Packetbeat yapılandırma dosyasını (/etc/packetbeat/packetbeat.yml) kontrol edin, özellikle output.elasticsearch bölümündeki Elasticsearch IP adresi ve portunun doğru olduğundan emin olun.
* Elasticsearch sunucusunun çalışır durumda olduğundan ve 9200 portunun açık olduğundan emin olun.
* Packetbeat’in hata günlüklerini kontrol edin: sudo journalctl -u packetbeat.
* Firewall (UFW) kurallarını kontrol edin. Packetbeat’in Elasticsearch’e 9200 portundan erişebilmesi gerekir.
4. Packetbeat sistem kaynaklarını ne kadar tüketir?
Packetbeat oldukça hafiftir, ancak kaynak tüketimi izlenen ağ trafiğinin yoğunluğuna ve etkinleştirilen protokollerin sayısına bağlıdır. Yüksek trafikli ortamlarda CPU ve bellek kullanımı artabilir. top veya htop gibi komutlarla Packetbeat sürecini izleyebilirsiniz. Gerekirse packetbeat.interfaces.snapshot_length değerini düşürerek yakalanan paket boyutunu sınırlayabilir veya daha az protokolü izleyebilirsiniz.
5. Ubuntu 16.04 yerine başka bir dağıtımda çalışır mı?
Evet, Elastic Stack ürünleri (Packetbeat, Elasticsearch, Kibana) çeşitli Linux dağıtımlarında, Windows ve macOS üzerinde çalışabilir. Kurulum adımları ve paket yöneticileri farklılık gösterse de, yapılandırma mantığı genellikle aynıdır.
6. Güvenlik konusunda nelere dikkat etmeliyim?
* Ağ Erişimi: Elasticsearch ve Kibana’ya dışarıdan erişimi IP bazında kısıtlamak için firewall (UFW) kullanın.
* Kimlik Doğrulama: Üretim ortamlarında Elasticsearch ve Kibana için kullanıcı adı/şifre tabanlı kimlik doğrulama ve yetkilendirme (X-Pack Security) kullanmayı düşünün.
* Veri Şifreleme: Hassas veriler aktarılıyorsa TLS/SSL ile iletişimi şifreleyin.
* Packetbeat Yetkileri: Packetbeat ağ arayüzlerini dinlemek için root yetkilerine veya CAP_NET_RAW yeteneğine ihtiyaç duyar. Güvenlik açısından, Packetbeat’i ayrıcalıklı olmayan bir kullanıcı olarak çalıştırmak ve yalnızca gerekli yetkileri vermek tercih edilir.
