Logstash 简明教程
Logstash - Collecting Logs
使用 shippers 从不同的服务器或数据源中收集日志。Shipper 是 Logstash 中安装的一个实例,它可以访问服务器日志并将其发送到特定的输出位置。
它主要向 Elasticsearch 发送输出以进行存储。Logstash 从以下来源获取输入——
-
STDIN
-
Syslog
-
Files
-
TCP/UDP
-
Microsoft windows Eventlogs
-
Websocket
-
Zeromq
-
Customized extensions
Collecting Logs Using Apache Tomcat 7 Server
在这个示例中,我们使用 file 输入插件收集了安装在 Windows 中的 Apache Tomcat 7 服务器的日志并将其发送到另一个日志。
logstash.conf
在此处,Logstash 配置为访问本地安装的 Apache Tomcat 7 的访问日志。file 插件的路径设置中使用了正则表达式模式来从日志文件中获取数据。它在其名称中包含“access”,它添加了一个 apache 类型,这样有助于在集中目的地源中区分 apache 事件和其他事件。最后,输出事件将显示在 output.log 中。
input {
file {
path => "C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/*access*"
type => "apache"
}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/output.log"
}
}
Apache Tomcat Log
访问 Apache Tomcat 服务器及其 Web 应用 ( http://localhost:8080 ) 以生成日志。Logstash 实时读取日志中更新的数据,并按配置文件中指定的格式将其存储到 output.log 中。
Apache Tomcat 根据日期生成一个新的访问日志文件,并将访问事件记录到其中。在本例中,它是在 Apache Tomcat 的 logs 目录中的 localhost_access_log.2016-12-24.txt。
0:0:0:0:0:0:0:1 - - [
25/Dec/2016:18:37:00 +0800] "GET / HTTP/1.1" 200 11418
0:0:0:0:0:0:0:1 - munish [
25/Dec/2016:18:37:02 +0800] "GET /manager/html HTTP/1.1" 200 17472
0:0:0:0:0:0:0:1 - - [
25/Dec/2016:18:37:08 +0800] "GET /docs/ HTTP/1.1" 200 19373
0:0:0:0:0:0:0:1 - - [
25/Dec/2016:18:37:10 +0800] "GET /docs/introduction.html HTTP/1.1" 200 15399
output.log
你可以在输出事件中看到,添加了一个类型字段,事件显示在消息字段中。
{
"path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
localhost_access_log.2016-12-25.txt",
"@timestamp":"2016-12-25T10:37:00.363Z","@version":"1","host":"Dell-PC",
"message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:00 +0800] \"GET /
HTTP/1.1\" 200 11418\r","type":"apache","tags":[]
}
{
"path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z",
"@version":"1","host":"Dell-PC",
"message":"0:0:0:0:0:0:0:1 - munish [25/Dec/2016:18:37:02 +0800] \"GET /
manager/html HTTP/1.1\" 200 17472\r","type":"apache","tags":[]
}
{
"path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z",
"@version":"1","host":"Dell-PC",
"message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:08 +0800] \"GET /docs/
HTTP/1.1\" 200 19373\r","type":"apache","tags":[]
}
{
"path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:20.436Z",
"@version":"1","host":"Dell-PC",
"message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:10 +0800] \"GET /docs/
introduction.html HTTP/1.1\" 200 15399\r","type":"apache","tags":[]
}
Collecting Logs Using STDIN Plugin
在本部分中,我们将讨论使用 STDIN Plugin 收集日志的另一个示例。
logstash.conf
这是一个非常简单的示例,在其中 Logstash 正在读取用户在标准输入中输入的事件。在本例中,它是命令提示符,它存储在 output.log 文件中的事件。
input {
stdin{}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/output.log"
}
}