Munin ile ağ izleme

0
tongucyumruk
Birçok ortamda kullanılan bilgisayar ağlarının gerek sayısının gerekse genişliğinin artması sonucunda ağ üzerindeki sistemleri izlemeye yönelik yazılımlara olan ihtiyaç artmıştır. Bu belgede, bahsedilen türden bir ağ izleme programı olan Munin'in nasıl kurulacağı ve bu programın yardımıyla kişisel ev ağlarından geniş alan ağlarına kadar her tür ağın nasıl izlenebileceği anlatılmaktadır.

Table of Contents

1 Ağ izlemeye giriş

Internet'e ArpaNet olarak hitap edildiği ve ağa sadece 4 bilgisayarın bağlı olduğu günler çok geride kaldı. Her geçen gün gelişen ve ucuzlayan ağ ve donanım teknolojileri sayesinde sunucu ve sunucular arası bağlantıların sayısı çığ gibi büyüyerek arttı. Günümüzde insanların evlerinde dahi yerel ağlar ve bu ağlara hizmet veren sunucular kurulması olağan bir durum haline geldi. Sunucular artıp ağ yapıları karmaşıklaştıkça bu sunucuların durumlarını doğrudan, teker teker el yordamıyla takip etmek gitgide imkansız bir hal almaya başladı. Tabiiki bu tip otomatize edilebilecek, belli parametreler kullanılarak ölçülebilecek işlerin el yordamıyla yapılması UNIX geleneğine pek uygun sayılmazdı. Böylece bu işi bizim yerimize yapacak olan ağ izleme programları ortaya çıktı.

Ağ izleme programları, sistem sağlığını takip eden, bir terslik çıktığında uyarı üreten veya duruma göre önlem alanlar ve istatistik tutanlar olarak iki kategoriye ayrılabilir. Tabiiki başka ayrımlar da yapılabilir fakat bu yazının konusu dahilinde bu gruplandırma yeterli olacaktır.

Birinci tipteki programların en meşhuru şüphesiz ki Nagios'tur. Nagios ağınızdaki servisleri sürekli olarak takip altında tutar ve bu servislerde sıradışı bir durum oluşması halinde sizi e-posta, SMS, Jabber gibi servisler üzerinden uyarır. Yaptığınız ayarlara göre Nagios belli koşullar altında sizin belirlediğiniz bir komutu çalıştırarak duruma müdahale de edebilir. Nagios tarzı yazılımların bu güzel özelliklerine karşılık önemli bir eksikleri oluşan durumlara ilişkin verdiği bilginin anlık olmasıdır. Nagios size sistemin o anki durumunu sunar. Her ne kadar geçmiş olayları takip edebileceğiniz bir kayıt sistemi içeriyorsa da size sistemin genel gidişatını izleyebileceğiniz istatistiki bilgiler sunmaz.

İstatistiksel izleme yazılımları işte tam olarak Nagios gibi anlık izleme yazılımlarının bu eksiğini kapatırlar. İstatistiksel bir izleme yazılımı size ağ üzerinde izlediğiniz sistemlerin günlük, haftalık, aylık ve yıllık hareket biçimlerine ilişkin raporlar sunar. Bu raporlar sayesinde sisteme daha geniş bir açıdan bakarak sistem ihtiyaçlarını daha kesin bir biçimde saptamanız ve ileride oluşabilecek problemlere ilişkin daha sağlıklı projeksiyonlar yapmamız mümkün olur.

Hem itiraf edin, hangi geek renkli ve baştan aşağıya bilgi yüklü grafikleri sevmez ki?

2 Munin nedir?

Munin1 bir istatistiksel ağ izleme yazılımıdır. Munin adı İskandinav mitolojisinden gelir. Odin'in omuzlarına konarak ona haberleri ileten iki adet kuzgunu vardır. Bu kuzgunlardan biri Hugin (düşünce) diğeri ise Munin (bellek) olarak anılır. İşte Munin adını bu kuzgundan alır.

