Merhabalar,
Bu makalede, endüstri standardı sFlow protokolünü kullanarak, sunucuları uzaktan izlemek için açık kaynaklı Host sFlow aracını yükleme ve yapılandırma yönergelerini aktaracağım. SFlow-RT gerçek zamanlı analizörü, sFlow telemetrisinin yeteneklerini göstermek için kullanılmaktadır.
sFlow Nedir?
Host sFlow aracısı, sFlow protokolünü kullanarak fiziksel ve sanal sunucu performans metriklerini dışa aktarır. İzlenmekte olan sistemler üzerinde minimum etki ile, ölçeklenebilir-Çoklu üretici-Çoklu işletim sistemi için performans izleme sağlar.
Sunucu performansı izlemeye yönelik mevcut yaklaşımlar, oldukça çeşitli mekanizmalardan oluşur. Her işletim sistemi üreticileri, sunucu satıcısı ve uygulama geliştiricisi, performans izleme için geliştirdikleri kendi araçları ve yazılımları, birlikte çalışmaya uyumlu olmayabilirler.
Ağ oluşturmada, standartlar ve birlikte çalışabilirlik son derece önemlidir. Dolayısıyla, ölçeklenebilir, çok satıcılı ağ performansı izleme sorunları da, bu uyumluluk sayesinde çözülebilir.
Birçok network ekipmanı satıcısı, sFlow standardını destekler ve ağ yöneticilerinin çok çeşitli açık kaynaklı ve ticari ağ yönetimi uygulamaları arasından seçim yapmalarına olanak tanıyarak, ürünlerine performans izlemeyi de entegre eder.
Network, sanallaştırma ve bulut bilişim, ağ ve sistem yönetimi arasındaki çizgiyi biraz bulanıklaştırır. Çünkü birlikte çalışma ve uyum, tam anlamıyla çözülememiş olabilir. Örneğin sanal makineler, network’e bir yazılımsal sanal switch aracılığıyla bağlanır. Bu sanal switch”leri izlemek için sunucuda çalışan bir sFlow agent gerekir. Böyle ortamlardaki performans değerlerini alabilmemiz için hem ağ hem de sunucu kaynaklarını izlemeniz gerekir ve sFlow standardı da, bize fiziksel ve sanal sunucu performans metriklerini aktarmış olur.
Host sFlow projesi, sunucu performansı hakkında rapor vererek, sFlow standardının açık kaynaklı bir uygulamasını sağlar. Sunuculardaki performans verilerinin ve switch’lerden gelen network performans verilerinin birleşimi, birleştirilmiş ortamlardaki performansın tam bir resmini bize sağlamış olur.
sFlow, birleştirilmiş-sanallaştırılmış-bulut veri merkezleri gibi ortamlardan gelecek performans değerlerinin, uçtan uca görünümünü sağlamak için gereken araç sayısını azaltarak, ağ ve sistem yönetimi için ortak bir standart sağlamış olur.
Desteklen işletim sistemleri:
- AIX
- FreeBSD
- Linux
- Solaris
- Windows
Desteklenen Linux container’lar:
- Docker
- Systemd
Desteklenen hypervisorler:
- Hyper-V
- KVM/libvirt
- Nutanix AHV
- Xen/XCP/XenServer
Desteklenen switch’ler:
- Arista EOS
- Cumulus Linux
- Dell OS10
- OpenSwitch
- SONiC
Host sFlow indirme sayfasında en son Host sFlow sürümünü bulabilirsiniz.
Kurulum için, root kullanıcımızla SSH üzerinden sunucumuza bağlanıyoruz ve aşağıdaki komutları uyguluyoruz.
cd /tmp
wget https://github.com/sflow/host-sflow/releases/download/v2.0.26-3/hsflowd-centos8-2.0.26-3.x86_64.rpm
rpm -i hsflowd-centos8-2.0.26-3.x86_64.rpm
systemctl enable hsflowd
Yukarıdaki komutlar yazılımı indirir ve kurar. Sonrasında da hsflowd servisini enable etmiş oluyoruz.
NOT: Minimal kurulumda wget komutu bulunmayabilir. Dolayısıyla yukarıdaki wget komutu hata ile sonuçlanır. Bunun için wget komutunun kurulumunu yapmanız ve komutları yeniden uygulamanız gerekmektedir.
dnf install wget -y
Linux için Host sFlow’u yapılandırma
Hipervizörleri, VM’leri, Konteynerleri, uygulamaları ve ağ trafiğini farklı şekillerde izlemek için bir dizi seçenek vardır.
/etc/hsflowd.conf aracılığıyla bu ayarlarımızı yapabiliyoruz.
nano /etc/hsflowd.conf
hsflowd.conf dosyası içindeki işaretlediğim alana, aşağıdaki satırları yazıyoruz ve dosyayı kaydederek çıkış yapıyoruz. # ile başlayan satırlar açıklama satırları olduğu için herhangi birşey yapmanıza gerek yok. İsterseniz komple de silebilirsiniz. Fakat daha sonradan farklı parametreler eklemek istediğinizde, elinizde örnek olması açısından, satırları silmeden önce dosyanın yedeğini alın. IP adresi olarak, bu kurulumu yaptığımız merkezi yönetim sunucusunun IP adresini yazıyoruz.
sflow {
collector { ip=20.20.20.126 }
pcap { speed=1G-1T }
tcp { }
systemd { }
}
Yukarıdaki örnek, 20.20.20.126 Collector’üne sFlow datasını gönderir, tüm ağ bağdaştırıcılarında paket örneklemeyi etkinleştirir, TCP performans bilgilerini ekler ve Linux hizmetleri için metrikleri dışa aktarır.
hsflowd servisimizi de restart ediyoruz.
systemctl restart hsflowd
Servis durumunu kontrol edelim.
systemctl status hsflowd
Alternatif olarak, DNS etki alanı üzerinde denetiminiz varsa, sFlow collector adreslerinin yayın yapılması için DNS SRV kayıtlarını kullanabilirsiniz.
Aşağıdaki örnekte, isleyen.net etki alanı için bu dosya düzenlemesi yapılmıştır.
sflow {
dns-sd { domain=.isleyen.net }
pcap { speed=1G-1T }
tcp { }
systemd { }
}
Collector merkezi sunucumun adı : sflow.isleyen.net
DNS Zone kayıtlarının, sFlow öğelerini sflow.isleyen.net adresine yönlendirmesi için ise, aşağıdaki kayıtlar örnek olarak kullanılabilir. Collector’ü değiştirirseniz, tüm Host sFlow agent’ları, değişikliği 60 saniye içinde alır (SRV girişinde belirtilen yaşam süresi 60 tanımlandığı için)
sflow A 20.20.20.126
_sflow._udp 60 SRV 0 0 6343 sflow
Şimdi Host sFlow aracısını yapılandırıldığımıza göre, 20.20.20.126 sunucusuna bir de sFlow collector kurma aşamasına geçebiliriz.
sFlow collector kurulumu
Öncelikle Java’yı yüklemesini yapmalıyız. Aşağıdaki komutla bu yüklemeyi yapabiliriz.
dnf install java-11-openjdk-headless
Ardından, tarama metrikleri, tarama akışları ve prometheus uygulamalarıyla birlikte, sFlow-RT’nin en son sürümünü yüklüyoruz.
LATEST=wget -qO - https://inmon.com/products/sFlow-RT/latest.txt
wget https://inmon.com/products/sFlow-RT/sflow-rt-$LATEST.noarch.rpm
rpm -i sflow-rt-$LATEST.noarch.rpm
/usr/local/sflow-rt/get-app.sh sflow-rt browse-metrics
/usr/local/sflow-rt/get-app.sh sflow-rt browse-flows
/usr/local/sflow-rt/get-app.sh sflow-rt prometheus
systemctl enable sflow-rt
systemctl start sflow-rt
Son olarak, firewall üzerinden sFlow ve HTTP isteklerine izin veriyoruz.
SFlow-RT web arayüzüne erişmek için http://sunucu_IP:8008/ adresine bağlanıyoruz. Bu sayfa, sFlow öğelerinin alındığını doğrulamış oluyor.
Aşağıdaki komut, tüm sunucular için Prometheus dışa aktarma biçimindeki metrikleri alır.
curl http://20.20.20.126:8008/prometheus/metrics/ALL/ALL/txt
Prometheus veya InfluxDB’yi, metrikleri düzenli olarak almak ve yedeklemek için yapılandırın.
Buraya kadar yaptığımız işlem, performans metriklerini toplayan merkezi sunucuyu kurmak oldu. Peki agent kullanarak, başka sunuculardan performans değerlerini nasıl toplayabiliriz?
Şimdi bir agent örneği yapalım.
sFLOW agent kurulumu
Başka bir minimal linux sunucu kuruyorum ve sadece yukarıda açıkladığım bölümlerdeki host flowd kurulum ve konfigürasyon adımlarını gerçekleştiriyorum.
cd /tmp
wget https://github.com/sflow/host-sflow/releases/download/v2.0.26-3/hsflowd-centos8-2.0.26-3.x86_64.rpm
rpm -i hsflowd-centos8-2.0.26-3.x86_64.rpm
systemctl enable hsflowd
/etc/hsflowd.conf aracılığıyla bu ayarlarımızı yapabiliyoruz.
nano /etc/hsflowd.conf
hsflowd.conf dosyası içine aşağıdaki satırları yazıyoruz ve dosyayı kaydederek çıkış yapıyoruz.
sflow {
collector { ip=20.20.20.126 udpport=6343 }
pcap { speed=1G-1T }
tcp { }
systemd { }
}
Bu dosya içinde, “collector IP” olarak, merkezi sunucumuzun IP adresini ve port numarasını tanımlıyoruz.
hsflowd servisimizi de restart ediyoruz.
systemctl restart hsflowd
Servis durumunu kontrol edelim.
systemctl status hsflowd
Web Browser’a dönüp dashboard’a baktığımızda, artık agent sayımızın 2 olduğunu görebiliyoruz.
Peki bu verileri nasıl takip edebiliyoruz?
Apps sekmesine geçiyoruz ve örneğin browse-metrics seçimi yapıyoruz.
Buradaki filtreleri kullanarak, ilgili agent üzerindeki çeşitli verileri gerçek zamanlı görebiliyor durumda olacağız.
Sistemi kurduktan sonra, istediğiniz sunucular üzerine, agent deploy ederek, kendi ortamınıza göre bir monitoring sistemi geliştirebilirsiniz. Uygulama arayüzü gayet basit ve birkaç deneme ile kolaylıkla sistemi kullanabilir duruma gelebilirsiniz.
Daha detaylı bilgilere bu linkten ulaşabilirsiniz.
Yararlı olması dileğiyle.
Yusuf İşleyen