8 Haziran 2015 Pazartesi

Bir web servisinin uçtan uca izlenmesi

Merhaba,

Bu yazımızda uçtan uca bir web hizmetini nasıl monitor edeceğimizi inceleyeceğiz.

Web hizmeti birkaç katmandan oluşmaktadır. Bunların hepsinin ayrı ayrı monitor edilip bir servis yapısı altında birleştirilmesinde fayda vardır. Web sitesinin performanslı ve kaliteli yayınlanabilmesi için ilişkili olduğu tüm altyapı ve uygulama platformlarının izlenmesi gerekir.




Özellikle e-ticaret ve yayın yapan web platformlarında birkaç dakikalık kesinti yada servis yavaşlaması büyük kayıplara sebep olmaktadır. Bu anlamda proaktif olmak büyük önem taşımaktadır.

Örnek olarak java ile geliştirilmiş ve linux ortamında hizmet veren bir web servisini ele alırsak neleri izlemeliyiz ?



[ Uygulama Sunucuları İzleme (İşletim sistemi, donanım, uygulamalar) ]

  • Sunucu :
            -Linux proses izleme
            -Linux partition ve klasör yapısı izleme
            -Linux dosya yapısı, değişikliklerin izlenmesi
            -Portların izlenmesi
            -CPU, RAM, Disk, Buffer, Interface, Availibity, Reachibility, Disk I/O... izleme
            -Sistem log izleme. Syslog izleme.
  • Uygulama : 
            -J2EE & Java & JVM Component Performans, JMX, Beans...
            -Uygulama Sunucu İzleme : SilverStream, GlassFish,WebSphere,Weblogic, JBOSS, Tomcat              
            -Apache monitor : CPU Load, Uptime, Total Access, BytesPerSecond, BusyWorkers, Idle
             Workers...
            -Uygulama log izleme. Syslog ve uygulamaya özel log klasörlerinin izlenmesi.

[ Veritabanı İzleme ]

  • Availibity & Reachibility
  • Sunucu proses izleme
  • Sunucu CPU, RAM, Disk, Buffer, Interface, Availibity, Reachibility, Disk I/O... izleme
  • Veritabanı login kontrolleri
  • SQL Query Monitor
  • Komponentler : 
            -Connection Time,
            -Request Ststistics,
            -Connection statistics,
            -Thread Details,
            -Table Lock Statistics,
            -Key Efficiency,
            -Query Hit Ratio,
            -Query Cache Hitrate,
            -Replication Details,
            -Active Sessions,
            -Invalid Objects,
            -Waiting Sessions,
            -User Wait Time,
            -Archive Area Used,
            -Consistant Read Changes,
            -Broken Job Count,
            -Average File Read Time,
            -Average File Write Time,
            -Response Time Per Call


[ Network & Security Monitoring ]

  Web sunucularından başlayarak dışarıya yayının çıktığı son noktaya kadar tüm network ve güvenlik   cihazları izlenmelidir.

[ DNS & FTP Monitoring ]

[ Sanal sunucu var  ise Virtualization Monitoring ]

  VM hostların performans metriklerinin izlenmesi.

[ Synthetic Enduser Monitoring ]
  • Lokal networkden kullanıcı deneyimi (Sentetik kullanıcı) ile web sayfası performansının ölçülmesi. Availibity, Response Time, Sayfa yüklenme süresi, Web transaction izlenmesi.
  • Uzak ağdan (Ofislerden, farklı şehirlerden, farklı ülkelerden) kullanıcı deneyimi (Sentetik kullanıcı) ile web sayfası performansının ölçülmesi. Availibity, Response Time, Sayfa yüklenme süresi.
  • Login testi.
[ Real User Monitoring ]

Kullanıcıların verilen hizmet ile gerçek etkileşimi ve hizmeti kullanırken nasıl tepki gösterdiğini izleyin. Böylece ziyaretçilerin işlem yapma sürelerinin ölçülmesi, uygulama problem çözümü için ziyaretçinin nereye tıkladığının tespiti gibi faaliyetleri hızlıca gerçekleştirin. Sıkıntı olduğunda kullanıcıya düzgün hizmet verilemiyorsa iş süreçlerinde nerde tıkanıklık olduğunu tespit edin.

Http/s, FTP, SMTP, SQL, POP3, IMAP, UDP, MQ, LDAP, Citrix ICA... gibi protokolleri kullanan pek çok uygulama için kullanılabilir.

[Web Content Monitoring ]

Web sayfasının içeriğinin tarayıcıda gelip gelmediğinin yada olması şart bir içeriğin sayfada olup olmadığının kontrolü.

[ PCI-DSS Monitoring ]

Eğer web sitesi üzerinden e-ticaret yapılıyor ise PCI-DSS (Payment Card Industry - Data Security Standarts) uyumlulukları konusunda izleme yapılması da gerekecektir.



  • Logon Attempts - Radius, RDP logon activity
  • File access, file creation, deletion, modify
  • Failed logins
  • Admin priviledge user changes on systems
  • Domain policy changes
  • Permission changes
  • Configuration file changes
  • Log monitoring, Who accessed and viewed, modified logs...
  • Monitoring access to cardholder data and network resources.

Teşekkürler,
Cem Selmanoğulları

Hap Bilgi : Snmp GET vs Snmp Trap

Snmp GET vs Snmp Trap...

Snmp GET metodu izleme sunucusu tarafından kullanılır. Belli periyodlarda izlenecek cihaza gidilip snmp monitor verisi alınır.

Snmp TRAP ise monitor verisini içeren bilgilerin izlenen cihaz tarafından izleme sunucusuna gönderilmesini sağlar.