UNIX dünyasında hepsi birbirinden farklı özelliklere sahip olan birçok istatistiksel ağ izleme programı vardır (bkz: MRTG, Cacti vs...). Bu kadar programın arasından Munin'i farklı kılan özellikler nedir?
  • UNIX sistemleri izlemek için SNMP gibi protokollere ihtiyaç duymaz. İzlenen sistemlerde Munin'in kendi izleme servisi çalışır.
  • UNIX dışı sistemleri SNMP üzerinden takip edebilir.
  • Sunucu - istemci yapısı sayesinde yükü izlenen sistemlere dağıtarak sunucu sistemde izleme süreçlerinden dolayı oluşabilecek gereksiz sistem yükünün önüne geçer.
  • Nagios ile entegre çalışabilir. Takip ettiği servislerin durumu belirlenen sınırları aştığında Nagios'a uyarı veya kritik hata mesajı gönderebilir.
  • Eklentiere açık yapısı ve sade eklenti mimarisi sayesinde Bash betikleri ile bile çok rahatlıkla kendi eklentilerinizi yazarak hayal gücünüzün izin verdiği herşeyi takip edebilirsiniz.

3 Munin kurulumu

Bir Munin kurulumu iki adet bileşenden oluşur: Sunucu ve istemci. Munin sunucusu sistemleri takip eden verileri toplayıp veritabanına kaydeder ve sistemlerden gelen verilerin grafiğini çizer. Munin istemcisi ise üzerinde çalıştığı sistemden bilgileri toplar ve sunucuya iletir. Sunucu sistemde aynı zamanda istemci sistemi de çalışabileceği gibi sunucunun tek başına çalışması da mümkündür.

Debian GNU/Linux sistemlerde Munin istemci ve sunucusunu APT sistemi üzerinden kolayca yükleyebilirsiniz. Sunucu için munin ve istemci için munin-node paketlerini yüklemeniz yeterlidir.

Bunun yanında Munin sunucusu tarafından üretilen istatistikleri web sayfası üzerinden görüntüleyebilmek için sisteminizde bir adet web sunucunun kurulu olması gerekmektedir. Munin sunucusu cron üzerinden çalışıp statik raporlar ürettiğinden Apache kurmanıza gerek yoktur. Apache yerine thttpd gibi daha küçük ve hafif sunucuları tercih edebilirsiniz.

4 Sunucu ayarları

Munin sunucusunun ayarlarını /etc/munin/munin.conf dosyasından yapabilirsiniz. Burada Munin veritabanının, sistem kayıtlarının ve html çıktısının nereye yerleştirileceği gibi sisteme özel ayarlar ile takip edilecek istemcilerin tanımlandığı bölüm bulunur.

4.1 Sistem ayarları

APT üzerinden yapılan kurulumlarda bu ayarlar doğrudan Debian sisteminin dosya yerleşim standartlarına uygun biçimde öntanımlı olarak ayarlanmış şekilde gelir. Kaynak koddan yapılan kurulumlarda veya öntanımlı kurulumu sisteminizin farklı ihtiyaçları sebebiyle özelleştirmek isteyeceğinizi düşünerek bu ayarları bir açıklamakta fayda vardır.
  • dbdir: Bu ayar Munin'in takip ettiği sistemlerden gelen verileri içeren veritabanını tutacağı dizini belirtir. Bu dizinin munin kullanıcısı tarafından yazılabilir olması gereklidir.
  • htmldir: HTML çıktısının yerleştirileceği dizini belirtir. Web sunucunuzun görebileceği ve munin kullanıcısının yazabileceği bir dizin olmalıdır.
  • logdir: Munin'in işleyişine ilişkin kayıtların tutulacağı dizini belirtir. Diğer dizinler gibi bu dizin de munin kullanıcısı tarafından yazılabilir olmalıdır.
  • rundir: Bu dizin Munin'in çalışma anında yaratacağı kilit ve pid dosyası gibi verileri tutar.
  • tmpldir: Bu dizinde Munin'in ürettiği html çıktısına ilişkin şablon dosyaları tutulur.
  • graph_period: Munin öntanımlı olarak zamanı saniye biriminden ifade eder. Bu ayara minute değerinin verilmesi halinde öntanımlı zaman birimi dakika olacaktır.
  • contact.*.command: ``*'' karakteri yerine bir isim yazarak bir kullanıcıya izlenen servislerdeki durumların değişimini bildirebilirsiniz. Örneğin:
