开始使用Logstash

开始使用Logstash

本节将指导处理安装Logstash 和确认一切是运行正常的,

后来的章节处理增长负载的配置来处理选择的使用案例。

这个章节包含下面的主题:

Installing Logstash

Stashing Your First Event: Basic Logstash Example

Parsing Logs with Logstash

Stalled Shutdown Detection

Logstash Processing Pipeline



基本的Logstash的例子:

测试你的Logstash 安装,运行作基本的Logstash 管道:

cd logstash-2.4.0

bin/logstash -e 'input { stdin { } } output { stdout {} }'

-e flag 让你指定一个配置直接从命令行, 指定配置做为命令行让你快速的测试配置不须要编辑文件在迭代期间。


这个管道从一个标准输入,stdin,和移动 输入到标准输出


使用Logstash 解析日志:


一个Logstash 管道 在不少使用状况下有一个或者多个input,和输出插件。


本节中的场景 建立一个Logstash 配置文件来指定那些插件和讨论 每一个插件是作什么的。


Logstash 配置文件定义你的Logstash 管道。当你启动一个Logstash 实例,使用-f 选项

来指定配置文件,定义实例的管道

一个Logstash 管道有2个须要的参数, input和output, 以及一个可选的元素,filter.


input 插件 消费源的数据, filter 插件 修改你指定的数据,

ouput 插件写数据到一个目的地


在这个章节,你建立一个Logstash 管道,让Apache web logs 做为输入,


解析那些日志来建立特定的,命名命名的字段, 写解析好的数据到Elasticsarch集群。


相比定义管道配置在命令行,你能够定义管道在一个配置文件里。


下面的文本表示配置管道的概略:

# The # character at the beginning of a line indicates a comment. Use
# comments to describe your configuration.
input {
}
# The filter part of this file is commented out to indicate that it is
# optional.
# filter {
#
# }
output {
}


这个骨架是非功能的, 由于input和output 章节没有任何正确的选项定义:


开始, 复制和黏贴骨架配置管道到一个文件叫作 first-pipeline.conf  在你的Logstash 目录。


而后下载示例数据用于下面的例子

配置Logstash 用于文件输入:

注意:


这个例子 使用文件输入插件, tail files 在真实的世界,

你可使用Filebeat 来传输日志到Logstash.


开始你的Logstash 管道,配置Logstash 实例从一个文件读取使用file input 插件:

input {
    file {
        path => "/path/to/file/*.log"
        start_position => beginning 
        ignore_older => 0 
    }
}


默认的文件input 插件的行为是监控一个文件对于新的信息, 相似于UNIX tail -f 命令的方式。


改变这个默认的行为,处理整个文件,咱们须要 指定位置 logstash 开始处理文件的位置:


设置ignore_older to 0 来禁用文件年龄检查 ,这样文件是被处理的,即便它是一天前的


替换 /path/to/file 为你的决定路径

解析 Web logs 使用Grok 过滤插件:


grok 过滤插件 是几种插件的一种 默认是可用的在logstash里。


对于细节关于如何管理logstash 插件,查看插件管理文档。



Grok filter 插件让你解析非结构化的数据到一些结构化的能够查询的 日志数据


由于grok 过滤插件寻找模式在进来的log data,配置须要你作决定关于如何识别模式,你使用状况感兴趣的。


web server 日志看起来像:

83.149.9.216 - - [04/Jan/2015:05:13:42 +0000] "GET /presentations/logstash-monitorama-2013/images/kibana-search.png
HTTP/1.1" 200 203023 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel
Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"


IP 地址在行开头是容易识别的, 括号中的时间戳,解析数据,你可使用%{COMBINEDAPACHELOG} grok pattern,


加强你的数据使用Geoip 过滤插件:


除了分析日志数据为了更好的搜索, filter plugins 能够获得补充信息从现有的数据。


做为一个例子, geoip 插件 查找IP地址, 获得地理位置信息从ip地址,增长位置信息到logs


配置你的Logstash 实例使用geoip 过滤插件经过增长下面的行到filer 章节

geoip {
    source => "clientip"
}

geoip 插件配置须要你指定 source field 的名字 包含IP地址用于查找,在这里例子中,

Clientip 字段包含IP地址。


因为过滤器是顺序评估的, 确保geoip 部分是在grok 部分后面,grok和geoip 部分是嵌套的在filter 部分像这样:

filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
    geoip {
        source => "clientip"
    }


索引你的数据到Elasticsearch:


如今web logs 是被分红特定的字段,Logstash 管道能够索引数据到一个Elasticsearch cluster.

编辑first-pipeline.conf file  替换整个输出部分使用下面的文本:

output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
    }
}


在这个配置里, Logstash 使用http 协议链接到Elasticsearch


上面的例子 假设Logstash 和Elasticsearch  运行在相同的实例上。

你能够指定一个远程的Elasticsearch  经过使用hosts配置来指定像这样 hosts => [ "es-machine:9092" ].




测试你的初始化管道

在这个点上,你的 first-pipeline.conf file 已经有input,filter和output 部分配置,看起来像这样:

input {
    file {
        path => "/Users/myusername/tutorialdata/*.log"
        start_position => beginning
        ignore_older => 0
    }
}
filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
    geoip {
        source => "clientip"
    }
}
output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
    }
}

检验你的配置,运行下面的命令:

bin/logstash -f first-pipeline.conf --configtest


 --configtest 选项 解析你的配置文件和报告任何错误。


当配置文件解析 配置test,启动Logstash 使用下面的命令:


bin/logstash -f first-pipeline.conf



整合多个input和output 插件



你须要管理来自多个不一样的源,使用例子能够须要多个目的地用于你的数据。

你的logstash 管道可使用多个input 和output 来处理那些请求:


在这个章节, 你建立一个Logstash 管道 从一个Twitter feed 输入,



写Logstash到文件:

你能够配置你的Logstash 管道写数据直接到一个文件使用file output插件。


配置你的Logstash 实例来使用实例来使用file output 插件经过增长下面的行到你的输出部分


file {
        path => /path/to/target/file
    }


















相关文章
相关标签/搜索