{"id":38103,"date":"2026-01-23T12:41:01","date_gmt":"2026-01-23T09:41:01","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=38103"},"modified":"2026-01-23T12:41:01","modified_gmt":"2026-01-23T09:41:01","slug":"nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/","title":{"rendered":"Nagios Eklentilerini Perl ile CentOS 6 \u00dczerinde Olu\u015fturma Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>Nagios Eklentilerini Perl ile CentOS 6 \u00dczerinde Olu\u015fturma Rehberi<\/h2>\n<p>Nagios, sistem ve a\u011f altyap\u0131lar\u0131n\u0131 izlemek i\u00e7in end\u00fcstri standard\u0131 haline gelmi\u015f g\u00fc\u00e7l\u00fc bir a\u00e7\u0131k kaynak izleme sistemidir. Sunucular\u0131n, a\u011f cihazlar\u0131n\u0131n, uygulamalar\u0131n ve servislerin durumunu s\u00fcrekli kontrol ederek potansiyel sorunlar\u0131 proaktif bir \u015fekilde tespit etmenizi sa\u011flar. Ancak Nagios&#8217;un ger\u00e7ek g\u00fcc\u00fc, esnek eklenti mimarisinden gelir. Bu eklentiler sayesinde, neredeyse her t\u00fcrl\u00fc \u00f6zel izleme ihtiyac\u0131n\u0131 kar\u015f\u0131layacak \u015fekilde Nagios&#8217;u geni\u015fletebilirsiniz. Bu makalede, CentOS 6 i\u015fletim sistemi \u00fczerinde Perl programlama dilini kullanarak Nagios eklentilerini nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Perl, g\u00fc\u00e7l\u00fc metin i\u015fleme yetenekleri, esnekli\u011fi ve Linux sistemlerinde yayg\u0131n olarak bulunmas\u0131 nedeniyle Nagios eklentileri yazmak i\u00e7in m\u00fckemmel bir se\u00e7imdir. CentOS 6, stabil bir platform sunarken, bu makaledeki prensipler daha yeni Linux da\u011f\u0131t\u0131mlar\u0131nda da b\u00fcy\u00fck \u00f6l\u00e7\u00fcde ge\u00e7erlidir.<\/p>\n<h3>Nagios Eklentilerine Giri\u015f<\/h3>\n<p>Nagios&#8217;un temel \u00e7al\u0131\u015fma mant\u0131\u011f\u0131, d\u0131\u015far\u0131dan \u00e7al\u0131\u015ft\u0131r\u0131labilir komutlar (yani eklentiler) arac\u0131l\u0131\u011f\u0131yla sistem veya servis durumu hakk\u0131nda bilgi toplamakt\u0131r. Bu eklentiler, belirli bir kontrol\u00fc ger\u00e7ekle\u015ftirir ve elde ettikleri sonuca g\u00f6re Nagios&#8217;a bir durum kodu ve bir \u00e7\u0131kt\u0131 mesaj\u0131 d\u00f6nd\u00fcr\u00fcrler.<\/p>\n<h4>Nagios Eklentileri Nedir?<\/h4>\n<p>Nagios eklentileri, Nagios sunucusu taraf\u0131ndan belirli aral\u0131klarla \u00e7al\u0131\u015ft\u0131r\u0131lan ba\u011f\u0131ms\u0131z scriptler veya derlenmi\u015f programlard\u0131r. Bu eklentiler, bir CPU y\u00fck\u00fcn\u00fc kontrol etmek, bir disk b\u00f6l\u00fcm\u00fcn\u00fcn doluluk oran\u0131n\u0131 \u00f6l\u00e7mek, bir servisin \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 do\u011frulamak veya bir web sitesinin eri\u015filebilirli\u011fini test etmek gibi \u00e7e\u015fitli g\u00f6revleri yerine getirebilirler. Nagios, eklentinin standart \u00e7\u0131kt\u0131s\u0131n\u0131 (STDOUT) okur ve eklentinin d\u00f6n\u00fc\u015f koduna (exit code) g\u00f6re izlenen \u00f6\u011fenin durumunu belirler.<\/p>\n<h4>D\u00f6n\u00fc\u015f Kodlar\u0131 ve Durum Mesajlar\u0131<\/h4>\n<p>Bir Nagios eklentisinin en kritik bile\u015fenleri, d\u00f6nd\u00fcrd\u00fc\u011f\u00fc \u00e7\u0131k\u0131\u015f kodu ve standart \u00e7\u0131kt\u0131 mesaj\u0131d\u0131r. Nagios, bu ikiliyi kullanarak izlenen kayna\u011f\u0131n mevcut durumunu de\u011ferlendirir:<\/p>\n<p>*   <strong>0 (OK):<\/strong> Eklenti, izlenen \u00f6\u011fenin sa\u011fl\u0131kl\u0131 ve beklenen durumda oldu\u011funu belirtir. Her \u015fey yolundad\u0131r.<br \/>\n*   <strong>1 (WARNING):<\/strong> Eklenti, izlenen \u00f6\u011fenin bir uyar\u0131 e\u015fi\u011fine ula\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir. Durum hen\u00fcz kritik de\u011fildir, ancak dikkat gerektirir.<br \/>\n*   <strong>2 (CRITICAL):<\/strong> Eklenti, izlenen \u00f6\u011fenin kritik bir hata durumunda oldu\u011funu veya kritik bir e\u015fi\u011fi a\u015ft\u0131\u011f\u0131n\u0131 belirtir. Acil m\u00fcdahale gereklidir.<br \/>\n*   <strong>3 (UNKNOWN):<\/strong> Eklenti, izlenen \u00f6\u011fenin durumunu belirleyemedi\u011fini g\u00f6sterir. Bu durum, eklentinin bir hata ile kar\u015f\u0131la\u015fmas\u0131 (\u00f6rne\u011fin, gerekli bir komutun bulunamamas\u0131 veya parametre hatas\u0131) veya beklenmedik bir durumla kar\u015f\u0131la\u015fmas\u0131 durumunda kullan\u0131l\u0131r.<\/p>\n<p>Eklentinin standart \u00e7\u0131kt\u0131s\u0131, Nagios aray\u00fcz\u00fcnde kullan\u0131c\u0131ya g\u00f6sterilen durum mesaj\u0131n\u0131 i\u00e7erir. Bu mesaj, genellikle kontrol edilen \u00f6\u011fenin mevcut durumunu ve ilgili performans verilerini (iste\u011fe ba\u011fl\u0131) i\u00e7erir. Performans verileri, grafik olu\u015fturma veya daha derinlemesine analiz i\u00e7in say\u0131sal metrikler sa\u011flar. Format\u0131 genellikle <code>label=value[UOM];warn;crit;min;max<\/code> \u015feklindedir.<\/p>\n<h4>Eklenti Konumu ve \u0130zinleri<\/h4>\n<p>Nagios, eklentilerini genellikle <code>\/usr\/local\/nagios\/libexec\/<\/code> dizininde veya bu dizin alt\u0131nda arar. Kendi eklentilerinizi yazarken, bu dizine veya Nagios yap\u0131land\u0131rman\u0131zda belirtilen ba\u015fka bir eklenti dizinine kaydetmeniz \u00f6nemlidir. Eklentilerin Nagios taraf\u0131ndan \u00e7al\u0131\u015ft\u0131r\u0131labilmesi i\u00e7in, dosya \u00fczerinde \u00e7al\u0131\u015ft\u0131rma iznine (<code>x<\/code> biti) sahip olmalar\u0131 gerekir. Bu izin, <code>chmod +x <eklenti_dosyas\u0131><\/code> komutuyla verilir. Ayr\u0131ca, eklentinin Nagios kullan\u0131c\u0131s\u0131 taraf\u0131ndan okunabilir ve \u00e7al\u0131\u015ft\u0131r\u0131labilir olmas\u0131 i\u00e7in dosya sahipli\u011fi ve grup izinleri de do\u011fru ayarlanmal\u0131d\u0131r (genellikle <code>nagios:nagios<\/code> veya <code>nagios:nagcmd<\/code>).<\/p>\n<h3>Perl ve CentOS 6 Ortam\u0131n\u0131n Haz\u0131rlanmas\u0131<\/h3>\n<p>Nagios eklentilerini Perl ile geli\u015ftirmeye ba\u015flamadan \u00f6nce, CentOS 6 ortam\u0131n\u0131z\u0131n gerekli ara\u00e7lara sahip oldu\u011fundan emin olmal\u0131y\u0131z.<\/p>\n<h4>Perl Kurulumu ve Kontrol\u00fc<\/h4>\n<p>CentOS 6, varsay\u0131lan olarak Perl&#8217;in bir s\u00fcr\u00fcm\u00fcyle birlikte gelir. Bu, bir\u00e7ok sistem beti\u011finin Perl&#8217;e ba\u011f\u0131ml\u0131 olmas\u0131 nedeniyledir. Perl&#8217;in sisteminizde kurulu olup olmad\u0131\u011f\u0131n\u0131 ve hangi s\u00fcr\u00fcm\u00fcn\u00fcn oldu\u011funu kontrol etmek i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">perl -v<\/code><\/pre>\n<p>E\u011fer Perl kurulu de\u011filse (ki bu \u00e7ok nadirdir), <code>yum<\/code> paket y\u00f6neticisi ile kolayca kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo yum install perl<\/code><\/pre>\n<h4>Gerekli Perl Mod\u00fcllerinin Kurulumu<\/h4>\n<p>Perl&#8217;in g\u00fcc\u00fc, geni\u015f mod\u00fcl ekosisteminden gelir. Nagios eklentileri yazarken hayat\u0131n\u0131z\u0131 kolayla\u015ft\u0131racak <code>Nagios::Plugin<\/code> gibi mod\u00fcller mevcuttur. Bu mod\u00fcl, Nagios eklentilerinin standartlar\u0131n\u0131 uygulaman\u0131za, arg\u00fcmanlar\u0131 ayr\u0131\u015ft\u0131rman\u0131za ve performans verilerini do\u011fru formatta olu\u015fturman\u0131za yard\u0131mc\u0131 olan bir API sa\u011flar.<\/p>\n<p><code>Nagios::Plugin<\/code> mod\u00fcl\u00fcn\u00fc kurman\u0131n birka\u00e7 yolu vard\u0131r:<\/p>\n<p>1.  <strong>CPAN arac\u0131l\u0131\u011f\u0131yla:<\/strong> CPAN (Comprehensive Perl Archive Network), Perl mod\u00fcllerinin merkezi bir deposudur. E\u011fer sisteminizde <code>cpan<\/code> arac\u0131 kuruluysa, a\u015fa\u011f\u0131daki komutla kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo perl -MCPAN -e 'install Nagios::Plugin'<\/code><\/pre>\n<p>    \u0130lk kez <code>cpan<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z, baz\u0131 yap\u0131land\u0131rma sorular\u0131 sorabilir. Varsay\u0131lan de\u011ferleri kabul edebilir veya ihtiya\u00e7lar\u0131n\u0131za g\u00f6re ayarlayabilirsiniz.<\/p>\n<p>2.  <strong>Yum ile RPM paketi olarak:<\/strong> Baz\u0131 durumlarda, <code>Nagios::Plugin<\/code> mod\u00fcl\u00fcn\u00fcn bir RPM paketi olarak da bulunabilir. Bu, sistem genelinde kurulum i\u00e7in daha tercih edilen bir y\u00f6ntem olabilir:<\/p>\n<pre><code class=\"language-bash\">sudo yum install perl-Nagios-Plugin<\/code><\/pre>\n<p>    Bu y\u00f6ntem, mod\u00fcl\u00fcn t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 da otomatik olarak kuracakt\u0131r.<\/p>\n<p>Her iki y\u00f6ntem de mod\u00fcl\u00fc sisteminizde kullan\u0131labilir hale getirecektir. Bu mod\u00fcl\u00fc kullanmak zorunlu de\u011fildir; Perl&#8217;in temel yetenekleriyle de Nagios eklentileri yazabilirsiniz. Ancak <code>Nagios::Plugin<\/code> mod\u00fcl\u00fc, kodunuzu daha standart, okunabilir ve bak\u0131m\u0131 kolay hale getirdi\u011fi i\u00e7in \u015fiddetle tavsiye edilir.<\/p>\n<h3>Temel Bir Perl Nagios Eklentisi Yaz\u0131m\u0131<\/h3>\n<p>\u015eimdi, basit bir Perl Nagios eklentisi yazarak temel prensipleri uygulamaya ba\u015flayal\u0131m.<\/p>\n<h4>&#8220;Hello World&#8221; Eklentisi<\/h4>\n<p>En basit Nagios eklentisi, sadece bir durum kodu ve mesaj d\u00f6nd\u00fcren bir betiktir. A\u015fa\u011f\u0131daki betik, her zaman &#8220;OK&#8221; durumu d\u00f6nd\u00fcrecektir:<\/p>\n<pre><code class=\"language-perl\">#!\/usr\/bin\/perl\n<h2>check_hello_world.pl<\/h2>\n\nuse strict;\nuse warnings;\n\nprint \"OK - Hello World from Nagios Perl Plugin!\\n\";\nexit(0);<\/code><\/pre>\n<p>Bu beti\u011fi <code>check_hello_world.pl<\/code> olarak kaydedin ve a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 uygulay\u0131n:<\/p>\n<p>1.  <strong>Kaydetme:<\/strong> Eklentiyi Nagios&#8217;un eklenti dizinine kaydedin:<\/p>\n<pre><code class=\"language-bash\">sudo mv check_hello_world.pl \/usr\/local\/nagios\/libexec\/<\/code><\/pre>\n<p>2.  <strong>\u00c7al\u0131\u015ft\u0131rma \u0130zni Verme:<\/strong> Eklentinin \u00e7al\u0131\u015ft\u0131r\u0131labilir oldu\u011fundan emin olun:<\/p>\n<pre><code class=\"language-bash\">sudo chmod +x \/usr\/local\/nagios\/libexec\/check_hello_world.pl<\/code><\/pre>\n<p>3.  <strong>Test Etme:<\/strong> Eklentiyi Nagios kullan\u0131c\u0131s\u0131 olarak veya do\u011frudan komut sat\u0131r\u0131ndan test edin:<\/p>\n<pre><code class=\"language-bash\">\/usr\/local\/nagios\/libexec\/check_hello_world.pl<\/code><\/pre>\n<p>    \u00c7\u0131kt\u0131 olarak <code>OK - Hello World from Nagios Perl Plugin!<\/code> ve d\u00f6n\u00fc\u015f kodu olarak <code>0<\/code> almal\u0131s\u0131n\u0131z.<\/p>\n<h4>Parametre Al\u0131m\u0131<\/h4>\n<p>\u00c7o\u011fu Nagios eklentisi, davran\u0131\u015flar\u0131n\u0131 de\u011fi\u015ftirmek i\u00e7in parametreler al\u0131r. \u00d6rne\u011fin, bir e\u015fik de\u011feri veya kontrol edilecek bir dosya yolu gibi. Perl&#8217;de komut sat\u0131r\u0131 arg\u00fcmanlar\u0131na <code>@ARGV<\/code> dizisi arac\u0131l\u0131\u011f\u0131yla eri\u015filir.<\/p>\n<p>A\u015fa\u011f\u0131daki \u00f6rnek, bir parametre alarak farkl\u0131 bir \u00e7\u0131kt\u0131 mesaj\u0131 veren bir eklentidir:<\/p>\n<pre><code class=\"language-perl\">#!\/usr\/bin\/perl\n<h2>check_param_example.pl<\/h2>\n\nuse strict;\nuse warnings;\n\nmy $name = $ARGV[0] || \"World\"; # \u0130lk arg\u00fcman\u0131 al, yoksa \"World\" kullan\n\nprint \"OK - Hello $name from Nagios Perl Plugin!\\n\";\nexit(0);<\/code><\/pre>\n<p>Test:<\/p>\n<pre><code class=\"language-bash\">\/usr\/local\/nagios\/libexec\/check_param_example.pl\n<h2>\u00c7\u0131kt\u0131: OK - Hello World from Nagios Perl Plugin!<\/h2>\n\n\/usr\/local\/nagios\/libexec\/check_param_example.pl \"Nagios User\"\n<h2>\u00c7\u0131kt\u0131: OK - Hello Nagios User from Nagios Perl Plugin!<\/code><\/pre>\n<\/h2>\n<h4>Performans Verisi Ekleme<\/h4>\n<p>Performans verileri, Nagios&#8217;un daha zengin izleme yetenekleri sunmas\u0131n\u0131 sa\u011flar. Say\u0131sal verileri belirli bir formatta d\u00f6nd\u00fcrerek Nagios&#8217;un bunlar\u0131 grafiklendirmesine veya ge\u00e7mi\u015f verileri analiz etmesine olanak tan\u0131r. Performans verileri, durum mesaj\u0131ndan dikey \u00e7izgi (<code>|<\/code>) ile ayr\u0131l\u0131r.<\/p>\n<p>Format: <code>'label'=value[UOM];warn;crit;min;max<\/code><\/p>\n<p>*   <strong>label:<\/strong> Performans verisinin ad\u0131 (t\u0131rnak i\u00e7inde, bo\u015fluk i\u00e7erebilir).<br \/>\n*   <strong>value:<\/strong> \u00d6l\u00e7\u00fclen de\u011fer.<br \/>\n*   <strong>UOM:<\/strong> \u00d6l\u00e7\u00fc birimi (\u00f6rne\u011fin, <code>%<\/code>, <code>B<\/code>, <code>ms<\/code>, <code>c<\/code> (say\u0131)).<br \/>\n*   <strong>warn:<\/strong> Uyar\u0131 e\u015fi\u011fi.<br \/>\n*   <strong>crit:<\/strong> Kritik e\u015fik.<br \/>\n*   <strong>min:<\/strong> Minimum beklenen de\u011fer.<br \/>\n*   <strong>max:<\/strong> Maksimum beklenen de\u011fer.<\/p>\n<p>\u00d6rnek: Bir &#8220;sanal&#8221; s\u0131cakl\u0131k \u00f6l\u00e7en ve performans verisi ekleyen eklenti:<\/p>\n<pre><code class=\"language-perl\">#!\/usr\/bin\/perl\n<h2>check_temperature.pl<\/h2>\n\nuse strict;\nuse warnings;\n\nmy $temperature = int(rand(50) + 10); # 10 ile 59 aras\u0131 rastgele s\u0131cakl\u0131k\n\nmy $status_message = \"OK - Temperature is ${temperature}C\";\nmy $exit_code = 0;\n\nmy $warning_threshold = 30;\nmy $critical_threshold = 45;\n\nif ($temperature >= $critical_threshold) {\n    $status_message = \"CRITICAL - Temperature is ${temperature}C (>= ${critical_threshold}C)\";\n    $exit_code = 2;\n} elsif ($temperature >= $warning_threshold) {\n    $status_message = \"WARNING - Temperature is ${temperature}C (>= ${warning_threshold}C)\";\n    $exit_code = 1;\n}\n\n<h2>Performans verisi ekleme<\/h2>\nmy $perfdata = \"temperature=${temperature}C;${warning_threshold};${critical_threshold};0;100\";\n\nprint \"$status_message|$perfdata\\n\";\nexit($exit_code);<\/code><\/pre>\n<p>Bu eklenti, rastgele bir s\u0131cakl\u0131k \u00fcretir, e\u015fiklere g\u00f6re durumu belirler ve performans verisiyle birlikte \u00e7\u0131kt\u0131y\u0131 verir.<\/p>\n<p>Test:<\/p>\n<pre><code class=\"language-bash\">\/usr\/local\/nagios\/libexec\/check_temperature.pl\n<h2>\u00d6rnek \u00e7\u0131kt\u0131: OK - Temperature is 25C|temperature=25C;30;45;0;100<\/h2>\n<h2>Veya: CRITICAL - Temperature is 48C (>= 45C)|temperature=48C;30;45;0;100<\/code><\/pre>\n<\/h2>\n<h3>Ger\u00e7ek D\u00fcnya Senaryolar\u0131 \u0130\u00e7in Eklenti Geli\u015ftirme<\/h3>\n<p>\u015eimdi daha pratik \u00f6rneklere ge\u00e7elim ve sistem kaynaklar\u0131n\u0131 izleyen eklentiler yazal\u0131m.<\/p>\n<h4>CPU Kullan\u0131m\u0131n\u0131 \u0130zleme Eklentisi<\/h4>\n<p>CPU kullan\u0131m\u0131n\u0131 izlemek i\u00e7in <code>mpstat<\/code> gibi komutlar\u0131 kullanabiliriz (sysstat paketi i\u00e7inde gelir). E\u011fer <code>mpstat<\/code> kurulu de\u011filse, <code>sudo yum install sysstat<\/code> ile kurman\u0131z gerekebilir.<\/p>\n<pre><code class=\"language-perl\">#!\/usr\/bin\/perl\n<h2>check_cpu_usage.pl<\/h2>\n\nuse strict;\nuse warnings;\n\nmy $warning_cpu = shift || 80;  # Varsay\u0131lan uyar\u0131 %80\nmy $critical_cpu = shift || 95; # Varsay\u0131lan kritik %95\n\nmy $mpstat_output = <code>mpstat 1 1<\/code>; # 1 saniye arayla 1 rapor al\nmy @lines = split(\/\\n\/, $mpstat_output);\n\n<h2>mpstat \u00e7\u0131kt\u0131s\u0131n\u0131n son sat\u0131r\u0131 i\u015fimize yarar<\/h2>\nmy $last_line = $lines[-1];\n\n<h2>CPU kullan\u0131m\u0131n\u0131 ayr\u0131\u015ft\u0131rma (idle y\u00fczdesi)<\/h2>\n<h2>\u00c7\u0131kt\u0131 format\u0131 de\u011fi\u015febilir, regex dikkatli kullan\u0131lmal\u0131<\/h2>\nif ($last_line =~ \/Average:\\s+all\\s+[\\d\\.]+\\s+[\\d\\.]+\\s+[\\d\\.]+\\s+[\\d\\.]+\\s+[\\d\\.]+\\s+[\\d\\.]+\\s+[\\d\\.]+\\s+[\\d\\.]+\\s+[\\d\\.]+\\s+([\\d\\.]+)\/) {\n    my $idle_cpu = $1;\n    my $used_cpu = 100 - $idle_cpu;\n\n    my $status_message = \"OK - CPU usage: ${used_cpu}%\";\n    my $exit_code = 0;\n\n    if ($used_cpu >= $critical_cpu) {\n        $status_message = \"CRITICAL - CPU usage: ${used_cpu}% (threshold: ${critical_cpu}%)\";\n        $exit_code = 2;\n    } elsif ($used_cpu >= $warning_cpu) {\n        $status_message = \"WARNING - CPU usage: ${used_cpu}% (threshold: ${warning_cpu}%)\";\n        $exit_code = 1;\n    }\n\n    my $perfdata = \"cpu_usage=${used_cpu}%;${warning_cpu};${critical_cpu};0;100\";\n    print \"$status_message|$perfdata\\n\";\n    exit($exit_code);\n\n} else {\n    print \"UNKNOWN - Could not parse mpstat output.\\n\";\n    exit(3);\n}<\/code><\/pre>\n<p>Bu eklenti, <code>mpstat<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131r, \u00e7\u0131kt\u0131s\u0131n\u0131 ayr\u0131\u015ft\u0131r\u0131r ve kullan\u0131lan CPU y\u00fczdesini hesaplar. Ard\u0131ndan, verilen e\u015fik de\u011ferlerine g\u00f6re durumu belirler ve performans verisiyle birlikte \u00e7\u0131kt\u0131 verir. Kullan\u0131c\u0131 <code>check_cpu_usage.pl 70 90<\/code> \u015feklinde uyar\u0131 ve kritik e\u015fikleri belirleyebilir.<\/p>\n<h4>Disk Alan\u0131 Kontrol Eklentisi<\/h4>\n<p>Disk alan\u0131 kontrol\u00fc i\u00e7in <code>df<\/code> komutu kullan\u0131l\u0131r. \u00d6zellikle <code>-P<\/code> (POSIX format\u0131) ve <code>-k<\/code> (kilobayt) veya <code>-h<\/code> (insan okunur) se\u00e7enekleri i\u015fimize yarar.<\/p>\n<pre><code class=\"language-perl\">#!\/usr\/bin\/perl\n<h2>check_disk_usage.pl<\/h2>\n\nuse strict;\nuse warnings;\n\nmy $path = shift || \"\/\"; # Kontrol edilecek yol, varsay\u0131lan k\u00f6k dizin\nmy $warning_percent = shift || 80;\nmy $critical_percent = shift || 95;\n\nmy $df_output = <code>df -Pk \"$path\" 2>\/dev\/null<\/code>; # df -P ile POSIX format\u0131nda, -k ile kilobayt\nmy @lines = split(\/\\n\/, $df_output);\n\n<h2>Genellikle ikinci sat\u0131rda ilgili disk bilgisi bulunur<\/h2>\nif (@lines < 2) {\n    print \"UNKNOWN - Could not get disk info for $path.\\n\";\n    exit(3);\n}\n\nmy $disk_line = $lines[1];\nmy @fields = split(\/\\s+\/, $disk_line);\n\n<h2>df -Pk \u00e7\u0131kt\u0131s\u0131: Filesystem 1K-blocks Used Available Use% Mounted on<\/h2>\n<h2>0          1          2    3         4    5<\/h2>\nmy $used_percent = 0;\nif (defined $fields[4] && $fields[4] =~ \/(\\d+)%\/) {\n    $used_percent = $1;\n} else {\n    print \"UNKNOWN - Could not parse disk usage for $path.\\n\";\n    exit(3);\n}\n\nmy $status_message = \"OK - Disk usage for $path: ${used_percent}%\";\nmy $exit_code = 0;\n\nif ($used_percent >= $critical_percent) {\n    $status_message = \"CRITICAL - Disk usage for $path: ${used_percent}% (threshold: ${critical_percent}%)\";\n    $exit_code = 2;\n} elsif ($used_percent >= $warning_percent) {\n    $status_message = \"WARNING - Disk usage for $path: ${used_percent}% (threshold: ${warning_percent}%)\";\n    $exit_code = 1;\n}\n\nmy $perfdata = \"disk_usage=${used_percent}%;${warning_percent};${critical_percent};0;100\";\nprint \"$status_message|$perfdata\\n\";\nexit($exit_code);<\/code><\/pre>\n<p>Bu eklenti, belirtilen bir yolun disk kullan\u0131m\u0131n\u0131 kontrol eder ve e\u015fiklere g\u00f6re durumu bildirir. <code>check_disk_usage.pl \/var 90 98<\/code> gibi parametrelerle kullan\u0131labilir.<\/p>\n<h4>Servis Durumu Kontrol Eklentisi<\/h4>\n<p>Bir servisin \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in birka\u00e7 y\u00f6ntem vard\u0131r. En basiti, <code>service <servis_ad\u0131> status<\/code> komutunu kullanmakt\u0131r. Ancak bu, her serviste ayn\u0131 \u00e7\u0131kt\u0131y\u0131 vermeyebilir veya root yetkisi gerektirebilir. Daha genel bir yakla\u015f\u0131m, <code>ps aux<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 kontrol etmek veya <code>pidof<\/code> kullanmakt\u0131r.<\/p>\n<p>A\u015fa\u011f\u0131daki \u00f6rnek, <code>pidof<\/code> komutunu kullanarak bir s\u00fcrecin \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol eder:<\/p>\n<pre><code class=\"language-perl\">#!\/usr\/bin\/perl\n<h2>check_process.pl<\/h2>\n\nuse strict;\nuse warnings;\n\nmy $process_name = shift; # Kontrol edilecek s\u00fcre\u00e7 ad\u0131 (\u00f6rne\u011fin \"httpd\")\n\nunless (defined $process_name) {\n    print \"UNKNOWN - Usage: check_process.pl <process_name>\\n\";\n    exit(3);\n}\n\nmy $pidof_output = <code>pidof $process_name 2>\/dev\/null<\/code>;\nmy @pids = split(\/\\s+\/, $pidof_output);\n\nif (@pids > 0) {\n    print \"OK - Process '$process_name' is running with PID(s): @pids\\n\";\n    exit(0);\n} else {\n    print \"CRITICAL - Process '$process_name' is NOT running.\\n\";\n    exit(2);\n}<\/code><\/pre>\n<p>Bu eklenti, <code>check_process.pl httpd<\/code> gibi kullan\u0131larak <code>httpd<\/code> s\u00fcrecinin \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol eder.<\/p>\n<h3><code>Nagios::Plugin<\/code> Mod\u00fcl\u00fc Kullan\u0131m\u0131<\/h3>\n<p>Daha \u00f6nce bahsetti\u011fimiz gibi, <code>Nagios::Plugin<\/code> mod\u00fcl\u00fc, Nagios eklentileri yazarken hayat\u0131n\u0131z\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde kolayla\u015ft\u0131r\u0131r. Standart bir API sa\u011flar, arg\u00fcman ayr\u0131\u015ft\u0131rma, hata y\u00f6netimi ve performans verisi ekleme gibi g\u00f6revleri basitle\u015ftirir.<\/p>\n<h4><code>Nagios::Plugin<\/code> Neden Kullan\u0131lmal\u0131?<\/h4>\n<p>*   <strong>Standartla\u015ft\u0131rma:<\/strong> Nagios eklentisi geli\u015ftirme i\u00e7in standart bir yap\u0131 ve API sa\u011flar.<br \/>\n*   <strong>Arg\u00fcman Ayr\u0131\u015ft\u0131rma:<\/strong> <code>--warning<\/code>, <code>--critical<\/code>, <code>--hostname<\/code> gibi standart Nagios arg\u00fcmanlar\u0131n\u0131 otomatik olarak ayr\u0131\u015ft\u0131r\u0131r ve y\u00f6netir.<br \/>\n*   <strong>Durum Y\u00f6netimi:<\/strong> <code>ok<\/code>, <code>warning<\/code>, <code>critical<\/code>, <code>unknown<\/code> durumlar\u0131n\u0131 y\u00f6netmek i\u00e7in kolay y\u00f6ntemler sunar.<br \/>\n*   <strong>Performans Verisi:<\/strong> Performans verilerini do\u011fru formatta eklemeyi kolayla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>Yard\u0131m Mesajlar\u0131:<\/strong> Otomatik <code>--help<\/code> ve <code>--version<\/code> deste\u011fi sunar.<br \/>\n*   <strong>Hata Y\u00f6netimi:<\/strong> Beklenmedik durumlar veya hatalar i\u00e7in <code>UNKNOWN<\/code> durumu d\u00f6nd\u00fcrmeyi kolayla\u015ft\u0131r\u0131r.<\/p>\n<h4>Temel Kullan\u0131m \u00d6rne\u011fi<\/h4>\n<p><code>Nagios::Plugin<\/code> mod\u00fcl\u00fcn\u00fcn temel kullan\u0131m\u0131 \u015fu ad\u0131mlar\u0131 i\u00e7erir:<\/p>\n<p>1.  Mod\u00fcl\u00fc dahil etme: <code>use Nagios::Plugin;<\/code><br \/>\n2.  Bir <code>Nagios::Plugin<\/code> nesnesi olu\u015fturma: <code>my $np = Nagios::Plugin->new(...);<\/code><br \/>\n3.  Arg\u00fcmanlar\u0131 tan\u0131mlama: <code>$np->add_arg(...);<\/code><br \/>\n4.  Arg\u00fcmanlar\u0131 ayr\u0131\u015ft\u0131rma: <code>$np->getopts();<\/code><br \/>\n5.  Durum kontrollerini yapma.<br \/>\n6.  Performans verisi ekleme: <code>$np->add_perfdata(...);<\/code><br \/>\n7.  Nagios&#8217;a \u00e7\u0131k\u0131\u015f yapma: <code>$np->nagios_exit(...);<\/code><\/p>\n<h4>\u00d6rnek: <code>Nagios::Plugin<\/code> ile Disk Kontrol\u00fc<\/h4>\n<p>Daha \u00f6nce yazd\u0131\u011f\u0131m\u0131z disk kontrol eklentisini <code>Nagios::Plugin<\/code> mod\u00fcl\u00fc ile yeniden yazal\u0131m. Bu, kodun nas\u0131l daha temiz ve standart hale geldi\u011fini g\u00f6sterecektir.<\/p>\n<pre><code class=\"language-perl\">#!\/usr\/bin\/perl\n<h2>check_disk_usage_np.pl<\/h2>\n\nuse strict;\nuse warnings;\nuse Nagios::Plugin;\n\nmy $np = Nagios::Plugin->new(\n    usage => \"Usage: %s -w <percent_warning> -c <percent_critical> -p <path>\",\n    version => '0.1',\n    blurb => 'Checks disk usage for a specified path.',\n);\n\n<h2>Arg\u00fcmanlar\u0131 tan\u0131mla<\/h2>\n$np->add_arg(\n    spec => 'warning|w=i',\n    help => 'Warning threshold for disk usage in percent (e.g., 80)',\n    default => 80,\n);\n$np->add_arg(\n    spec => 'critical|c=i',\n    help => 'Critical threshold for disk usage in percent (e.g., 95)',\n    default => 95,\n);\n$np->add_arg(\n    spec => 'path|p=s',\n    help => 'Path to check disk usage for (e.g., \/var)',\n    default => '\/',\n);\n\n<h2>Arg\u00fcmanlar\u0131 ayr\u0131\u015ft\u0131r<\/h2>\n$np->getopts();\n\nmy $path = $np->opts->path;\nmy $warning_percent = $np->opts->warning;\nmy $critical_percent = $np->opts->critical;\n\n<h2>E\u015fik de\u011ferlerini kontrol et<\/h2>\nif ($warning_percent >= $critical_percent) {\n    $np->nagios_exit(\n        CRITICAL,\n        \"Warning threshold ($warning_percent%) must be less than critical threshold ($critical_percent%).\"\n    );\n}\n\n<h2>df komutunu \u00e7al\u0131\u015ft\u0131r<\/h2>\nmy $df_output = <code>df -Pk \"$path\" 2>\/dev\/null<\/code>;\nmy @lines = split(\/\\n\/, $df_output);\n\nif (@lines < 2) {\n    $np->nagios_exit(UNKNOWN, \"Could not get disk info for $path.\");\n}\n\nmy $disk_line = $lines[1];\nmy @fields = split(\/\\s+\/, $disk_line);\n\nmy $used_percent = 0;\nif (defined $fields[4] && $fields[4] =~ \/(\\d+)%\/) {\n    $used_percent = $1;\n} else {\n    $np->nagios_exit(UNKNOWN, \"Could not parse disk usage for $path.\");\n}\n\n<h2>Durumu kontrol et ve Nagios'a \u00e7\u0131k\u0131\u015f yap<\/h2>\nif ($used_percent >= $critical_percent) {\n    $np->add_perfdata(\n        label => \"disk_usage\",\n        value => $used_percent,\n        uom => \"%\",\n        warning => $warning_percent,\n        critical => $critical_percent,\n        min => 0,\n        max => 100,\n    );\n    $np->nagios_exit(\n        CRITICAL,\n        \"Disk usage for $path: ${used_percent}% (threshold: ${critical_percent}%)\"\n    );\n} elsif ($used_percent >= $warning_percent) {\n    $np->add_perfdata(\n        label => \"disk_usage\",\n        value => $used_percent,\n        uom => \"%\",\n        warning => $warning_percent,\n        critical => $critical_percent,\n        min => 0,\n        max => 100,\n    );\n    $np->nagios_exit(\n        WARNING,\n        \"Disk usage for $path: ${used_percent}% (threshold: ${warning_percent}%)\"\n    );\n} else {\n    $np->add_perfdata(\n        label => \"disk_usage\",\n        value => $used_percent,\n        uom => \"%\",\n        warning => $warning_percent,\n        critical => $critical_percent,\n        min => 0,\n        max => 100,\n    );\n    $np->nagios_exit(\n        OK,\n        \"Disk usage for $path: ${used_percent}%\"\n    );\n}<\/code><\/pre>\n<p>Bu eklenti, <code>--warning<\/code>, <code>--critical<\/code> ve <code>--path<\/code> arg\u00fcmanlar\u0131n\u0131 otomatik olarak i\u015fler. Ayr\u0131ca, <code>nagios_exit<\/code> fonksiyonu ile durum ve mesaj\u0131 kolayca belirleyebilir ve <code>add_perfdata<\/code> ile performans verilerini ekleyebilirsiniz. Bu y\u00f6ntem, eklentilerinizin daha tutarl\u0131 ve y\u00f6netilebilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Test:<\/p>\n<pre><code class=\"language-bash\">\/usr\/local\/nagios\/libexec\/check_disk_usage_np.pl --help\n\/usr\/local\/nagios\/libexec\/check_disk_usage_np.pl -p \/ -w 80 -c 95<\/code><\/pre>\n<h3>Eklentilerin Nagios&#8217;a Entegrasyonu<\/h3>\n<p>Eklentiyi yaz\u0131p test ettikten sonra, Nagios&#8217;un bu eklentiyi kullanabilmesi i\u00e7in yap\u0131land\u0131rma dosyalar\u0131n\u0131 g\u00fcncellemeniz gerekir.<\/p>\n<h4>Komut Tan\u0131mlama<\/h4>\n<p>Nagios, \u00e7al\u0131\u015ft\u0131raca\u011f\u0131 her eklenti i\u00e7in bir &#8220;komut&#8221; tan\u0131m\u0131na ihtiya\u00e7 duyar. Bu tan\u0131mlar genellikle <code>\/usr\/local\/nagios\/etc\/objects\/commands.cfg<\/code> dosyas\u0131nda veya kendi olu\u015fturdu\u011funuz bir <code>.cfg<\/code> dosyas\u0131nda bulunur.<\/p>\n<p>\u00d6rnek olarak <code>check_disk_usage_np.pl<\/code> eklentisi i\u00e7in bir komut tan\u0131mlayal\u0131m:<\/p>\n<pre><code class=\"language-nagios\"># commands.cfg dosyas\u0131na ekle\n\ndefine command {\n    command_name    check_disk_perl\n    command_line    $USER1$\/check_disk_usage_np.pl -p '$ARG1$' -w '$ARG2$' -c '$ARG3$'\n}<\/code><\/pre>\n<p>Burada:<br \/>\n*   <code>command_name<\/code>: Nagios&#8217;ta bu komutu \u00e7a\u011f\u0131rmak i\u00e7in kullanaca\u011f\u0131n\u0131z isimdir.<br \/>\n*   <code>command_line<\/code>: Nagios&#8217;un \u00e7al\u0131\u015ft\u0131raca\u011f\u0131 ger\u00e7ek komuttur.<br \/>\n*   <code>$USER1$<\/code>: Nagios yap\u0131land\u0131rmas\u0131nda tan\u0131mlanm\u0131\u015f bir makrodur ve genellikle <code>\/usr\/local\/nagios\/libexec\/<\/code> yolunu g\u00f6sterir.<br \/>\n*   <code>$ARG1$<\/code>, <code>$ARG2$<\/code>, <code>$ARG3$<\/code>: Nagios servis tan\u0131mlamas\u0131ndan gelen arg\u00fcmanlard\u0131r.<\/p>\n<h4>Servis Tan\u0131mlama<\/h4>\n<p>Komutu tan\u0131mlad\u0131ktan sonra, Nagios&#8217;un hangi host \u00fczerinde hangi servisi bu komutla kontrol edece\u011fini belirtmelisiniz. Bu tan\u0131mlar genellikle <code>\/usr\/local\/nagios\/etc\/objects\/services.cfg<\/code> dosyas\u0131nda veya ayr\u0131 bir host\/servis <code>.cfg<\/code> dosyas\u0131nda bulunur.<\/p>\n<p>\u00d6rnek olarak <code>localhost<\/code> \u00fczerinde k\u00f6k dizin (<code>\/<\/code>) i\u00e7in disk kullan\u0131m\u0131n\u0131 kontrol eden bir servis tan\u0131mlayal\u0131m:<\/p>\n<pre><code class=\"language-nagios\"># services.cfg dosyas\u0131na ekle\n\ndefine service {\n    use                     local-service\n    host_name               localhost\n    service_description     Disk Usage \/ (Perl)\n    check_command           check_disk_perl!\/!80!95\n    notifications_enabled   1\n    max_check_attempts      5\n    check_interval          5\n    retry_interval          1\n    check_period            24x7\n    notification_interval   60\n    notification_period     24x7\n    contact_groups          admins\n}<\/code><\/pre>\n<p>Burada:<br \/>\n*   <code>use local-service<\/code>: <code>templates.cfg<\/code> dosyas\u0131nda tan\u0131ml\u0131 <code>local-service<\/code> \u015fablonunu kullan\u0131r, bu da ortak ayarlar\u0131 miras almay\u0131 sa\u011flar.<br \/>\n*   <code>host_name<\/code>: Kontrol\u00fcn yap\u0131laca\u011f\u0131 hostun ad\u0131.<br \/>\n*   <code>service_description<\/code>: Nagios aray\u00fcz\u00fcnde g\u00f6r\u00fcnen servis a\u00e7\u0131klamas\u0131.<br \/>\n*   <code>check_command<\/code>: \u00c7al\u0131\u015ft\u0131r\u0131lacak komut ve komuta g\u00f6nderilecek arg\u00fcmanlar. <code>!<\/code> i\u015fareti arg\u00fcmanlar\u0131 ay\u0131r\u0131r. Burada <code>\/<\/code> <code>$ARG1$<\/code>, <code>80<\/code> <code>$ARG2$<\/code>, <code>95<\/code> <code>$ARG3$<\/code> olarak eklentiye iletilir.<\/p>\n<h4>CentOS 6&#8217;da Nagios Yap\u0131land\u0131rmas\u0131n\u0131n Yeniden Y\u00fcklenmesi<\/h4>\n<p>Yap\u0131land\u0131rma dosyalar\u0131n\u0131 g\u00fcncelledikten sonra, Nagios&#8217;un bu de\u011fi\u015fiklikleri g\u00f6rmesi i\u00e7in yap\u0131land\u0131rmay\u0131 yeniden y\u00fcklemeniz gerekir.<\/p>\n<p>\u00d6nce, yap\u0131land\u0131rma dosyalar\u0131n\u0131zda bir hata olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek iyi bir uygulamad\u0131r:<\/p>\n<pre><code class=\"language-bash\">sudo \/usr\/local\/nagios\/bin\/nagios -v \/usr\/local\/nagios\/etc\/nagios.cfg<\/code><\/pre>\n<p>E\u011fer \u00e7\u0131kt\u0131 <code>Total Warnings: 0, Total Errors: 0<\/code> \u015feklinde ise, yap\u0131land\u0131rman\u0131z ge\u00e7erlidir. Ard\u0131ndan Nagios servisini yeniden y\u00fckleyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo service nagios reload\n<h2>veya<\/h2>\nsudo service nagios restart<\/code><\/pre>\n<p>Nagios yeniden y\u00fcklendikten sonra, Nagios web aray\u00fcz\u00fcne giri\u015f yaparak yeni ekledi\u011finiz servisin durumunu kontrol edebilirsiniz. Birka\u00e7 dakika i\u00e7inde eklentiniz \u00e7al\u0131\u015fmaya ba\u015flayacak ve durumu bildirecektir.<\/p>\n<h3>En \u0130yi Uygulamalar ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>Nagios eklentileri geli\u015ftirirken dikkate alman\u0131z gereken baz\u0131 en iyi uygulamalar ve ipu\u00e7lar\u0131 vard\u0131r.<\/p>\n<h4>G\u00fcvenlik<\/h4>\n<p>*   <strong>Giri\u015f Do\u011frulama:<\/strong> Eklentilerinizin ald\u0131\u011f\u0131 t\u00fcm arg\u00fcmanlar\u0131 dikkatlice do\u011frulay\u0131n. K\u00f6t\u00fc niyetli kullan\u0131c\u0131lar, komut enjeksiyonu veya di\u011fer zafiyetler olu\u015fturabilecek \u00f6zel karakterler veya komutlar g\u00f6ndermeye \u00e7al\u0131\u015fabilir. <code>Nagios::Plugin<\/code> mod\u00fcl\u00fc, arg\u00fcman ayr\u0131\u015ft\u0131rma konusunda yard\u0131mc\u0131 olur, ancak kendi kodunuzda da dikkatli olmal\u0131s\u0131n\u0131z.<br \/>\n*   <strong>Minimum Yetki:<\/strong> Eklentiler, Nagios kullan\u0131c\u0131s\u0131 (genellikle <code>nagios<\/code>) taraf\u0131ndan \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Bu kullan\u0131c\u0131n\u0131n sadece eklentinin \u00e7al\u0131\u015fmas\u0131 i\u00e7in gereken minimum yetkilere sahip oldu\u011fundan emin olun.<br \/>\n*   <strong>Temiz Kod:<\/strong> G\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 azaltmak i\u00e7in kodunuzu temiz, okunabilir ve bak\u0131m\u0131 kolay tutun.<\/p>\n<h4>Hata Y\u00f6netimi ve G\u00fcnl\u00fckleme<\/h4>\n<p>*   <strong>UNKNOWN Durumu:<\/strong> Eklentiniz beklenen bir hata ile kar\u015f\u0131la\u015ft\u0131\u011f\u0131nda (\u00f6rne\u011fin, gerekli bir komut bulunamad\u0131, bir dosya okunamaz vb.), <code>UNKNOWN<\/code> durumunu d\u00f6nd\u00fcr\u00fcn. Bu, Nagios&#8217;a eklentinin durumu belirleyemedi\u011fini bildirir.<br \/>\n*   <strong>STDOUT\/STDERR:<\/strong> Eklentinizden gelen t\u00fcm hata mesajlar\u0131n\u0131 standart hataya (STDERR) de\u011fil, standart \u00e7\u0131kt\u0131ya (STDOUT) yaz\u0131n. Nagios sadece STDOUT&#8217;u okur.<br \/>\n*   <strong>G\u00fcnl\u00fckleme:<\/strong> Daha karma\u015f\u0131k eklentilerde, sorun giderme i\u00e7in \u00f6nemli olaylar\u0131 veya hatalar\u0131 <code>syslog<\/code>&#8216;a veya \u00f6zel bir g\u00fcnl\u00fck dosyas\u0131na yazmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz. <code>Sys::Syslog<\/code> gibi Perl mod\u00fclleri bu konuda yard\u0131mc\u0131 olabilir.<\/p>\n<h4>Performans<\/h4>\n<p>*   <strong>H\u0131zl\u0131 \u00c7al\u0131\u015fma:<\/strong> Nagios, bir\u00e7ok eklentiyi k\u0131sa aral\u0131klarla \u00e7al\u0131\u015ft\u0131r\u0131r. Eklentilerinizin m\u00fcmk\u00fcn oldu\u011funca h\u0131zl\u0131 ve verimli \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flay\u0131n. Uzun s\u00fcren eklentiler, Nagios sunucusunun performans\u0131n\u0131 etkileyebilir veya zaman a\u015f\u0131m\u0131na u\u011frayabilir.<br \/>\n*   <strong>Kaynak T\u00fcketimi:<\/strong> Eklentilerinizin CPU, bellek veya disk G\/\u00c7 gibi sistem kaynaklar\u0131n\u0131 a\u015f\u0131r\u0131 t\u00fcketmedi\u011finden emin olun.<br \/>\n*   <strong>Gereksiz \u0130\u015flemlerden Ka\u00e7\u0131nma:<\/strong> Her kontrolde ayn\u0131 verileri tekrar tekrar hesaplamak yerine, m\u00fcmk\u00fcnse \u00f6nbelle\u011fe alma veya daha verimli algoritmalar kullanma yollar\u0131n\u0131 aray\u0131n.<\/p>\n<h4>Dok\u00fcmantasyon<\/h4>\n<p>*   <strong>Eklenti \u0130\u00e7i Dok\u00fcmantasyon:<\/strong> Her eklentinizin ba\u015f\u0131nda, ne i\u015fe yarad\u0131\u011f\u0131n\u0131, hangi parametreleri ald\u0131\u011f\u0131n\u0131, hangi durum kodlar\u0131n\u0131 d\u00f6nd\u00fcrd\u00fc\u011f\u00fcn\u00fc ve \u00f6rnek kullan\u0131m\u0131n\u0131 a\u00e7\u0131klayan yorumlar ekleyin.<br \/>\n*   <strong><code>--help<\/code> veya <code>--usage<\/code>:<\/strong> Eklentilerinizin <code>--help<\/code> veya <code>--usage<\/code> parametreleriyle \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda k\u0131sa bir kullan\u0131m k\u0131lavuzu veya yard\u0131m mesaj\u0131 g\u00f6stermesini sa\u011flay\u0131n. <code>Nagios::Plugin<\/code> mod\u00fcl\u00fc bunu otomatik olarak sa\u011flar.<br \/>\n*   <strong>Nagios Yap\u0131land\u0131rmas\u0131:<\/strong> Nagios yap\u0131land\u0131rma dosyalar\u0131n\u0131zda da komut ve servis tan\u0131mlamalar\u0131 i\u00e7in a\u00e7\u0131klay\u0131c\u0131 yorumlar kullan\u0131n.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, Nagios eklentilerini Perl ile CentOS 6 \u00fczerinde nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde inceledik. Nagios eklentilerinin temel prensiplerini, d\u00f6n\u00fc\u015f kodlar\u0131n\u0131n ve durum mesajlar\u0131n\u0131n \u00f6nemini \u00f6\u011frendik. Basit &#8220;Hello World&#8221; eklentisinden ba\u015flayarak, CPU, disk ve s\u00fcre\u00e7 kontrol\u00fc gibi ger\u00e7ek d\u00fcnya senaryolar\u0131na y\u00f6nelik eklentiler geli\u015ftirdik. \u00d6zellikle <code>Nagios::Plugin<\/code> mod\u00fcl\u00fcn\u00fcn, eklenti geli\u015ftirme s\u00fcrecini nas\u0131l basitle\u015ftirdi\u011fini ve standartla\u015ft\u0131rd\u0131\u011f\u0131n\u0131 g\u00f6rd\u00fck. Son olarak, eklentilerinizi Nagios&#8217;a entegre etmek i\u00e7in komut ve servis tan\u0131mlamalar\u0131n\u0131 nas\u0131l yapaca\u011f\u0131n\u0131z\u0131 ve Nagios yap\u0131land\u0131rmas\u0131n\u0131 nas\u0131l yeniden y\u00fckleyece\u011finizi \u00f6\u011frendik.<\/p>\n<p>Perl&#8217;in g\u00fc\u00e7l\u00fc metin i\u015fleme yetenekleri ve Linux sistemleriyle olan do\u011fal uyumu, onu Nagios eklentileri yazmak i\u00e7in ideal bir dil haline getirir. Bu rehberde edindi\u011finiz bilgilerle, kendi \u00f6zel izleme ihtiya\u00e7lar\u0131n\u0131z\u0131 kar\u015f\u0131layacak g\u00fc\u00e7l\u00fc ve esnek Nagios eklentileri geli\u015ftirebilirsiniz. Unutmay\u0131n, iyi bir Nagios eklentisi sadece i\u015fini yapmakla kalmaz, ayn\u0131 zamanda g\u00fcvenli, verimli ve iyi dok\u00fcmante edilmi\u015f olmal\u0131d\u0131r. Bu prensiplere uyarak, sistemlerinizin sa\u011fl\u0131\u011f\u0131n\u0131 proaktif bir \u015fekilde izleyebilir ve potansiyel sorunlar\u0131 b\u00fcy\u00fcmeden \u00f6nce tespit edebilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Nagios Eklentilerini Perl ile CentOS 6 \u00dczerinde Olu\u015fturma Rehberi\nNagios, sistem ve a\u011f altyap\u0131lar\u0131n\u0131 izlemek i\u00e7in end\u00fcstri standard\u0131 haline","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[241],"tags":[],"class_list":{"0":"post-38103","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-linux","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Nagios Eklentilerini Perl ile CentOS 6 \u00dczerinde Olu\u015fturma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nagios Eklentilerini Perl ile CentOS 6 \u00dczerinde Olu\u015fturma Rehberi\" \/>\n<meta property=\"og:description\" content=\"Nagios Eklentilerini Perl ile CentOS 6 \u00dczerinde Olu\u015fturma Rehberi Nagios, sistem ve a\u011f altyap\u0131lar\u0131n\u0131 izlemek i\u00e7in end\u00fcstri standard\u0131 haline\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-23T09:41:01+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Nagios Eklentilerini Perl ile CentOS 6 \u00dczerinde Olu\u015fturma Rehberi\",\"datePublished\":\"2026-01-23T09:41:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/\"},\"wordCount\":2619,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Linux\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/\",\"name\":\"Nagios Eklentilerini Perl ile CentOS 6 \u00dczerinde Olu\u015fturma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-23T09:41:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nagios Eklentilerini Perl ile CentOS 6 \u00dczerinde Olu\u015fturma Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Nagios Eklentilerini Perl ile CentOS 6 \u00dczerinde Olu\u015fturma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Nagios Eklentilerini Perl ile CentOS 6 \u00dczerinde Olu\u015fturma Rehberi","og_description":"Nagios Eklentilerini Perl ile CentOS 6 \u00dczerinde Olu\u015fturma Rehberi Nagios, sistem ve a\u011f altyap\u0131lar\u0131n\u0131 izlemek i\u00e7in end\u00fcstri standard\u0131 haline","og_url":"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-23T09:41:01+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Nagios Eklentilerini Perl ile CentOS 6 \u00dczerinde Olu\u015fturma Rehberi","datePublished":"2026-01-23T09:41:01+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/"},"wordCount":2619,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Linux"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/","name":"Nagios Eklentilerini Perl ile CentOS 6 \u00dczerinde Olu\u015fturma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-23T09:41:01+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/nagios-eklentilerini-perl-ile-centos-6-uzerinde-olusturma-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Nagios Eklentilerini Perl ile CentOS 6 \u00dczerinde Olu\u015fturma Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=38103"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38103\/revisions"}],"predecessor-version":[{"id":38104,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38103\/revisions\/38104"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}