#Servis durumunu tonguc kullanicisina bildir
contact.tonguc.command mail -s "Servis durumu haberi" tonguc@localhost
#Servis durumunu Nagios'a ilet
contact.nagios.command send_nsca -H localhost -c /etc/send_nsca.conf

4.2 İstemci tanımları

İstemci tanımları bölümünde ağımızdaki izlenecek istemcileri tanımlarız. İstemciler üzerinde izlenecek servisler ise istemci tarafında tanımlanacağı için bu bölümde sadece makinalara ilişkin tanımlar yapılır. Örnek bir istemci tanımı şu biçimdedir:
[makina.ag.adi]
address 123.123.123.123
port 4949
use_node_name yes
Köşeli parantezler içerisinde sistemin ağımızdaki tam adını yazdıktan sonra alttaki satırlarda o sisteme ilişkin bilgileri yazarız. Bu bilgileri kısaca özetleyelim.
  • address: İstemcinin ağ üzerindeki IP adresi veya DNS'e kayıtlı adını içerir. Bir istemci tanımına eklenmesi gereken tek mecburi kayıttır.
  • port: Normal koşullar altında Munin sunucusu istemciden bilgileri istemcinin 4949 numaralı portundan alır. Bunun yerine farklı bir port kullanılması durumunda bunun ayar dosyasında port komutu ile belirtilmesi gerekir.
  • use_node_name: Özellikle bir istemcinin kendi bildirdiği sistem adının değişebilmesi durumunda (mesela dizüstü bilgisayarlarda) daima o sistem için ayar dosyasında belirtilen ismin ullanılmasını sağlar.
Bunların yanında farklı alan adları için özel ayarlar kullanılması veya birden fazla sistem üzerindeki istatistiklerden gelen verilerin toplamının hesaplanması gibi amaçlarla kullanılabilecek komutlar da mevcuttur. Bu komutlarla birlikte munin.conf dosyasında kullanılabilecek tüm ayarların listesine Munin Wiki'sinden2 ulaşabilirsiniz.

5 İstemci ayarları

Munin sisteminde asıl izleme işi tamamen istemci tarafından yapılır. İstemcinin neleri takip edeceği tamamen /etc/munin/plugins/ dizinindeki dosyalar tarafından belirlenir. Bu dizine yerleştirilen her bir çalıştırılabilir dosya bir Munin eklentisi olarak değerlendirilir ve Munin'in kabul edeceği biçimde çıktı üretmesi beklenir. Tabii istemci ayarları yardımıyla dosya isimlerinin belli kriterlere uymasını sağlamak mümkündür. Munin istemci ayar dosyası iki parçadan oluşur. Birinci parça Munin istemcisine ilişkin temel ayarların yapıldığı /etc/munin/munin-node.conf dosyasıdır. Eklentilere ilişkin ayarlar ise /etc/munin/plugin-conf.d/ dizininin içindeki dosyalarda tutulur.

5.1 Sistem ayarları

