Graylog İle Logları İzleme

Graylog yazı dizisine kaldığımız yerden devam ediyoruz. Sunucumuzda oluşan logları graylog sunucumuza gönderiyor olacağız.

graylogui

Öncelikle elimize bir adet WS 2012 R2 Standart kurulu sunucumuz bulunmakta. Önceki yazılarımızda bahsettiğimiz üzere Ubuntu 18.04 kurulu graylog sunucumuz yer almaktadır.

WS Kurulu sunucumuzdan graylog’a sys log göndermek için, windows tarafında log collector işini görecek bir çok uygulama mevcut. Biz sık tercih edilenlerden biri olan nxlog ile işlemlerimizi gerçekleştireceğiz. nxlog’un topluluk ve Kurumsal olmak üzere iki sürümü mevcut. Buradan kullanım kılavuzuna göz atabilir, buradan da kurulum dosyasına erişebilirsiniz.

Windows için olan installer dosyasını indirerek windows sunucumuza nxLog kurulumunu tamamlıyoruz.

Config Dosyasını Düzenleme

Nxlog kurulumu tamamlandıktan sonra, Program Files(x86) dizini altında nxlog klasörünün içerisinde konfigürasyon dosyası oluşacaktır. Bu dosya içeriğini aşağıda yer alan örnek config dosyası ile değiştirebilirsiniz.

prg files

Örnek nxLog konfigürasyonu

## Please set the ROOT to your nxlog installation directory

#define ROOT C:\Program Files\nxlog
define ROOT C:\Program Files (x86)\nxlog

Moduledir %ROOT%\modules
CacheDir  %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir  %ROOT%\data
LogFile %ROOT%\data\nxlog.log

<Extension syslog>
  Module xm_syslog  
</Extension>

# Monitor application log files
<Input watchfile>
  Module im_file
  File 'C:\\path\\to\\*.log'
  Exec $Message = $raw_event;
  Exec if file_name() =~ /.*\\(.*)/ $SourceName = $1;
  SavePos TRUE  
  Recursive TRUE
</Input>

# Monitor a single application log file
#<Input watchfile2>
#  Module im_file
#  # File 'C:\\path\\to\\a\\single\\file.log'
#  Exec $Message = $raw_event;
#  Exec if file_name() =~ /.*\\(.*)/ $SourceName = $1;
#  SavePos TRUE  
#  Recursive TRUE
#</Input>

# Monitor Windows event logs
<Input eventlog>
  # Uncomment for Windows Vista/2008 or later 
  Module im_msvistalog
  
  # Uncomment for Windows 2000 or later
  # Module im_mseventlog
</Input>

<Processor eventlog_transformer>
  Module pm_transformer
  Exec $Hostname = hostname();
  OutputFormat syslog_rfc5424  
</Processor>

<Processor filewatcher_transformer>
  Module pm_transformer
  
  # Uncomment to override the program name
  # Exec $SourceName = 'PROGRAM NAME';
    
  Exec $Hostname = hostname();
  OutputFormat syslog_rfc5424
</Processor>

<Output syslogout>
  Module om_udp
  Host your_Graylog_Server_ip
  Port port_number_of_created_input
</Output>

<Route 1>
  Path eventlog => eventlog_transformer => syslogout
</Route>

<Route 2>
  Path watchfile => filewatcher_transformer => syslogout
</Route>

# Replace route 2 with this implementation if watchfile2 is active
#<Route 2>
#  Path watchfile, watchfile2 => filewatcher_transformer => syslogout
#</Route>

Burada dikkat edilmesi gereken husus, graylog sunucu ve port bilgilerinin doğru girilmesi. Örnek şablonda “Output” etiketlerinde graylog sunucu ve input port bilgisini girmeliyiz. Yukarıdaki config ayarları sys udp içindir. Config dosyasını kaydettikten sonra nxlog servisini restart etmemiz gerekmektedir.

nxlog servis

Şimdi sıra geldi loglarımız için input oluşturmaya. Graylog sunucumuzdan, graylog web arayüzüne login olduktan sonra System/Inputs menüsü altında “Input” seçeneği ile yeni bir input oluşturma arayüzüne geçiyoruz.

input

Input türünü “Syslog UDP” olarak seçip, “launch new input” butonu ile input oluşturmaya başlıyoruz

Bind address 0.0.0.0

Port 2508 (Nxlog config sunucumuzda host port bilgisi ile aynı olmalıdır)

input2

Ayarları yaptıktan sonra kaydediyoruz.

input3

input4

Görüldüğü üzere sunucumuzdan logları toplamaya başladık

Windows Sunucumda nxlog ile uğraşırken, Sql Server Management Studio Kurulumu başlatmıştım. Kurulumun tamamlandığı dair log mesajını graylog sunucumdan takip etmek istiyorum

Bunun için öncelikle “Sources” menusunden ilgili arayüze geliyoruz

input5

Üsteki ekranda oluşturduğunuz(başarılı) log gönderen input kaynaklarını göreceksiniz. Biz hp-server isimli kaynağımızdan Sql Server Management Studio kurulumuna dair logu izlemek istiyoruz. Sağ tarafta yer alan search ikonuna tıklayarak ilgili sunucunun loglarına geçiş yapıyoruz

input6

Açılan ekranda ister “Fields” alanından EvetType seçerek kriter oluşturabilirsiniz. Ama en pratik yaklaşım Kendi Sorgumuzu yazmak. Hp-server isimli kaynaktan INFO levelinde, mesaj içerisinde “SQL” yer alan logları getirmek istiyoruz.

Bunun için source:hp-server AND EventType:INFO AND message:”SQL” sorgusunu yazdık .

input7

Görüldüğü üzere zaten bize en son SQL ile ilgili kurulumun tamamlandığına dair log gelmiş.

Yazının github linki

April 25, 2019 tarihinde oluşturuldu.