IIS 日志和事件日志
IIS Logs and Event Logs
首先感谢您的宝贵意见和时间。
我最近为我刚开始工作的公司设置了一个 Elk 堆栈。 (这是我第一次使用 Logstash 和 Nxlog。)我想做的是使用 nxlog 将 IIS 日志和事件日志从同一个 Web 服务器发送到 logstash。
我只是不明白如何从一个来源发送两种类型的日志并让 logstash.conf 正确过滤此数据。
这是我的nxlog.conf
## This is a sample configuration file. See the nxlog reference manual about the
## configuration options. It should be installed locally and is also available
## online at http://nxlog.org/nxlog-docs/en/nxlog-reference-manual.html
## Please set the ROOT to the folder your nxlog was installed into,
## otherwise it will not start.
#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 json>
Module xm_json
</Extension>
<Input iis_1>
Module im_file
File "F:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log"
ReadFromLast True
SavePos True
Exec if $raw_event =~ /^#/ drop();
</Input>
<Input iis_2>
Module im_file
File "F:\inetpub\logs\LogFiles\W3SVC2\u_ex*.log"
ReadFromLast True
SavePos True
Exec if $raw_event =~ /^#/ drop();
</Input>
<Input iis_4>
Module im_file
File "F:\inetpub\logs\LogFiles\W3SVC4\u_ex*.log"
ReadFromLast True
SavePos True
Exec if $raw_event =~ /^#/ drop();
</Input>
<Input eventlog>
Module im_msvistalog
Exec $EventReceivedTime = integer($EventReceivedTime) / 1000000; to_json();
</Input>
<Output out_iis>
Module om_tcp
Host 10.191.132.86
Port 5555
OutputType LineBased
</Output>
<Route 1>
Path iis_1, iis_2, iis_4, eventlog=> out_iis
</Route>
我现在的logstash.conf
input {
tcp {
type => "iis"
port => 5555
host => "10.191.132.86"
}
}
filter {
if [type] == "iis" {
grok {
match => ["@message", "%{TIMESTAMP_ISO8601:timestamp} %{IPORHOST:hostip} %{WORD:method} %{URIPATH:page} %{NOTSPACE:query} %{NUMBER:port} %{NOTSPACE:username} %{IPORHOST:clientip} %{NOTSPACE:useragent} %{NOTSPACE:referrer} %{NUMBER:response} %{NUMBER:subresponse} %{NUMBER:scstatus} %{NUMBER:timetaken}"]
}
}
}
output {
elasticsearch {
protocol => "http"
host => "10.191.132.86"
port => "9200"
}
}
看来您可以通过设置类型和执行 if type else this type 来过滤不同的数据。但是,如果它们来自同一来源,我该如何指定不同的类型?
:) 谢谢!
一种方法是通过每个日志中的已知记录条目进行过滤,并且不会存在于其他日志中,例如 [cs_bytes 等]:
例如
if [iisfield] {
mark type as IIS
else
mark type as EventLog
}
我已经编写了一个 IIS 和事件日志代理,可以捕获 Logit.io 的日志,它们可能已经完成了您想要的所有操作
NXLog 将字段 SourceModuleName 设置为值 iis_1, iis_2,等等。你可能想用它来代替。
首先感谢您的宝贵意见和时间。
我最近为我刚开始工作的公司设置了一个 Elk 堆栈。 (这是我第一次使用 Logstash 和 Nxlog。)我想做的是使用 nxlog 将 IIS 日志和事件日志从同一个 Web 服务器发送到 logstash。
我只是不明白如何从一个来源发送两种类型的日志并让 logstash.conf 正确过滤此数据。
这是我的nxlog.conf
## This is a sample configuration file. See the nxlog reference manual about the
## configuration options. It should be installed locally and is also available
## online at http://nxlog.org/nxlog-docs/en/nxlog-reference-manual.html
## Please set the ROOT to the folder your nxlog was installed into,
## otherwise it will not start.
#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 json>
Module xm_json
</Extension>
<Input iis_1>
Module im_file
File "F:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log"
ReadFromLast True
SavePos True
Exec if $raw_event =~ /^#/ drop();
</Input>
<Input iis_2>
Module im_file
File "F:\inetpub\logs\LogFiles\W3SVC2\u_ex*.log"
ReadFromLast True
SavePos True
Exec if $raw_event =~ /^#/ drop();
</Input>
<Input iis_4>
Module im_file
File "F:\inetpub\logs\LogFiles\W3SVC4\u_ex*.log"
ReadFromLast True
SavePos True
Exec if $raw_event =~ /^#/ drop();
</Input>
<Input eventlog>
Module im_msvistalog
Exec $EventReceivedTime = integer($EventReceivedTime) / 1000000; to_json();
</Input>
<Output out_iis>
Module om_tcp
Host 10.191.132.86
Port 5555
OutputType LineBased
</Output>
<Route 1>
Path iis_1, iis_2, iis_4, eventlog=> out_iis
</Route>
我现在的logstash.conf
input {
tcp {
type => "iis"
port => 5555
host => "10.191.132.86"
}
}
filter {
if [type] == "iis" {
grok {
match => ["@message", "%{TIMESTAMP_ISO8601:timestamp} %{IPORHOST:hostip} %{WORD:method} %{URIPATH:page} %{NOTSPACE:query} %{NUMBER:port} %{NOTSPACE:username} %{IPORHOST:clientip} %{NOTSPACE:useragent} %{NOTSPACE:referrer} %{NUMBER:response} %{NUMBER:subresponse} %{NUMBER:scstatus} %{NUMBER:timetaken}"]
}
}
}
output {
elasticsearch {
protocol => "http"
host => "10.191.132.86"
port => "9200"
}
}
看来您可以通过设置类型和执行 if type else this type 来过滤不同的数据。但是,如果它们来自同一来源,我该如何指定不同的类型?
:) 谢谢!
一种方法是通过每个日志中的已知记录条目进行过滤,并且不会存在于其他日志中,例如 [cs_bytes 等]:
例如
if [iisfield] {
mark type as IIS
else
mark type as EventLog
}
我已经编写了一个 IIS 和事件日志代理,可以捕获 Logit.io 的日志,它们可能已经完成了您想要的所有操作
NXLog 将字段 SourceModuleName 设置为值 iis_1, iis_2,等等。你可能想用它来代替。