Bu dosyada Munin'in arkaplanda çalışan daemon sürecine ilişkin ayarlar tutulur. Bu ayarlar şöyle listelenebilir:
  • log_level: Munin istemcisi tarafından tutuluacak kayıtların içereceği detay seviyesini belirler. 0 ile 4 arasında bir değer almalıdır. Yüksek değerler daha detaylı kayıt anlamına gelir.
  • log_file: İstemci sürecinin kayıtlarının tutulacağı dosyayı belirler.
  • port: İstemcinin sunucudan gelen istekler için dinleyeceği portu belirler. Öntanımlı değeri 4949'dur.
  • background: Bu ayar çalıştırılan istemci sürecinin arkaplana atılarak daemon olarak çalıştırılıp çalıştırılmayacağını belirler.
  • host: Munin istemci sürecinin dinleyeceği IP adresini ayarlar. Öntanımlı olarak Munin bütün IP adreslerinde dinlemeye geçer. Burada ihtiyaç olmayan adresleri devredışı bırakmak güvenlik açısından faydalı olacaktır.
  • user ve group: Munin istemcisinin hangi kullanıcı ve grup haklarıyla çalışacağını belirler. Her ne kadar tüm eklentileri öntanımlı değeri olan root yetkileriyle çalıştırmak tehlikeli olsa da bu yetkileri kullanmanın mecburi olması durumunda eklentiler teker teker farklı kullanıcı yetkileriyle çalışmak üzere ayarlanabilir.
  • ignore_file: Eklenti dizininde çalıştırılabilir dosyalar taranırken gözardı edilecek dosyaların tespit edilmesini sağlayan düzenli ifadedir. Birden fazla defa tekrar edilebilir.
  • host_name: Bu sisteme bağlanan Munin sunucusunun sistemin ismini doğru olarak tespit edememesi halinde kullanılacak sistem adını belirler.
  • allow: Öntanımlı olarak sisteme yapılan bütün bağantılar reddedilir. Birden fazla tekrarlanabilen bu komut yardımıyla sisteme bağlanma izni olan sistemler belirlenir. Bir sistemin Munin istemcisine erişim yetkisi olup olmadığını tespit etmek için bu komut ile belirlenen düzenli ifade karşı taraftaki sistemin IP adresine uygulanır.

5.2 Eklenti ayarları

Munin eklentilerinin ayarları çevre değişkenleri yardımıyla yapılır. /etc/munin/plugins-conf.d/ dizinindeki ayar dosyaları yardımıyla bir eklentinin hangi kullanıcı yetkileri ile çalışacağı ve o eklenti çalışırken kullanılacak olan çevre değişkenleri ayarlanabilir. Örnek bir eklenti ayarı şu şekilde olabilir:
[mysql*]
user root
env.mysqlopts --defaults-extra-file=/etc/mysql/debian.cnf
Köşeli parantezler içindeki kısım eklenti adını belirler. Örnekte de olduğu gibi ``*'' karakteri kullanılarak birden fazla eklentiye ilişkin ayarlar yapılabilir. Örneğin yukarıdaki ayarlar sayesinde adı mysql ile başlayan bütün eklentilere mysqlopts çevre değişkeni --defaults-extra-file=/etc/mysql/debian.cnf değeri ile uygulanır. Bunun yanında user ve group parametreleri yardımıyla eklentinin hangi kullanıcının yetkileri ile çalışacağını ayarlayabilirsiniz.

Bir diğer ilginç ayar ise command komutudur. Bu şekilde bilirtilen komut o eklentinin yerini alır. Bu sayede sözkonusu eklenti yerine sizin verdiğiniz komut çalıştırılacaktır. Bu komutun içerisinde kullanacağınız %c karakteri ise yerine geçilen gerçek komut olarak oraya yerleştirilir. Çok karışık bir şekilde ifade ettim. En iyisi bir örnekle açıklamak.

