Logstash 输入
Logstash 支持来自不同来源的大量日志。它正在与著名的资源合作,如下所述。
从指标收集日志
系统事件和其他时间活动记录在指标中。 Logstash 可以从系统指标访问日志并使用过滤器处理它们。这有助于以自定义方式向用户显示事件的实时提要。指标根据指标过滤器的 flush_interval 设置 和默认情况下刷新;设置为 5 秒。
我们通过收集和分析通过 Logstash 运行的事件并在命令提示符上显示实时提要来跟踪 Logstash 生成的测试指标。
logstash.conf
此配置包含一个生成器插件,由 Logstash 提供用于测试指标,并将类型设置设置为"生成"以进行解析。在过滤阶段,我们仅通过使用 'if ' 语句。然后,指标插件对仪表设置中指定的字段进行计数。指标插件在 flush_interval 中指定的每 5 秒后刷新计数。
最后,使用 编解码器插件将过滤器事件输出到标准输出,如命令提示符以进行格式化。编解码器插件使用 [ events][ rate_1m] 值在 1 分钟滑动窗口中输出每秒事件。
input { generator { type => "generated" } } filter { if [type] == "generated" { metrics { meter => "events" add_tag => "metric" } } } output { # only emit events with the 'metric' tag if "metric" in [tags] { stdout { codec => line { format => "rate: %{[events][rate_1m]}" } } }
运行 Logstash
我们可以使用以下命令运行 Logstash。
>logsaths –f logstash.conf
标准输出(命令提示符)
rate: 1308.4 rate: 1308.4 rate: 1368.654529135342 rate: 1416.4796003951449 rate: 1464.974293984808 rate: 1523.3119444107458 rate: 1564.1602979542715 rate: 1610.6496496890895 rate: 1645.2184750334154 rate: 1688.7768007612485 rate: 1714.652283095914 rate: 1752.5150680019278 rate: 1785.9432934744932 rate: 1806.912181962126 rate: 1836.0070454626025 rate: 1849.5669494173826 rate: 1871.3814756851832 rate: 1883.3443123790712 rate: 1906.4879113216743 rate: 1925.9420717997118 rate: 1934.166137658981 rate: 1954.3176526556897 rate: 1957.0107444542625
从 Web 服务器收集日志
Web 服务器会生成大量有关用户访问和错误的日志。 Logstash 有助于使用输入插件从不同服务器提取日志并将它们存储在一个集中位置。
我们正在从本地 Apache Tomcat 服务器的 stderr 日志中提取数据并将其存储在 output.log 中。
logstash.conf
这个Logstash配置文件指示Logstash读取apache错误日志并添加一个名为"apache-error"的标签。我们可以简单地使用文件输出插件将其发送到output.log。
input { file { path => "C:/Program Files/Apache Software Foundation/Tomcat 7.0 /logs/*stderr*" type => "apache-error" } } output { file { path => "C:/tpwork/logstash/bin/log/output.log" } }
运行 Logstash
我们可以使用以下命令运行 Logstash。
>Logstash –f Logstash.conf
输入日志样本
这是示例 stderr 日志,它在 Apache Tomcat 中发生服务器事件时生成。
C:\Program Files\Apache Software Foundation\Tomcat 7.0\logs\ tomcat7-stderr.2016-12-25.log
Dec 25, 2016 7:05:14 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-9999"] Dec 25, 2016 7:05:14 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8009"] Dec 25, 2016 7:05:14 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 823 ms
输出.log
{ "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/ tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z", "@version":"1","host":"Dell-PC", "message":"Dec 25, 2016 7:05:14 PM org.apache.coyote.AbstractProtocol start\r", "type":"apache-error","tags":[] } { "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/ tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z", "@version":"1","host":"Dell-PC", "message":"INFO: Starting ProtocolHandler [ \"ajp-bio-8009\"]\r","type":"apache-error","tags":[] } { "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/ tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z", "@version":"1","host":"Dell-PC", "message":"Dec 25, 2016 7:05:14 PM org.apache.catalina.startup.Catalina start\r", "type":"apache-error","tags":[] } { "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/ tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z", "@version":"1","host":"Dell-PC", "message":"INFO: Server startup in 823 ms\r","type":"apache-error","tags":[] }
从数据源收集日志
首先,让我们了解如何配置 MySQL 进行日志记录。在[mysqld]下MySQL数据库服务器的 my.ini文件中添加以下几行。
在windows中,它存在于MySQL的安装目录中,在:
C:\wamp\bin\mysql\mysql5.7.11
在UNIX中,你可以在-/etc/mysql/my.cnf中找到它
general_log_file = "C:/wamp/logs/queries.log" general_log = 1
logstash.conf
在这个配置文件中,file plugin 用于读取 MySQL 日志并将其写入 ouput.log。
input { file { path => "C:/wamp/logs/queries.log" } } output { file { path => "C:/tpwork/logstash/bin/log/output.log" } }
queries.log
这是在 MySQL 数据库中执行的查询生成的日志。
2016-12-25T13:05:36.854619Z 2 Query select * from test1_users 2016-12-25T13:05:51.822475Z 2 Query select count(*) from users 2016-12-25T13:05:59.998942Z 2 Query select count(*) from test1_users
输出.log
{ "path":"C:/wamp/logs/queries.log","@timestamp":"2016-12-25T13:05:37.905Z", "@version":"1","host":"Dell-PC", "message":"2016-12-25T13:05:36.854619Z 2 Query\tselect * from test1_users", "tags":[] } { "path":"C:/wamp/logs/queries.log","@timestamp":"2016-12-25T13:05:51.938Z", "@version":"1","host":"Dell-PC", "message":"2016-12-25T13:05:51.822475Z 2 Query\tselect count(*) from users", "tags":[] } { "path":"C:/wamp/logs/queries.log","@timestamp":"2016-12-25T13:06:00.950Z", "@version":"1","host":"Dell-PC", "message":"2016-12-25T13:05:59.998942Z 2 Query\tselect count(*) from test1_users", "tags":[] }
下一章:Logstash 解析日志
Logstash 使用输入插件接收日志,然后使用过滤插件来解析和转换数据。日志的解析和转换是根据输出目的地中存在的系统执行的。 Logstash 解析日志数据并仅转发必填字段。之后,这些字段被转化为目标系统兼容且 ...