Peki hangisini nerede kullanacağız ? Geçmişe yönelik düzenli data tutacak iseniz Snmp GET kullanabilirsiniz. Örneğin CPU değerini 3 dakikada bir izleyip geriye dönük CPU değeri grafiği çıkarabilirsiniz. Ayrıca CPU belli bir değeri geçtiğini alarm üretebilirsiniz.

Peki 3 dakikada bir sorgularken 2 dakikalık CPU yükselmesini nasıl yakalarsınız ? İşte bu durumda Snmp TRAP devreye giriyor. Üzerinde snmp agent içeren cihaz CPU yükselmesini tespit ettiğinde Snmp TRAP gönderir, izleme sunucusu Alarm üretir.

Bir örnek de interface kontrolü için verilebilir. İzlenen cihazlarda bir interface down olduğunda cihaz Snmp TRAP gönderecektir. Fakat Snmp GET ile her sorguladığınızda down olan interface i yakalayamayabilirsiniz.

Saatlerle detaylı açıklar isek;

5 dakikada bir bir interface i kontrol ediyorsak,

............................17:10   -   17:15   -  17:20   -   17:25................... saatlerinde interfaceler Snmp GET ile kontrol edilecektir. Eğer bir interface 17:16 - 17:19 arasında down olup sonra up olursa izleme yapan cihaz Snmp GET sorgusu ile bunu yakalayamayacaktır. Bunu yakalamanın kesin yolu 17:16 ve 17:19 saatlerinde cihaz tarafından gönderilen Snmp TRAP olacaktır.

Teşekkürler,
Cem Selmanoğulları

Hap Bilgi : Snmp Trap ve Syslog...

Merhaba,

Benzer amaçlarla kullanılan iki izleme metodolojisinden biraz bahsetmek istiyorum.

Hangisini kullanmalıyım ? Snmp Trap mi ? Syslog mu  ?

Performans parametreleri, iyi tanımlı hatalar, up/down durumları ve temel event-incident management için SNMP Trap yeterli olacaktır.

Daha derinlemesine bilgi alabilmek, cihazlar arası yada kullanıcı cihaz işlemlerini troubleshoot edebilmek için syslog  kullanmak mantıklı olacaktır.

Daha somut bir örnek vermek gerekirse HSRP durum değişiklikleri anında cihaz SNMP Trap fırlatacaktır. HSRP durum değişikliğinin nedenini troubleshoot etmek için ise daha derinlemesine bilgiye ihtiyaç olacağı için syslog dan yararlanılabilecektir.

Sunucularda yapılan monitoring işlemlerinde syslog mesajlarından uygulama derinliğinde bilgi almak da mümkün olacaktır.

"Cisco 6500 serisi bir cihaz için yapılan araştırmada standart bir snmp mib i için 90 civarı snmp trap e karşılık 6000 civarı syslog tanımlanabildiği görülmektedir."