Eğer Munin istemciniz güvenlik gerekçeleri ile root yetkilerinde çalışmıyorsa fakat takip etmek istediğiniz servis (mesela Postfix'te kuyrukta bekleyen e-posta sayısı) bu eklentinin farklı yetkilerle çalışmasını gerektiriyorsa şöyle bir yöntem uygulayabilirsiniz:
[postfix*]
command sudo -u postfix %c
Eğer sudo ayarlarını doğru olarak yaptıysanız bu sayede Postfix'e ilişkin bütün eklentiler postfix kullanıcısının yetkileriyle çalışırken ana Munin süreciniz yetkisiz bir kullanıcı olarak çalışmaya devam edebilecektir.

6 Munin eklentileri

Munin kendi içinde oldukça geniş bir eklenti arşivine sahiptir. Bu eklentiler sayesinde Apache sunucunuza gelen isteklerden sabit disklerinizin S.M.A.R.T. ölçümlerine kadar birçok bilgiyi sürekli olarak takip edebilirsiniz. Munin'in Debian paketinden kurulması halinde kurulum betiği sisteminizi tarar ve sisteminizin ayarlarına bakarak uygun nitelikteki eklentileri otomatik olarak aktif hale getirir. Munin'in kendi içinde gelen eklentilerin tamamı /usr/share/munin/plugins dizininde bulunur. Debian tarafından otomatik kurulmamış olan eklentileri buradan /etc/munin/plugins/ dizinine kopyalamanız eklentinin aktif hale gelmesi için yeterli olacaktır. Aynı şekilde sisteminizde çalışmasını istemediğiniz eklentileri de bu dizinin dışına alarak veya silerek devredışı bırakabilirsiniz.

7 Kendi eklentilerinizi yazmak

Munin'nin gerek kendi içinde gelen gerekse eklenti kataloğu3 üzerinden indirilebilen birçok eklentisi mevcuttur. Her ne kadar oldukça geniş bir ihtiyaç yelpazesine hitap eden eklentiler mevcutsa da yer yer kendi eklentilerinizi yazmanız gerekebilir.

Munin için eklenti yazmak oldukça kolaydır. Eğer geçmişte ufak tefek Bash betikleri yazmışsanız Munin ile çalışmakta zorlanmazsınız. Munin eklentisi yazmak o kadar kolaydır ki Munin'in içinde öntanımlı olarak gelen eklentilerin tamamı standart Sh veya Perl kullanılarak yazılmıştır. Munin eklentileri yazarken herhangi bir programlama dili veya kütüphane bağımlılığı yoktur. Yazdığınız eklenti Munin'in kabul edeceği biçimde çıktı ürettiği sürece dilediğiniz dilde eklenti yazabilirsiniz.

Bir munin eklentisinin uyması gereken iki mecburi, iki de seçimlik kural vardır.
  1. Bir munin eklentisi kendi başına çalıştırıldığı zaman takip ettiği verileri o anki değerlerini standart çıktıya yazmalıdır.
  2. Eklenti config parametresi ile çalıştırıldığında çizilecek grafiğin başlığı, takip ettiği veri alanlarının isimleri gibi bilgileri standart çıktıya yazmalıdır.
  3. Mecburi olmamakla beraber bir eklenti autoconf parametresini destekleyebilir. Bu parametre ile çalıştırıldığında eklenti çevresini denetleyerek çalışma ortamının çalışması için gerekli koşulları sağlayıp sağlamadığına karar vermeli ve duruma göre yes veya no biçiminde tek satırlık bir çıktı üretmelidir.
  4. Son olarak suggest parametresi özellikle ethernet arayüzü gibi birden fazla veri kaynağının bulunabilmesi halinde kullanılabilecek değerleri döndürmelidir.
Munin eklentileri bu çıktıları Munin'in anlayacağı biçimde üretmelidir. Temel anlamda bu biçim anahtar değer ikilisi şeklindedir. Şimdi bir grafiğin ayarları için kullanabileceğimiz değerleri görelim.

7.1 Genel grafik ayarları

Bu ayarlar yardımıyla grafiğimizin çıktısının alacağı biçimi ayarlayabiliriz. Bu ayarlar grafiğimizin hangi kategoride olacağı, çizilecek verinin minimum ve maksimum değerleri gibi bilgileri içerir.
  • graph_title: Çizilecek grafiğin başlığıdır. Grafiğin neyi takip ettiğine ilişkin bilgi vermeyi amaçlar. Kullanımı mecburidir.
  • graph_category: Grafiğin dahil olduğu üst başlık. Munin tarafından üretilen grafikler belli başlıklar altında (ağ, disk vs...) gruplandırılır. Bu ayar sayesinde çizdirdiğiniz grafiğin hangi kategoriye dahil olduğunu belirleyebilirsiniz.
  • update: Bu eklentinin Munin sunucusundan bilgi güncelleme isteği geldiği zaman çalıştırılıp çalıştırılmayacağını belirler.
  • graph: Bu eklentiye ilişkin verilerin grafiğinin çizilip çizilmeyeceğini belirler. Sadece veri toplanmasının amaçlandığı durumlarda kullanılabilir.
  • graph_vlabel: Grafiğin Y ekseni için kullanılacak olan etiketi belirler.
  • graph_total: Eğer bu değişkene bir değer atanırsa grafikte çizilen verilerin toplam değeri bu isimde bir alanda tutulur.
Bunlar dışında grafik içindeki alanların sıralaması, ölçeği gibi ayarları da yapmanız, hatta rrdtool'a özel komut satırı seçenekleri iletmeniz dahi mümkündür. Bu ayarların tam bir listesine Munin belgelerinin eklenti yazma bölmünden4 ulaşabilirsiniz.

7.2 Veri alanı ayarları

Veri alanı ayarları, grafik içerisinde çizilecek her alanın kendine özel ayarlarını tutar. Temel yapı olarak genel grafik ayarlarına benzerse de ufak bir farkla genel ayarlardan ayrılır. Alanların her birinin o alana özel ve başka alanlardan ayırd edilmesini sağlayan bir adı vardır. Bu ad sadece alfanumerik karakterler ile ``_'' oluşabilir ve en fazla 19 karakter uzunluğunda olabilir. Alana ilişkin ayarların her birinin önüne bu isim eklenir. Alana ilişkin ayarların genel yapısı alan_adi.ayar deger biçimindedir. Alanların ayarları için kullanılabilecek önemli seçenekler şöyledir.
  • label: Bu alan için kullanılacak etiketi belirtir. Kullanımı mecburidir.
  • draw: Alanın çiziliş biçimini belirtir. Çizgi veya alan gibi farklı biçimlerde çizim mümkündür. AREA, LINE1, LINE2, LINE3 veya STACK değerlerinden birini alabilir. Öntanımlı değeri LINE2'dir
  • min ve max: Bu alana girilebilecek verinin alt ve üst sınırlarını belirler. Verinin bu sınırları aşması halinde verinin yerine bu değerler kullanılır.
  • negative: Veri alanındaki verinin değerinin sıfırın altına düşmesi halinde kullanılacak olan etiketi belirler.
  • warning ve critical: Takip edilen verinin belli limitleri aşması halinde Munin'in uyarı mesajları üretmesini sağlar. Sadece üst limit biçiminde ayarlanabileceği gibi alt:üst şeklinde veya alt: şeklinde iki taraflı limit veya sadece bir alt limit belirlemek üzere de kullanılabilir.
Bunların dışında alanların üzerinde RPN ifadeleri çalıştırmak gibi gelişmiş seçenekler de mevcuttur. Bu seçeneklerin tam bir listesine Munin belgeleri üzerinden ulaşabilirsiniz.

8 Örnek Munin eklentisi

Şimdi basit bir Munin eklentisi yazarak yukarıda anlatılanları uygulayalım. Bu eklenti sistemdeki gerçek aktiviteyi takip etmek yerine, her çağrıldığında rastgele bir sayı üretecektir. Her ne kadar bize gerçek bir fayda sağlamasa da kısa sürede güzel görünümlü raporlar elde etmemizi sağlayacaktır.

Önce betiğimizin iskeletini yazarak başlayalım. İlk yapmamız gereken komut satırından verilecek olan parametreleri doğru olarak işlemektir.
#!/bin/bash

if [ $1 -a $1 = "config" ]; then
    dump_config
    exit 0
elif [ $1 -a $1 = "autoconf" ]; then
    dump_autoconf
    exit 0
fi
Şimdi sıra geldi dump_config ve dump_autoconf komutlarını hazırlamaya. Daha kolay olduğu için önce dump_autoconf ile başlayalım. autoconf parametresi betiğimizin uygun ortam içinde olup olmadığını test etmeye yarıyordu. Bizim bu betik içerisinde kullanacağımız ortama bağlı tek değer $RANDOM adlı çevre değişkeninin varlığı olacaktır. O zaman bu değişkenin varlığını test eden bir fonksiyon yazalım.
function dump_autoconf() {
    if [ -n $RANDOM ]; then
       echo "yes"
    else
       echo "no"
    fi
}
Şimdi de grafiğimizin ayarlarını düzgün bir biçimde görüntüleyecek olan dump_config komutunu yazalım.
function dump_config() {
    # Grafik başlığı
    echo "graph_title Rastgele sayilar"
    # Grafik kategorisi
    echo "graph_category system"
    # Dikey eksenin değeri
    echo "graph_vlabel En buyuk sayi"
    # random adlı alanın etketi
    echo "random.label Rastgele sayi"
    # random alanının alt ve üst sınırları
    echo "random.min 0"
    echo "random.max 65535"
}
Eklentimizin zor kısımlarını bitirdik. Artık tek yapmamız greken normal koşullarda gerekli sayıyı üretmek. Neyse ki bu çok zor bir iş değil.
echo "random.value $RANDOM"
Hepsini bir araya toplamak gerekirse, bir Munin eklentisi yazmak için yapmamız gereken config parametresini kabul eden ve bu parametreyi aldığında kendisine ilişkin ayarları, almadığında ise taki ettiği değerlerin o anki durumunu standart çıktısına yazan bir program yazmaktır. Örnek programımız bittiğinde elimizdeki sonuç kod şöyle olacaktır:
#!/bin/bash

function dump_autoconf() {
    if [ -n $RANDOM ]; then
        echo yes
    else
        echo no
    fi
}

function dump_config() {
    # Grafik başlığı
    echo "graph_title Rastgele sayilar"
    # Grafik kategorisi
    echo "graph_category system"
    # Dikey eksenin değeri
    echo "graph_vlabel En buyuk sayi"
    # random adlı alanın etketi
    echo "random.label Rastgele sayi"
    # random alanının alt ve üst sınırları
    echo "random.min 0"
    echo "random.max 65535"
}

if [ $1 -a $1 = "config" ]; then
    dump_config
    exit 0
elif [ $1 -a $1 = "autoconf" ]; then
    dump_autoconf
    exit 0
fi

echo "random.value $RANDOM"
Bunun ardından eklentimizi Munin eklentilerinin bulunduğu dizine kopyalayıp kullanmaya başlayabiliriz. Tabiiki Bash dışındaki dillerle de Munin eklentileri yazmak mümkündür. Hatta bu tip eklenti yazma işlerini kolaylaştıracak bazı yardımcı kütüphaneler yardımıyla Munin konfigürsyonunun sözdizimi gibi şeylerle uğraşmadan eklentilerinizi yazmanız mümkün olabilir. Python için bu amaçlarla yazdığım bir modül mevcuttur.5

9 Teşekkürler

Pazar günü, üstelik sabahın körü sayılabilecek kadar erken saatlerde yazım hatalarımı bulup düşük cümlelerimi düzelten Can Burak Çilingir'e6 çok teşekkür ederim.
1
http://munin.projects.linpro.no/
2
http://munin.projects.linpro.no/wiki/munin.conf
3
http://munin.projects.linpro.no/wiki/PluginCat
4
http://munin.projects.linpro.no/wiki/protocol-config
5
http://tonguc.ath.cx/svn/Python/munin_plugin.py
6
http://www.canb.net

This document was translated from LATEX by HEVEA.
Bu belgenin en güncel haline ve kaynak kodlarına Subversion deposu üzerinden erişebilirsiniz.

Görüşler

0
FZ
Eline sağlık! En kısa sürede bu sayfalarda UCW belgesi de görmek ümidiyle ;-)
0
cezve
heralde makale yazildiginda bu site yoktu;

