phpLogCon ile Online Log Monitoring
Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYjEwtA9' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349
Son bir kaç yazımda, bir merkezi log sunucusunun kurulum ve yapılandırması ile ilgili konulara değinmiştim. Bu yazıda ise, merkezi bir log sunucusunun sağladığı avantajlardan birisi olan online log monitoring konusundan bahsetmek ve böyle bir ihtiyacınız olması durumunda kullanabileceğiniz phpLogCon isimli yazılıma değinmek istiyorum. |
phpLogCon, gerçek zamanlı log görüntülemeye imkan veren temiz bir web arayüzü olmakla beraber, içerisindeki arama ve filtreleme fasiliteleri sayesinde geçmişe yönelik loglar üzerinde rahatça analiz yapabilme olanağı da sağlıyor. Oldukça kullanışlı bir yazılım olmasından ötürü, yazının devamımda, kurulumu, yapılandırması ve özelleştirilmesi ile ilgili konulara değinmek istiyorum.
İçerik İndexi |
Döküman Özeti
Yazıyla ilgili kısa bir özet geçmek gerekirse, ilk olarak phpLogCon'un sunduğu özelliklere kısaca değineceğim. Sonra kurulum için sisteminizde önceden kurulu olması gereken uygulamaları belirtecek, kurulum ve yapılandırma işlemlerine ait notları paylaşacağım. Son olarak da farklı formattaki loglar için ne şekilde özelleştirme yapılabileceğini anlatacağım. |
1. phpLogCon
phpLogCon, yazının girişinde de belirttiğim gibi syslog, windows event gibi günlük loglarını işleyen ve bir web arayüzüne yansıtan güzel bir uygulamadır. İletilerin gerçek zamanlı olarak web arayüzü üzerinden takip edilebilmesi ve geçmişe yönelik iletilerde arama yapılabilmesi gibi durumlardan ötürü epey de işe yaramaktadır.
Logları, herhangi bir database tablosundan okuyabildiği gibi text tabanlı ileti dosyalarından da parse edebilmektedir. Ayrıca, logların görüntülendiği web arabiriminin şablonunu istediğiniz gibi şekillendirilmesini sağlayıp, iletilerin sadece istediğiniz bölümlerini görebilmenize olanak sağlar. Öntanımlı olarak syslog ve windows event log iletileri için hazırlanmış şablonlar ile birlikte gelmektedir. Fakat mesela bir router'dan syslog sunucusuna gönderilen iletileri görüntülemek için orjinal iletinin kendi formatına uyumlu bir şablon oluşturmanız da mümkündür.
Arayüzün nasıl göründüğünü incelemek için aşağıdaki linkten demo sitesine ulaşabilirsiniz.
phpLogCon'un kurulumu ve yapılandırılması da oldukça basittir. Temel olarak kaynak kodlarını download edip web sunucusundaki bir dizine kopyalıyorsunuz, ardından internet tarayıcınızdan çağırdığınız da bir kurulum sihirbazı geliyor. Böylece görsel olarak kurulumu yapabiliyorsunuz.
Yapılandırma işlemlerinde ayarları ana konfigurasyon dosyasına kaydedebileceğiniz gibi bir database'de tutulmasını da sağlayabiliyorsunuz. Database yöntemini seçmeniz durumunda bir daha conf dosyaları ile oynamanıza gerek kalmıyor ve log kaynağı ekleme, şablon oluşturma vs. gibi tüm yapılandırma işlemlerini web arayüzündeki admin kısmından yapabiliyorsunuz.
Bu bakımdan ben ayarları kaydetmek için conf dosyası yerine bir MySQL database'i kullanmayı tavsiye ediyorum. Yazıda da bu şekilde bir kurulumdan bahsedeceğim.
1.1 Gereksinimler
Giriş bölümünden de anlaşılacağı gibi, phpLogCon kullanabilmek için sisteminizde önceden apache ve php5'in kurulu olması gerekiyor. Ayrıca, ana ayarları ve logları db'de tutmak için MySQL'e ihtiyacınız bulunuyor.
Yazının konusu, online monitoring olduğu ve networkte bulunan sistemlere ve network ekipmanlarına ait logların, online olarak merkezi bir yerden monitor edilmesi olduğundan dolayı phpLogCon kurulumunu yapacağınız sistemin bir syslog sunucusu olması gerekmektedir.
Merkezi syslog sunucusu için, hemen tüm dağıtımlarda default olarak gelen syslogd'yi kullanabilirsiniz, ancak uyumluluk açısından bir syslogd muadili olan rsyslog'un kullanılması önerilmektedir. Çünkü phpLogCon'u ile rsyslog aynı ekip tarafından geliştirilmektedir. Dolayısı ile benim tavsiyem de rsyslog kullanmanız olacaktır. Elbette rsyslog kullanmak istemezseniz syslogd de işinizi görecektir, yazıda anlatılan işlem adımları syslog için de geçerlidir.
Ayrıca, rsyslog sunucunuzda, loglarınızı bir database'de tutuyor olmanız da önerilen bir durumdur. Bu şekilde store edilen loglar phpLogCon ile tam uyum sağlamaktır. Elbette, logları text dosyalarında da tutuyor olabilirsiniz. Ancak bu durumda log formatları ile oynamanız gerekebiliyor. Ben logları bir MySQL db'sinde tuttuğum için bu tip bir kuruluma değineceğim. Fakat, herşey web arayüzünden görsel olarak yapıldığı için farklı konfigurasyonlar da kolayca yapılabilir.
rsyslog kullanarak bir merkezi log sunucusu kurmak isterseniz aşağıdaki dökümandan yararlanabilirsiniz.
http://www.syslogs.org/2009/09/rsyslog-ile-merkezi-log-sunucusu-kurulumu/
Toparlamak gerekirse, bu yazıda anlatılan işlem adımları, sisteminizde önceden aşağıdaki uygulamaların kurulu olduğunu varsaymaktadır.
- Apache2.2
- php5 (mysql destekli)
- mySQL
- rsyslog (sunucu tarafında)
Son olarak, bu yazıda anlatılan kurulum üzerinde mySQL desteklik rsyslog kurulu olan bir debian Lenny üzerinde yapılmıştır. Ancak işlem adımları platform bağımsızdır. Yani başka bir dağıtım kullanmanız durumunda da aynı adımları uygulayabilirsiniz. Tek ihtiyacınız olam MySQL destekli bir rsyslog sunucusudur.
1.2 Kurulum
Demin de bahsettiğim gibi kurulum epey kolay, aşağıdaki işlem adımlarını uygulayarak kurulumu kolayca yapabilmek mümkün.
phpLogCon'un download sayfası şurası: http://www.phplogcon.com/downloads bu adresten en son stable sürümünü download edeceğiz. (Bu yazının hazırlandığı tarihte son sürüm 2.6.4 v2-stable idi. Başlamadan önce yeni bir sürüm çıkıp çıkmadığını kontrol edin.)
Ben download işlemlerini /usr/local/src dizinine yapıyorum. Şimdi bu dizine girip phpLogCon'u download edelim.
# cd /usr/local/src # wget http://www.phplogcon.com/Downloads-req-getit-lid-58.phtml
Sonrasında da download edilen sıkıştırılmış paketi açıyoruz.
# tar xvfz phplogcon-2.6.4.tar.gz
Ardından, phplogcon-2.6.4 dizininin altında bulunan src dizininin içeriğini web sunucumuzun ilgili klasörüne kopyalayacağız. Ben phpLogCon'un kurulu olduğu makinayı merkezi log sunucusu olarak kullanmaktayım ve sistem üzerinden apache vs. sadece phpLogCon için kurulmuş durumda. Bu nedenle dosyaları apache'nin DocumenRoot dizinine kopyalayacağım. Siz herhangi bir alt klasore de kopyalayabilirsiniz.
debian'da ön tanımlı apache kök dizini /var/www dolayısı ile dosyaları buraya kopyalıyorum.
# cd /usr/local/src/phplogcon-2.6.4/src # cp -r * /var/www/
Şimdi, apache'nin phplogcon dosyalarını çalıştırabilmesi için /var/www dizini altına attığımız dosyaların izinlerini düzenleyelim.
Önce dosyaların sahibini apache kullanıcısı olarak set ediyoruz.
# chown -fR www-data /var/www/*
Not: www-data isimli kullanıcı debian'larda öntanımlı apache kullanıcısının adıdır. Siz bu adımdaki kullanıcı ismini kendi dağıtımınıza göre set edebilirsiniz.
Sonra da apache'ye dosyalara yazma izni veriyoruz.*
# chmod -fR 755 /var/www/*
(*) Yukarıdaki komut ile www dizini altındaki tüm dosyalara apache için full yetki vermiş olduk. Bunu yapmamızın sebebi, web tabanlı phpLogCon kurulum sihirbazınının, yapılandırma dosyalarına yazabilmesini sağlamaktır. Tüm işlemler bitince yazma izinlerini alıp sadece okuma ve çalıştırma izni verin.
Şimdi, internet tarayıcımızı açıp, kurulum sihirbazını başlatabiliriz. Ben dosyaları apache'nin kök dizinine attığım için sihirbazı direk olarak http://sunucu-ip-adresi şeklinde çağıyorum. Sunucumun ip adresi 192.168.12.242
http://192.168.12.242
Bundan sonraki tüm işlemler, kurulum sihirbazı üzerinden yürüyecek ve genel yapılandırma işlemleri yapılacak. Bu konuya yapılandırma başlığı altında değineceğim.
1.3 Yapılandırma
Kurulum sihirbazını çağırdınızda ilk olarak “Critical Error occured” başlıklı bir hata ile karşılaşıyorsunuz :) Bu normaldir, çünkü henüz yapılandırma dosyaları oluşturulmamış durumda.
Başlığın altındaki “Click here to Install phpLogCon” yazısında bulunan yazının here kısmına tıklayarak sihirbazı başlatıyoruz.
İlk açılan ekranda, kurulum için önceden bir kaç şeyin kontrol edileceği bilgisi veriliyor. Next dediğiniz zaman config.php isimli dosyanın yazılabilir olup/olmadığı belirtiliyor. Biz bir dosyaları yükleme sırasında gerekli izinleri verdiğimiz için dosyanın yazılabilir olduğu söylenecektir, dolayısı ile next diyoruz.
Bir sonraki ekran, temel yapılandırma ayarları ile ilgili bölüm. Bu alan, iki başlıktan oluşuyor. Başlıklar ve açıklamaları şu şekilde:
Frontend Options
- Number of syslog messages per page: Ön tanımlı 50'dir ve bir sayfada kaç satır log çıktısı gösterileceğini belirtir.
- Message Character Limit for the main window: Mesaj bölümünün ilk kaç karakterinin gösterileceği belirlenir. Default olarak 80'dir. Eğer 0 yaparsanız iletilerdeki mesajların tamamı gösterilir.
- Character display limit for all string type fields : Bu da iletilerin görüntülendiği ekrandaki field'ların kaç karakterden oluşacağını belirtir. Ön tanımlı değer 30'dur. Bu ayarla, date, hostname vs. gibi field'ların 30 karakter ile sınırlanacağı belirtilir.
- Show message details popup: 2. maddede belirtilen mesaj alanının üzerine geldiğiniz zaman mesajın tamamı bir popup ekranda gösterilir. 2. maddedeki alana 0 dediyseniz buna NO diyebilirsiniz. Ancak ben popup özelliğini faydalı buluyorum.
- Automatically resolved IP Addresses (inline): İletilerin gönderildiği sistemlerin isimlerinin çözümlenmesini belirten bölüm. Bu şekilde iletinin mesaj bölümünde ileti sahibi sistemin IP adresi yerine hostname'i belirtilir. Ancak ortamınızda bir dns sunucu yoksa ve ya reverse dns kayıtları tutulmuyorsa bu şıkka NO diyebilirsiniz.
User Database Options
Ekrandaki diğer ana başlık ise “User database options” isimli bölümdür. Yapılandırma ayarlarınızı bir MySQL db'sinde tutmak isterseniz bu kısımdaki Enable User Database bölümüne Yes demeniz gerekir.
Yapılandırma ayarlarının MySQL'de tutulmasının güzel yanı, yazının başında da belirttiğim üzere web arayüzünde bir de admin panelinin sunulmasıdır. Bu şekilde yeni log kaynağı eklemek ya da var olan ayarları düzenlemek, şablon oluşturmak gibi işlemleri conf dosyalarını editlemeye gerek kalmaksızın direk web arayüzünden yapabilirsiniz. Bu nedenle bilgileri database'de tutmak mantıklıdır. Dolayısı ile yes diyelim.
User Database'i aktifleştirdiğiniz zaman, ekranda, DB bilgilerini belirtmeniz gereken yeni alanlar açılıyor. Bu alanları doldurmak için öncesinde MySQL sunucusunda bir database ve kullanıcı oluşturalım.
Şimdi, yeniden sunucunun shell ekranına geçelim ve komut satırından bir mysql db ile kullanıcı oluşturalım.
Önce mysql'e bağlanalım.
# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 34 Server version: 5.0.51a-24+lenny2 (Debian) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
Önce logdb isimli bir database oluşturalım.
mysql> CREATE DATABASE logdb;
Sonrasında bu db'ye erişim izni olan bir kullanıcı oluşturuyoruz**:
mysql> CREATE USER 'log_user'@'localhost' IDENTIFIED BY 'sifre'; mysql> GRANT ALL PRIVILEGES ON logdb.* TO 'log_user'@'localhost'; mysql> FLUSH PRIVILEGES;
(**) Oluşturulan kullanıcıya, logdb database'ine full yetkilerle erişebilmesi için tanımlama yaptık. Ancak, bu yetkiler sadece localhost'tan bağlanılması durumunda geçerlidir.
DB ile ilgili işlemler bu kadar, şimdi yeniden phpLogCon'un web tabanlı arayüzüne dönüp database bilgilerinizi girin ve next diyin.
Sonraki ekran, mysql database'inde gerekli tabloların oluşturulacağını bildiren info ekranıdır. Next diyin. Ardından tabloların oluşturulduğu bildirir bir ekran daha gelecek. Buna da next diyoruz ve bir admin paneline giriş için kullanılacak user'ın oluşturulacağı ekrana geçiyoruz. Burada kendinize bir kullanıcı oluşturup Next diyoruz.
Son step olan 7. adımda, ilk log kaynağının sistem eklenme işlemi yapılıyor. Açılan ekrandaki alanlar ve açıklamaları şunlar:
Firts Syslog Source
- Name of the Source : Ana ekranda log kaynaklarının seçildiği drop down menude görünecek isim. Örnek olarak Lokal Syslog Log Dosyası ismini verebilirsiniz.
- Source Type : Source tipinin belirlendiği alan. Seçenekler arasında, Diskfile, Mysql Native ve Database (PDO) bulunuyor. Biz disk üzerindeki text tabanlı log dosyalarını monitor edeceğimiz için burada Diskfile seçili kalıyor.
- Select View : Bu kısım, log çıktılarının tiplerine göre öntanımlı oluşturulmuş şablonlardan hangisinin kullanılacağının belirlendiği yer. Seçenekler arasında syslog, windows event ve webserver field'ları bulunuyor. İlk eklenen kaynak /var/log/syslog dosyasında syslog formatında tutulan lokal loglar olduğu için burada syslog field seçiliyor. Ayrıca, kendinize özel şablonlar eklemek de mümkün. Buna özelleştirme kısmında değineceğim.
Disk Type Options
- Logline Type : Track edilecek log dosyasının içeriğinin hangi log işleyici program tarafından oluşturulduğunu belirttiğimiz alan. Bizim örneğimizde /var/log/syslog dosyası rsyslog tarafından üretildiği için burada “Syslog / Rsyslog” seçeneğini belirliyoruz. Bunun dışında, gene phpLogCon geliştiricileri tarafından yazılmış ve Windows'lar için syslog sunucusu olan Adiscon WinSyslog isimli yazılım için de bir logline tipi bulunuyor.
- Syslog File: İzlemeye alınacak log dosyasının belirtildiği alan. Örneğimizde ve default olarak /var/log/syslog.
Bu adımı da kendinize göre düzenleyip geçtikten sonra kurulum tamamlanıyor ve yapılandırmanın sorunsuz olarak bitirildiğini belirten step 8 ekranı geliyor ve Finish diyoruz.
Finish dediğiniz zaman muhtemelen /var/log/syslog dosyasının okunamadığı ile ilgili bir hata mesajı alacaksınız. Bunun nedeni apache kullanıcısının syslog isimli log dosyasını olumaya yetkisi olmayışıdır. Bu durumda, ilgili dosyanın permission'ını 644 olarak set edebilir ve apache tarafından da okunabilmesini sağlayabilirsiniz:
# chmod 644 /var/log/syslog
Not: phpLogCon'u çalıştırdığınız sunucu bu iş için özel kullanacağınız bir sistem değilse ve ayrıca sisteme birden fazla gerçek kullanıcı erişiyorsa izinleri 644'e set etmeniz /var/log/syslog dosyasının herkes tarafından okunabilmesine neden olur. Güvenlik açısından bu durumu gözetmenizi ve log sunucunuzu sadece log sunucusu olmak üzere kullanmanızı tavsiye ederim. Basit bir vmware guest bu iş için yetecek de artacaktır.
İzin işini hallttikten sonra sayfayı refresh ettiğinizde problem ortadan kalkacaktır.
Eğer loglarınızı database'de tutuyorsanız (ki bunu tavsiye ederim.) Source Type olarak DiskFile yerine db uygulamanıza uygun DB seçeneğini kullanabilirsiniz.
Database Type Options
SourceType kısmında, Diskfile yerine, Mysql kullanıyorsanız MySQL Native, başka bir db uygulamanız varsa Database (POD) seçeneğinden kendi DB'nize uygun olanı seçerek logların db'den çekilmesini belirttiğiniz zaman Disk Type Options kısmındakine ek olarak, db bilgilerinizi girmenizi isteyen field'ları doldurmanız istenecek ve ilgili bilgilerden hareketle loglar db'den çekilerek web arayüzüne yansıtılacaktır.
Logları MySQL tablolarında tutmak için uygulanması gereken yapılandırma işlemlerine http://www.syslogs.org/2009/09/rsyslog-ile-merkezi-log-sunucusu-kurulumu/ adresindeki kurulum dökümanından erişebilirsiniz.
First Syslog Source kısmını tamamladıktan sonra phpLogCon kullanıma hazır oluyor. Bundan sonra, yapmanız gereken şey admin ekranında yeni log kaynakları eklemekten ibaret.
phpLogCon benim epey işime yarayan bir uygulama, henuz tanışmadıysanız şiddetle tavsiye ederim.
Bu yazılar da ilginizi çekebilir:
- CentOS üzerine Rsyslog Kurulumu ve Yapılandırması
- FreeBSD üzerine Rsyslog Kurulumu ve Yapılandırması
- Rsyslog ile Merkezi Log Sunucusu Kurulumu
- OpenX 2.8 Ad Server Kurulumu
- OTRS (Open Ticket Request System) Kurulumu
Merhaba,
Öncelikle bu faydalı döküman için teşekkür ederim.
Sorum şu ki;
RSYSLOG dahil tüm adımları bitirdim log manitoring dosyalarını inidirip haklarını verdim, sunucu üzerinden localhost veya sunucu IP sini yazınca aşağıdaki hatayı alıyorum. aca derede yanlışım olabilir.
“It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet”
Teşekkürler..
[Cevapla]
Selamlar,
“It works” apache’nin default karşılama sayfasıdır. Gorunen o ki phplogcon dosyaları tam olarak /var/www/ dizini altında bulunmuyor. Sanırım atladığınız bir adım var gibi gorunuyor…
[Cevapla]