[ Bkz : http://www.cisco.com/c/en/us/products/collateral/services/high-availability/white_paper_c11-557812.html#wp9000392 ]

Kısacası Syslog ile SNMP Trap lerden çok daha granüler bilgi alıp troubleshoot yapmak mümkündür.

Teşekkürler,
Cem Selmanoğulları














27 Mayıs 2015 Çarşamba

NetBrain ile IT-Network izleme, otomasyon ve değişiklik yönetimi

Merhaba,

Son günlerde dikkatimi çeken NetBrain ürünü network otomasyon, troubleshoot ve change management konularına yeni bir bakış açısı getiriyor.



Network mühendisleri, çoğu ürünün görsel arayüzlerini kullanıcı dostu güvenilir bulmamaktadır. Görünüşe bakılırsa NetBrain bu bakışı yıkacak bir yaklaşım sunuyor. Model güdümlü arayüz sunan NetBrain network mühendisleri için geliştirilmiş güçlü bir CAD  (Computer-Aided Design) ve modelleme aracı olarak da ön plana çıkıyor. Networkünüzü keşfini takiben oluşturduğu interaktif topoloji haritaları ile yönetim ve troubleshoot operasyonlarını kolaylaştırıyor.

Peki NetBrain networkümüzü nasıl öğreniyor ?

SNMP, SSH/Telnet protokolleri ile tüm networkünüzden topladığı bilgileri ‘neighbor-walking’ keşif algoritması ile harmanlamaktadır. Binlerce snmp verisi ve ssh komut çıktısını birleştirerek networkünüzün matematiksel ve mantıksal tanımını elde eder. Sonrasında rendering işlemleri ile dinamik haritalar oluşturulur.

Bunu yaparken hangi bilgiler kullanılıyor ?

NetBrain cihazlardan routing tabloları, CDP ve ARP tablolarını, MAC adreslerini, STP bilgilerini ve daha pekçok veriyi ssh komutları ve snmp ile alıp harmanlamaktadır. Oluşturulan haritalar dinamik olup network değişiklikleri haritalara dinamik olarak yansıtılır. Ayrıca uçtan uca L3 ve L2 haritalar oluşturmak da mümkündür. Haritalar Visio ya atılarak çıktı alınabilir. Dinamik haritaları yanlızca topolojik görseller olarak düşünmeyin. Harita üzerindeki her cihaz ile etkileşime geçerek cihazları yönetebilir, torubleshoot ve change management işlemlerini yürütebilirsiniz. Burda yapılan operasyona görsel torubleshoot demek yanlış olmaz. Harita üzerinde cihazların canlı performans metriklerine ve geçmiş networksel değişimlere ulaşmak mümkündür.

Yavaş çalışan bir uygulamanın troubleshoot edildiği bir senaryoda uygulamanın network üzerinde uçtan uca akışını görsel olarak çıkarmak mümkündür. NetBrain bu konudaki çözümünü “Map+App” olarak isimlendirmektedir. Çoğu zaman yavaşlık problemleri network bölümlerine mal edilmekte ve bunu ispatlamak uzun zaman almaktadır. Map+App ile yaklaşımında sorunlu network segmentinin dinamik bir haritası çıkarılarak network performansı ile ilgili drill down işlemi yapılarak sorun tespiti yapılabilmektedir.

Altta kaynak ve hedef adresleri belirtilen bir uygulama için real-time akışı görebilirsiniz.



Ürün uygulama trafiğinin asimetrik olduğu durumları da hesaplayabilmektedir. Yani bir A noktasından B noktasına takip edilen akış dönüşte farklı bir yol takip ediyor ise bu iki farklı yolu ayrı ayrı incelemek mümkündür.




Ürün CLI kullanmadan torubleshoot a izin veren modüller içermektedir. Örnek vermek gerekirse “Layer-4 Port Level Analysis App” uçtan uca istediğiniz network yolunu çizerek anlık olarak nerede tıkanıklık olduğunu gösterir. Web yayını yapan sunucunuza http ile ulaşabiliyor fakat ftp ile ulaşamıyorsunuz. Aradaki yolda 10 a yakın network cihazı var. Ürün ACL, QoS, NAT gibi kontrolleri yaparak uçtan uca inceleme ile takılan noktayı bulur. Altta ACL konfigürasyonu yüzünden takılan Telnet ile ilgili bir örneği görebilirsiniz. LA-Core1-Demo cihazında f1/0/1 yanlış tanımlanan bir ACL sebebi ile bu cihazda Telnet geçişi bloklanmıştır. Bu tespit hiçbir manuel CLI komutu girmeden yapılmıştır.



Trafikteki günlük yada haftalık değişimleri görebilmek ister miydiniz ? Ürün bu konuda da oldukça fonksiyonel özellikler sunmaktadır. Son zamanlarda yapılan konfigürasyon değişiklikleri yada route değişimi sebebi ile bir uygulama performansında düşüş yaşanabilir. Bunun network kaynaklı mı uygulama kaynaklı mı olduğunu tespit için ilgili network segmentindeki değişimleri görmek gerekecektir. Bu noktada geçen hafta ile bu hafta arası iki nokta arası iletişimin hangi path üzerinden gerçekleştiğini çizdirerek nelerin değiştiğini görsel olarak tespit etmek oldukça kolaydır.



Ürünün Network Health uygulaması standart network uygulamalarında bulunan cihaz durumu, availibity, interface link performansı, delay, error, utilization gibi değerleri hem topoloji üzerinde hem interface bazlı hem de grafik olarak verebilmektedir.




Network mühendislerinin ihtiyaç duyduğu fakat bazı monitoring ürünlerinde beğenmediğim netflow analiz özelliği net brainde de bulunmakta.



Üründe kendi izleme modüllerini geliştirmeniz oldukça kolay. Örneğin “show processes cpu ” komutu çıktısından cpu değerini alıp buna treshold belirlemek ve treshold geçilince alarm üretmek oldukça kolay ve sürükle bırak şeklinde yapılabilmekte. Bunu kullandığınız her CLI komutu için 3 adımda yapmak mümkün. Ürün ssh ile cihaza bağlanıp belirlediğiniz komutu sizin adınıza girmekte ve çıktıda sizin önceden belirlediğiniz özellikler üzerinde arama yapmakta. Bulduğu değeri isteğinize uygun olarak yorumlamakta. Herhangi bir cihaza cli ile bağlanmadan harita üzerinden bu komutları çalıştırmanız yeterli. Ürün CLI alışkanlığına yeni bir bakış getiriyor. Putty yada SecureCRT ile cihaza bağlanayım ve komut yazayım yerine sağ tıkla komut çalıştır diyorsunuz…




Interface lerin durumlarını kontrol eden bir modül yazmanız yine mümkün.



















Layer-3 bir haritayı daha detaylı troubleshoot etmek için Layer-2 görüntüye çevirmeniz mümkündür. Dilerseniz yeni bir harita olarak oluşturabilir, dilerseniz var olan bir haritayı dönüştürebilirsiniz. “Bridge Network” görselleştirmek için güzel bir araç.



“WAN Congestion” yaşandığı durumlarda hızlı tespit için NetBrain real time topoloji haritası sunuyor. “Diagnostic Monitoring” ile Congestion yaşanan hatları göz önüne seriyor.



Herhangi bir network segmentinde kararsız bir durum oluşturuğunda canlı izleme özelliği ile o an segmentin durumunu görebilirsiniz. Hatayı netleştirmek için topladığınız data arttıkça rootcause bulma olasılığı da artacaktır. Flap eden yada down portları görsel olarak görebileceksiniz.



Belli bir segmente şüpheli bir tarfik akışı gördüğünüzde NetBrain segment ve çevresini görselleştirerek atak kaynağını ve etkilediği tüm ara ve hedef cihazları ortaya çıkarıp haritalandırabiliyor.




Gelelim NetBrain in en güzel özelliklerinden birine. Yukarıda belirlediğiniz şekilde bir atak yakaladığınızda NetBrain sizin yerinize önlem alabiliyor. Gerekli cihazlara bağlanıp statik bir route yazabiliyor yada ACL tanımlayabiliyor. Yani cihaz konfigürasyonlarını değiştirmek sureti ile atak yapan cihazı engelleyerek sizi bilgilendiriyor. Galiba otomasyonun geleceği bu…



Ürünün “Map-Driven Change Management” özelliği sayesinde birçok cihaza aynı anda QoS dizaynı dağıtılabiliyor.

Data Center içinde komplike bir değişiklik yapacaksınız. Dizayn ve konfigürasyon aşamasında yine NetBrain devreye giriyor. Network değişikliği planlayıp yeni dizanınızı ve konfigürasyonlarınızı hazırlıyorsunuz. NetBrain tüm değişiklilkeri cihazlara bağlanıp sizin adınıza yapıyor.
Değişiklikleri manuel yada otomatik yapın… Test etme aşamasında yine NetBrain den yararlanmanız mümkün. Erişilebilirlik testleri, CLI komut testleri, uygulama akış testleri, Routing tablosu değişiklik testleri gibi pek çok testi NetBrain e yaptırabiliyorsunuz. Data Center migration sonrası komple bir testi NetBrain sizin için yapsın.

Change Management modülü sayesinde bir yada daha fazla cihazda yapılacak konfigürasyon değişikliklerinin network üzerindeki etkileri görsel olarak izlenebilir, ok verildikten sonra otomatik olarak konfigürasyonlar NetBrain tarafından cihazlara yüklenebilir.

Ürün hakkında anlatılacak daha çok şey var. www.netbraintech.com sitesini ziyaret etmenizi öneririm. Sitede ürünün demo versiyonunu deneme şansınız da olacak. Ürünü geliştiren NetBrain firması 2004 yılında kurulmuş ve ana merkezi Massachussetts de bulunan bir yazılım firmasıdır. Kendilerini Network CAD özelliğini network dünyasına tanıtan ilk firma olarak tanımlıyorlar. Hemen hemen tüm yazılım eforlarını network yazılımlarına aktarmaktadırlar. British Telecom, Fidelity Investments, Thomson Reuters, IBM,HP,BP,NASA,at&t,Vodacom,verizon,US.Army, Texas Instruments gibi firmalar ürünü kullanmaktadırlar.

Teşekkürler,
Cem Selmanoğulları

2 Ocak 2015 Cuma

Web sayfası yüklenme performansını izleyen bir script (Perl)

Merhaba,

Perl ile web sayafalarının performansını izlemek için bir scripti paylaşmak istiyorum.
Web üzerinde bulduğum bir scripti değiştirip düzenleyerek alttaki hale getirdim.
Scriptimiz web sayfasını http protokolü ile ham kod halinde bilgisayarımıza indirecek ve işlemin başlaması ile bitişi arasındaki süreyi tutarak sayfanın nekadar sürede açıldığını (indirildiğini) bulacak.

Sayfanın indirilebilip indirilemediğine bakacak. İndirilebiliyor ise ham kodu ekrana basacak.

İndirme işlemi belirledigimiz sureden uzun sürüyor ise alarm oluşturacak.


#!/usr/local/bin/perl -w
use LWP::UserAgent;
use Crypt::SSLeay;
use HTTP::Cookies;
use HTTP::Headers;
use HTTP::Request;
use HTTP::Response;
use Time::HiRes 'time','sleep';
$browser = 'Mozilla/4.04 [en]';
$rooturl = 'http://www.myperltestportal.com/';
$cookie_jar = HTTP::Cookies->new;
$ua = LWP::UserAgent->new;
MAIN: {
 $ua->agent($browser);
 $latency = &get("index.php");
 if($response->content =~ m/404 Not Found/) {
    last;
 } else {
    if($latency > 0.5) {
         print "\n\nGECIKME VAR\n\n";
         last;
    } else {
         print "\n\nGECIKME YOK\n\n";
         last;
     }
 }
 sleep 5;
}
sub get {
 local ($path) = @_;
 $request = new HTTP::Request('GET', "$rooturl$path");
 if ($response) {
     $cookie_jar->extract_cookies($response);
     $cookie_jar->add_cookie_header($request);
 }
 $start = time(  );
 $response = $ua->request($request);
 $end = time(  );
 $latency = $end - $start;
if (!$response->is_success) {
      print $request->as_string(  ), " Basarisiz: ", $response->error_as_HTML;
 }
$GOSTER=OK;
  if($response->content =~ m/404 Not Found/) {
       print "\n\n*****\n\n404 ERROR\n\n*****\n\n";
  } else {
       if ($GOSTER eq "OK") {
             print "\n\nWEB SAYFASI DOSYA ICERIGI\n";
             print $response->content;
             print "\n###\n".$path." Dosyasi Kaynaktan Basari Ile Alindi \n\n###\n";
             print "\n".$path." Dosyasinin Yuklenmesi ".$latency."Surmustur.\n";
       }
 }
 $latency;
}


Linux / Unix sistemlerde disk doluluğunu izleyen bir script

Merhaba,

Linux makinelerde disk doluluğunu bulup belli bir yüzdenin altında ise alarm üreten bir script yazalım.


use strict;
use warnings;
use Filesys::
DiskSpace;


 # /log izlenecek
my $dir = "/log";

my $kritik_seviye=10;

# /log için df ciktisini alalim - burada ciktidaki tab ile ayrilmis kolonlar aliniyor - linux versiyonuna # gore degisiklik gosterebilir.
my ($fs, $fs_description, $used, $available, $filesystemused, $fmountedon) = df $dir;

# /log icin bos alan yuzdesini hesaplayalim
my $logfree = (($available) / ($available+$filesystemused)) * 100.0;


# display message
my $cikti = sprintf("$dir icin bos disk alani == %0.2f\n",$logfree);print $cikti;


if($logfree < $kritik_seviye{
    print "Alarm";
    #Bu asamada email yada sms gonderilebilir
}


Teşekkürler,
Cem Selmanoğulları

29 Aralık 2014 Pazartesi

UC4 Automic ve Puppet ile Otomasyon

Merhaba,

UC4 Automic ve Puppet altyapı otomasyon ürünlerinin birlikte kullanımı ile ilgili basit bir örneği kabaca şekillendirmeye çalışacağım.

Sabah saat 3:00 AM. Herkes uykuda. Aklınıza çılgın bir web projesi fikri geliyor. Uyku tutmuyor, hemen bir domain almalı ve projeye başlamalı...

Müşteri olarak siz istediğiniz domain ismi ve sunucu özelliklerini belirtmelisiniz ve sonrasında tek yapacağınız kredi kartı bilgilerinin sağlanması olmalı. Akabinde 20 dakika gibi kısa bir sürede sunucunuz ve domaininizin hazır olduğuna dair bir email ve sms alacak ve sitenizi yayınlamaya başlayacaksınız.

Nasıl ? Çok mu hızlı ? Eskiden 3 gün süren işlemlere göre gayet hızlı diyebiliriz.

Üstelik insan kaynaklı hatalar ve birşeylerin unutulması riskinden uzak.

Arka planda bunu kim yapıyor ? Tabiki UC4 ve Puppet gibi entegre çalışan otomasyon sistemleri.

Puppet güçlü bir altyapı otomasyonu sunarken işin workflow tarafını UC4 Automic hallediyor.

Bahsettiğim senaryonun workflow unu alttaki gibi şekillendirmek mümkün.

Kabaca belirttiğim Automic ve Puppet adımlarını detaylandırmak mümkün.


UC4 Automic tüm adımları paralel yada seri çalışacak şekilde sıralıyor ve belli koşullara ve önşartlara göre başka adımları tetikliyor. Bu tetiklenen adımlar Automic üzerinde yeni bir iş olabileceği gibi birçok işi içeren başka flowlar da olabilir. Gerekli durumlarda ise altyapı otomasyonunu üstlenen Puppet devreye giriyor ve kendine düşen görevleri tamamlayarak Automic in bir sonraki adımına hazır hale getiriyor.

Bu işleri yaparken, her iş bittikten sonra işin düzgün tamamlanıp tamamlanmadığını tespit eden adımları da Puppet yada Automic scriptleri ile yaparak Automic job larını beslemek mümkün.



28 Aralık 2014 Pazar

Perl ile XML dosyasından verileri parse edip HTML dosyası oluşturan basit bir script

Merhaba,

Basit bix XML dosyasından verileri alıp HTML dosyası oluşturan bir perl scripti paylaşmak istiyorum.

Öncelikle XML dosyasını alttaki şekilde fooxml.xml dosyası olarak oluşturalım.


  <config logfiles="/var/log/foologs/" debugfile="/tmp/foo.dbg" misc="mytest">
    <server name="ankara" osname="unix" osversion="2.6.5.3">
       <ipaddress>
             <address>10.1.0.101</address>
             <address>10.1.1.102</address>
       </ipaddress>
       <macaddress>
             <address>10:54:E5:12:43:A4:E2:21</address>
             <address>10:54:E5:12:45:A4:A4:41</address>
       </macaddress>
    </server>
    <server name="istanbul" osname="linux" osversion="6.6.5.3">
       <ipaddress>
            <address>10.16.0.105</address>
            <address>10.16.1.106</address>
      </ipaddress>
      <macaddress>
            <address>10:54:E5:12:43:A4:B2:31</address>
            <address>10:54:E5:12:43:E4:6Y:65</address>
      </macaddress>
    </server>
  </config>


Yukarıda gösterile XML dosyasını parse edecek scriptimizi perl ile oluşturacağız. Dosya ismi fooxmlparser.pl ve içeriği alttaki gibi olsun.



#!/usr/bin/perl

###Gerekli XML kutuphaneleri
  use XML::Simple qw(:strict);
  use Data::Dumper;

###XML dosyasini parse edip ekrana bastiralim
  my $config = XMLin("C:\\Otomasyon\\PerlXMLparser\\fooxml.xml", KeyAttr => { server => 'name' }, ForceArray => [ 'server', 'address' ]);

  print "Parse Edilecek XML Ciktisi : \n\**********\n";
  print Dumper($config);
  print "\n*************\n";

  ###Config icinde tanimli degerleri almaniz gerekirse alttakileri kullanabilirsiniz.###
  #print $config->{logdir};
  #print "\n";
  #print $config->{debugfile};
  #print "\n";
  #print $config->{misc};

###HTML dosyasina yazacagimiz degiskenlere atama yapalim

  my $srvankara="ankara";
  my $srvankaraip1 = $config->{server}->{ankara}->{ipaddress}->{address}->[1];
  my $srvankaramac1 = $config->{server}->{ankara}->{macaddress}->{address}->[1];
  my $srvistanbul="istanbul";
  my $srvistanbulip1 = $config->{server}->{istanbul}->{ipaddress}->{address}->[1];
  my $srvistanbulmac1 = $config->{server}->{istanbul}->{macaddress}->{address}->[1];
 
###HTML dosyasina yazacagimiz degiskenleri ayrica ekrana bastiralim
  print "Server : ANKARA\n\n";
  print "IP Address 1: ";
  print $config->{server}->{ankara}->{ipaddress}->{address}->[1];
  print "\n\n";
  print "MAC Address 1: ";
  print $config->{server}->{ankara}->{macaddress}->{address}->[1];
  print "\n";

  print "Server : ISTANBUL\n\n";
  print "IP Address 1: ";
  print $config->{server}->{istanbul}->{ipaddress}->{address}->[1];
  print "\n\n";
  print "MAC Address 1: ";
  print $config->{server}->{istanbul}->{macaddress}->{address}->[1];
  print "\n\n\n";
 
###HTML dosya içeriğini oluşturalım
  print "HTML Ciktisi : \n\n";
  print "<html>\n\n<meta>\n<title>XML Ciktisi</title>\n</meta>\n\n<body>\n\n<table>";
  print "\n<tr><td>".$srvankara."</td></tr>";
  print "\n<tr><td>".$srvankaraip1."</td></tr>";
  print "\n<tr><td>".$srvankaramac1."</td></tr>";
  print "\n<tr><td>".$srvistanbul."</td></tr>";
  print "\n<tr><td>".$srvistanbulip1."</td></tr>";
  print "\n<tr><td>".$srvistanbulmac1."</td></tr>\n</table>\n\n</body>\n</html>";
 
 
 
 
 
 
 

27 Aralık 2014 Cumartesi

Zabbix altyapı monitoring / izleme ürününe genel bakış

Merhaba,

Opensource bir altyapı izleme ürünü olan Zabbix i inceleyelim.

Alexei Vladishev tarafından geliştirilen vendor bağımsız bir ürün olan Zabbix networkünüzdeki geniş yelpazede iletişim, güvenlik ve sunucu sisteminin izlenmesine destek vermektedir. C ile geliştirilmiş olan ürün önyüzünde PHP kullanmaktadır.
Ürün verilerini depolamak için MySQL, PostgreSQL , Oracle, IBM DB2 ve SQLite veritabanlarını kullanabilmekteyiz.



Zabbix i bir sunucu üzerine kurmanın yanısıra virtual appliance olarak da hızlıca networkünüze dahil edip hemen kullanmaya başlayabilirsiniz. Open SUSE üzerine geliştirilmiş olan appliance altta belirtilen formatlarda bulunmaktadır.

  • vmdk (VMware/Virtualbox)
  • OVF (Open Virtualisation Format)
  • VHD (Hyper-V)**
  • CD iso
  • HDD/flash image
  • Xen guest
HTTP, SMTP, FTP, SSH vs. ve herhangi port bazlı izlemeyi ek bir yazılım kurmadan yapabilmekteyiz. Unix ve Windows sunucularda agent kurarak yada kurmadan CPU, RAM, Disk Kullanımı, Network kullanımı gibi değerleri izlemek mümkün. Agent kurulumuna alternatif olarak SNMP, TCP, ICMP kullanarak izleme yapabilmekteyiz. Ayrıca SSH, Telnet, JMX ve IPMI gibi protokoller üzerinden daha derinlemesine sorgular yaparak alınan çıktılara göre izleme yaparak olay ve alarm yönetimi yapmak mümkündür.

Üründe log rotation özelliği de mevcuttur. Zabbix ile Syslog ve log file monitoring yapılabilmekte ayrıca SNMP Trapleri alınmak sureti ile alarmlar üretilebilmektedir.

Zabbix ODBC desteklenen herhangi bir veritabanını sorgulayabilir. Bunu yapmak için Zabbix in direkt olarak veritabanına bağlanması şart değildir. ODBC arayüzü ve sürücülerini kullanması yeterlidir. Bu özellik değişik özelliklere sahip veritabanlarının daha efektif izlenmesine imkan verir.
Zabbix bu amaçla UnixODBC ve iODBC kullanmaktadır.

Daha detaylı ve akıllı izlemeler için Zabbix script monitoring imkanı sunmaktadır. İzlenen sistemde bazı scriptler çalıştırmak sureti ile üretilen çıktılar parse edilir ve yorumlanır.

Zabbix elde izlenen sistemlerden elde edilen veriler arasında matematiksel işlemler yapıp alınan çıktıları veritabanında tutabilmekte raporlayabilmekte ve alarm üretebilmektedir.

Ürün SNMP get ile herhangi OID ye ait snmp değerini belli periyodlarda sorgulamak sureti ile SNMP monitoring yapabilmektedir. SNMP v3 kullanımı ile MD5 ve DES protokolleri desteklenmektedir.

JMX monitoring özelliğini kullanarak Java uygulamalarının JMX sayaç değerlerini alabilmekteyiz. Bunun için Zapcat - JMX Zabbix Bridge en iyi çözüm olacaktır (Zabbix 1.8). Zapcat plug-in yüklemesi işlerinizi oldukça kolaylaştıracaktır. Zabbix 2.0 ile birlikte JMX monitoring default olarak Zabbix Java Gateway daemon ile birlikte gelmektedir. JMX sayaçlarının değerini almak gerektiğinde ürün Zabbix Java Gateway ile haberleşmekte ve istek JMX Management API aracılığı ile uygulamadan sorgulanmaktadır.

Zabbix ile Intelligent Platform Management Interface - IPMI desteklenen cihazların erişilebilirliği ve donanımsal özelliklerinin durumunun izlenmesi mümkündür. Bunu sağlamak için ilk kurulumunda IPMI desteği ile birlikte konfigure edilmelidir. Donanım statüsünün direkt olarak IPMI destekli kartlardan işletim sistemlerinden bağımsız olarak sorgulanmasına izin verir. Hatta bazı durumlarda makinenin açılmasına bile gerek kalmadan. HP ILO, DELL DRAC, IBM RSA ve SUN SSP gibi bu teknolojiyi desteklenen ürünler izlenebilmektedir.

Windows sistemlerde agent kurulumu ile event loglarını izlemek mümkündür. Performans counter değerleri alınabilmektedir. Servis ve Prosesleri detaylı olarak izleyebilmekteyiz.

Zabbix in network keşif / discovery özelliği alttaki bilgilere göre yapılabilir ve otomatize edilebilir.

  • IP aralıkları.
  • Servis bazlı. (FTP, SSH, WEB, POP3, IMAP, TCP, etc)
  • Zabbix agent tarafından sağlanan bilgiler.
  • SNMP destekli keşif.
Network topolojisinin keşfi desteklenmemektedir.
Ürün ile birlikte "Out-of-Box" alttaki keşif özellikleri gelmektedir.
  • File System Keşfi;
  • Network Interface Keşfi.;
  • SNMP OID Keşfi.
Zabbix probe larını network içinde değişik noktalarda konumlandırarak dağıtık bir yapıda izleme yapmak mümkündür. Zabbix probe proxy ana sunucu adına dataları toplar. Böylece tüm agent ve proxy ler tek bir merkezi Zabbix sunucusuna raporlar. Zabbix probe proxy kullanmak için alttaki maddeleri sayabiliriz;

  • Uzak noktaların izlenmesi.
  • Güvenilmez bağlantılar içeren noktaların izlenmesi.
  • Binlerce cihazın izlenmesi sırasında merkezi sunucunun yükünü hafifletmek.
  • DMZ ve izole networklerin izlenmesi. (Sadece merkezi sunucu ve proxy sunucu arasında güvenilir bağlantı sağlanması sureti ile)
Proxy kurulumu için bir TCP bağlantısı yeterlidir. Böylece Firewall lar üzerinde tek bir kural tanımlamak yeterli olacaktır.

Zabbix proxy sunucusunun kendine ait ayrı bir veritabanı bulunmalıdır. Proxy tarafından toplanan tüm data lokal olarak yerel veritabanında saklanır ve merkezi sunucuya iletilir. Böylece bağlantı sorunları nedeni ile oluşabilecek veri kayıplarının önüne geçilir.


ÖzellikProxy Tarafından Desteklenen
Items
Zabbix agent checksYes
Zabbix agent checks (active)Yes 1
Simple checksYes
Trapper itemsYes
SNMP checksYes
SNMP trapsYes
IPMI checksYes
JMX checksYes
Log file monitoringYes
Internal checksNo
SSH checksYes
Telnet checksYes
External checksYes
Built-in web monitoringYes
Network discoveryYes
Low-level discoveryYes
Calculating triggersNo
Processing eventsNo
Sending alertsNo
Remote commandsNo


[Tablo Alıntı : https://www.zabbix.com/documentation/2.0/manual/distributed_monitoring/proxies ]

Zabbix API programlanabilir arayüz ile 3rd party uygulamalar ile entegrasyon mümkündür. Ayrıca geliştireceğiniz bağımsız dashboard ekranları ve raporlarda bu API ile veri çekmek mümkün olacaktır.

API yi incelemek isterseniz : Appendixes section.

Zabbix ile oluşturulan Dashboard ekranlarını slide-show ekranları şeklinde birbiri peşisıra göstermek mümkündür.

Zabbix in görsellerine göz atalım;

Altta Network kullanımını bir grafik üzerinde görüyoruz.


Bir sistemin disk kullanım grafiği.


Kişiselleştirilmiş görsel bir ekran.








Zabbix ürününün diğer monitoring ürünleri ile karşılaştırmasını alttaki adresten inceleyebilirsiniz.

http://en.wikipedia.org/wiki/Comparison_of_network_monitoring_systems

Ürün hakkında detaylı bilgi almak için;

http://www.zabbix.com/product.php


Teşekkürler,
Cem Selmanoğulları





26 Aralık 2014 Cuma

Bir monitoring / izleme yazılımı alırken nelere dikkat edilmeli ?

Merhaba,

Bu yazımda monitoring yazılımı alınırken dikkat edilecek konulara dikkat çekmek istiyorum. Firmalar yıllar içinde çeşitli monitoring yazılımlarını denemekte ve birinden diğerine geçerek hem zaman hem de para kaybetmektedirler. Bu kayıpları azaltmak ve nokta atışı bir monitoring yazılımına sahip olmak için isterleri belirlemek çok önemlidir. Her şirketin isterleri farklılık gösterebileceği gibi tüm firmaların ortak isterleri olabilecek bazı maddeleri aşağıda belirlemeye çalıştım.

Bazı isterler monitoring araçları dışında CMDB ve Servis bazlı izleme araçlarının da projeye dahil edilmesini isteyeceği gibi hepsini biraraya toplayan ürün çözümleri de bulunmaktadır.

+İzlenen altyapıda sorun oluştuğunda otomatik olarak istenilen listeye e-posta, SMS atabilme
+Otomatik Eskalasyon
+Yeni eklenen SNMP özellikli donanımların otomatik olarak bulma
+Yetkilendirilmiş kullanıcı tanımlayabilme
+"Kişiye yada Bölüme özel Dashboard hazırlanabilmesi.
+Dashboardlarda bilgiler belli periyodlarda dinamik güncellenmeli."
+Yöneticiye özel rapor alınabilmesi
+Rootcause analiz yapabilmesi
+Detaylı event management ve korelasyon özelliklerinin olması
+Geçmişe yönelik CPU, RAM v.b. kullanımının izlenip grafiklenebilmesi.
+Sanallaştırma ortamlarının izlenmesi. VMware api entegrasyonu
+Grafik oluştururken üst üste grafik bindirme özelliğinin olması
+Servis bazlı izleme yapılabilmesi
+Servis Masası ile entegre olabilmesi. Otomatik kayıt açıp kapatabilme
+Sunucu üzerinde ismi tarihe bağlı olan bir dosyada keyword arayabilme
+Hatlarının etkin şekilde izlenebilmesi. Hat durumlarının yada hattın ucundaki cihaz
durumlarının izlenebilmesi.
+Uygulamalarla ilgili izlemelerin kolay eklenmesi
+Dinamik keşfedilen interfacelerin bandwidth değerlerinin doğru çekiliyor olması.
+CMDB ile entegre olabilmeli.
+İzlenecek her cihaz model ve versiyonu desteklemeli. Bu cihazlardan
birer örnek dashboard incelenerek doğru data geldiği tespit edilmeli.
+Belli saate planlı yada belli zaman periyodlarında çalışabilecek oto keşif yapabilmeli.
+Keşif kriterleri verilirken istenmeyen cihazlar ip, model, vendor, cihaz tipi bazlı exclude edilebilmeli.
+Kolay bir MIB yönetim arayüzü olmalı.
+Hazır raporlar dışında  mümkün olduğunca özelleştirilebilir olmalı.
+Raporlarda format değiştirilebilmeli
+Raporlara yeni sütun eklenebilmeli yada var olan sütunlar çıkartılarak özelleştirilebilmeli.
+Detaylı Availability ve Reachability raporları çıkarılabilmeli.
+Detaylı envanter raporu sunabilmeli.
+Grafiklere zoom yapma ve time windows değiştirme özelliği olmalı.
+Cihaz sayfalarına custom alanlar eklenebilmeli.
+Interface grup oluşturulabilmeli.
+Cihaz grupları oluşturulabilmeli.
+Yedekli çalışan cihazlarla ilgili korelasyonlar yapılabilmeli
+"Interface ve cihaz grupları dinamik olarak filtrelerle oluşturulabilmeli. Ör: Sysname içinde
TR1 geçen cihazlar ilgili gruba otomatik yerleşsin."
+"Dinamik harita çizebilmeli. Çizilen haritada manuel bağlantı değişikliklerine
(Ekleme-Silme) izin vermeli."
+Servis ağaçları oluşturulabilmeli. Servis ağaçlarından oluşturulacak servis görsel olarak izlenebilmeli.
+"Servis ağaçlarının içindeki her elemanın değişikliği dinamik olarak takip edilip değişiklikler
servis ağacına yansımalı."
+"Geriye dönük mümkün olduğunca bilgi tutabilmeli. En az 90 günlük veri çok detaylı sağlanabilmeli.
1-3 yıllık özet bilgi saklanabilmeli."
+"Log içinde arama yapıp belli bir kelime yakalandığında alarm üretmeli.
Bu olay incremental olmalı her taramada eğer yeni bir error kelimesi eklendiyse alarm üretmeli."
+Syslog mesajlarını alarma çevirebilmeli. Gelen mesajları parse edilebilmeli.
+NOC izlemesi için CCTV ekranları hazırlanabilmeli. Bu ekranlar belli periyodlarda güncellenebilmeli.
+Mümkünse şirket içi geliştirmeler için veritabanından bilgi çekme amaçlı webservis yada api si olmalı.
+Domain Controller izlemeye özel yetenekleri olmalı.
+Exchange i izlemeye özel yetenekleri olmalı.
+"Mümkünse APM yeteneği olmalı. Veritabanlarını izleyebilmeli. Veritabanı performansını
izleyebilmeli. Sunucu üzeri çalışan uygulamaları izleyebilmeli. Sentetik kullanıcı ile belli
olayları simule edip kontrol edebilmeli. "
+Bir hataya karşı üreyecek alarmın bir aksiyon üretebilmesi.
+Mümkünse ürün problu yapıda çalışabilmeli.
+Trending yapabilmeli.
+Ürünün kendi kendini detaylı izleme mekanizması olmalı. Kendi health check ini yapabilmeli.
+Belli bir cihaz grubuna toplu olarak izleme ayarı yapılabilmeli.
+Belli bir interface grubuna toplu olarak izleme ayarı yapılabilmeli. 
+Port izleme yapabilmeli. Availability grafikleyebilmeli.
+Ping, tracert, telnet gibi basit troubleshoot toollarını üzerinde barındırmalı.
+URL monitoring yapabilmeli.
+Isı, voltaj, kart ve modüllerin durumu gibi donanım komponentleri kontrol edilip alarm üretilmeli.
+Switchler üzerinde hangi interface üzerinde hangi sunucu olduğunu gösterebilmeli.
+SSH, WMI, SNMP polling, SNMP Trap, Syslog Trap ile izleme yapabilmeli.
+Cihazlar için response time, paket kaybı gibi bilgileri verebilmeli.
+Ürün sayfalarında menüler kişiye özel düzenlenebilmeli.
+Gereksiz email sms göndermemeli. Buna yönelik korelasyon yapılabilmeli.
+Raporları schedule olarak email atabilmeli.
+Kuracak firma 7/24 teknik destek verebilmeli. Gerektiğinde yerinde destek verebilmeli.
+LDAP entegrasyonu
+Mobil cihazlarla uyumlu arayüz.
+Failover seçeneğinin olması.
+Gerektiğinde internet üzerinden izleme için proxy tanımlanabilmesi
+Bakım modu olmalı.
+Dosya ve klasör izleme yapabilmeli.
+Windows ve Linux makinelerde servis ve prosesleri izleyebilmeli.
+Windows ve Linux makinelerde remote script çalıştırıp sonucu parse edebilmeli.
+Diskler üzerinde I/O kullanım, read-write
+Güvenlik cihazlarında VPN bağlantı sayıları
+SAN Switchleri ve depolama cihazlarını izleyebilmeli
+Vendor bağımsız izleme yapabilmeli.
+Hem network, hem sunucu, hem depolama ünitelerini izleyebilmeli

Teşekkürler,
Cem Selmanoğulları