📅  最后修改于: 2020-11-01 04:21:20             🧑  作者: Mango
使用托运人收集来自不同服务器或数据源的日志。发货人是服务器中安装的Logstash的实例,该实例访问服务器日志并发送到特定的输出位置。
它主要将输出发送到Elasticsearch进行存储。 Logstash从以下来源获取输入-
在此示例中,我们使用文件输入插件收集Windows中安装的Apache Tomcat 7服务器的日志,并将其发送到其他日志。
在这里,Logstash配置为访问本地安装的Apache Tomcat 7的访问日志。文件插件的路径设置中使用了正则表达式模式,以从日志文件中获取数据。它的名称中包含“访问”,并添加了一个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"
}
}
我们可以使用以下命令运行Logstash。
C:\logstash\bin> logstash –f Logstash.conf
访问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
您可以在输出事件中看到,添加了一个类型字段,并且该事件出现在消息字段中。
{
"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":[]
}
在本节中,我们将讨论使用STDIN插件收集日志的另一个示例。
这是一个非常简单的示例,其中Logstash读取用户在标准输入中输入的事件。在我们的例子中,是命令提示符,它将事件存储在output.log文件中。
input {
stdin{}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/output.log"
}
}
我们可以使用以下命令运行Logstash。
C:\logstash\bin> logstash –f Logstash.conf
在命令提示符下编写以下文本-
用户输入了以下两行。 Logstash通过定界符设置分隔事件,其默认值是’\ n’。用户可以通过更改文件插件中定界符的值来进行更改。
Tutorialspoint.com welcomes you
Simply easy learning
以下代码块显示了输出日志数据。
{
"@timestamp":"2016-12-25T11:41:16.518Z","@version":"1","host":"Dell-PC",
"message":"tutrialspoint.com welcomes you\r","tags":[]
}
{
"@timestamp":"2016-12-25T11:41:53.396Z","@version":"1","host":"Dell-PC",
"message":"simply easy learning\r","tags":[]
}