2014年8月15日 星期五

[記事] Send windows log to logstash

屬於阿宅世界的技術文章,想看的再點開,切莫自誤 !



Logstash 好好用,但是linux base 的東西,要叫他吃 windows 的log有點工程要做,以下的方式是透過 Eventlog to syslog 的方式執行

配置
syslogd : 10.0.0.1:6666
windows : 10.0.0.2

先找一台 linux 當syslogd ,但不需要額外裝其他程式,叫 logstash 聽個 UDP 的 port (eg. 6666)就好,設定如下
input {
  udp {
    port => 6666
    type => "win-event-log"
  }
}
然後重啟 logstash ,再用 netstat -an 看到 udp port 6666 有在LISTEN就行了

接著在目標的windows server 安裝 Eventlog to syslog (evtsys)
由 https://code.google.com/p/eventlog-to-syslog/下載
解開來後執行
evtsys.exe -i -h 10.0.0.1 -p 6666

他是有其他參數可以設,也需要設,但是不work,之後透過registry修改
其中 -i 表示 install ,-h 指定 syslogd 的位址, -p 指定 syslogd 聽的 port

完成安裝後,如果想修改facility level 或是log level 需透過 regedit.exe
路徑為 : HKEY_LOCAL_MACHINE\SOFTWARE\ECN\EvtSys\3.0

之後透過 services.msc 看看evtSys 有沒有變成 windows 的長駐服務並開起,如果沒有,手動開啟它 (2003/2008/2012 下安裝完的狀態不一定相同 orz)
當 service 開啟後,就會看到 windows 的 log 如排山倒海而來了 orz

如果windows莫名其妙的訊息實在太多,可以在 logstash 的設定檔中 filter 的部份加上類似以下的設定
filter{
  if [type] == "win-event-log"
    grok {
      match => ["message", "%{SYSLOGBASE} %{NUMBER:event_id}: %{GREEDYDATA:msg}"]
    }

    if [event_id] == "你想濾掉的 event_id " {
      drop {}
    }
  }
}

p.s 如果 grok 中的PATTERN 一直沒辦法正確的 parse ,可以在 https://grokdebug.herokuapp.com/ 進行測試

EvtSys (4.5) 說明文件 https://code.google.com/p/eventlog-to-syslog/downloads/detail?name=Readme_4.5.0.pdf

0 意見:

張貼留言