http://exchange.munin-monitoring.org/

yararli olacagini dusunuyorum.
Görüş belirtmek için giriş yapın...

İlgili Yazılar

HTML kodunun içine C++ yazabilir misiniz?

FZ

COMDEX etkinliğinde dikkate değer bir çıkış yapan ve "Best of COMDEX Awards Internet Software Finalist" ünvanını kazanan Rivar Technologies "CODE: NEO" adlı ürünü ile dinamik web sayfası geliştirme kavramına yeni ve radikal bir boyut getirmeye hazırlanıyor.

Lego MindStorms Uzaktan Kumanda Projesi

FZ

Lego MindStorms setlerinin en büyük dezavantajlarından biri, RCX'de bulunan hafızanın (32 KB) ileri düzey projeler geliştirmek için yetersiz olmasıdır. Bu sorunu önlemenin yolu ise RCX'de çalışması planlanan algoritmaların bilgisayarda çalıştırılıp, algoritmanın çıktısı olan motor, sensör hareketlerinin RCX`e gönderilmesidir.

Lego MindStorms Setlerinin bu amaç için kızıl ötesi donanımı ve LeJOS'un Lego Kulesi ile RCX arasında haberleşmeyi sağlayan APIleri mevcuttur fakat haberleşme için kızıl ötesinin kullanılıyor olması kısıtlayıcıdır çünkü kızıl ötesi haberleşmesi 1-2 metre mesafe ile sınırlı kalmakla beraber kızıl ötesi alıcı/verici ledlerinin birbirlerini görme zorunluluğu olmaktadır.

Windows için Opera 6.01 çıktı

anonim

Kullanımı hızlı bir tarayıcı olan Opera'nın Windows için 6.01 versiyonu çıktı.
Birkaç gün önce, 6.01 ismiyle Opera'nın ftp sitelerine konan ve çeşitli sitelerde duyurulan beta build ise, hatalar içerdiği için kullanılmamalı.
Resmi olarak duyurulan sürüm build 1041 ve Java'sız hali (ow32enen601.exe) 3.340.448 bayt büyüklüğünde. Yanlışlıkla sızan build de aynı isimi taşıdığından, indirdiğiniz dosyanın güncel olduğunu uzunluğuna bakarak anlayabilirsiniz. Veya doğrudan download sayfasını deneyin.

Yerli montaj IRC (Chat) SERVER

anonim

Yıllarca yabancı yazılım geliştiricilerin geliştirdiği irc serverlar kullanıldı, ama artık Türk yazılım geliştirici 4 gencin geliştirdiği TR-IRCD adında bir irc (chat) yazılımı var. TRIRCD bir IRC deamon`u ve IRC servislerini (NickServ, ChanServ, OperServ) içeren bir paketten oluşuyor. Paket Bahamut ve IRCServices adında açık kodlu paketler temel alınarak geliştirilmiş. Detaylı bilgi için tr-ircd.sourceforge.net/

xynth-0.8.00 Çıktı!

anhanguera

Selam,

Aslında yeni versiyonda çok fazla bir değişiklik yok, bir iki küçük bug-fix o kadar. Yeni versiyon çıkartmamızdaki en büyük etken xynth'i mingw'ye ve GDI'a portlamamiz oldu. Yani xynth artık Windows'ta da calisabiliyor. (Ekran görüntüsü)

Windows üzerinde çalışmasının aslında hiç bir çekici yanı yok, ancak xynth'in herhangi bir platforma ne kadar kolay portlanabildiğini göstermek açısindan güzel bir örnek. ve pek tabiki biz de portlanabilirliğini test etmiş oluyoruz.