介绍 Logstash 及其插件的配置安装方法,自定义配置语言的设计用途
什么是 Logstash?为什么要用 Logstash?怎么用 Logstash?
1. ELKstack 具有如下几个优点:
处理方式灵活。Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程才能使用;
配置简易上手。Elasticsearch 全部采用 JSON 接口,Logstash 是 Ruby DSL 设计,都是目前业界最通用的配置语法设计;
检索性能高效。虽然每次查询都是实时计算,但是优秀的设计和实现基本可以达到百亿级数据查询的秒级响应;
集群线性扩展。不管是 Elasticsearch 集群还是 Logstash 集群都是可以线性扩展的;
前端操作炫丽。Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板。
2.安装 Logstash
1)安装redis
http://7826443.blog.51cto.com/7816443/1715818
2)需要提前安装好 Java:
yum install java-1.8.0-openjdk
用 Elasticsearch 官方仓库来直接安装 Logstash;
rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch cat > /etc/yum.repos.d/logstash.repo <<EOF [logstash-1.5] name=logstash repository for 1.5.x packages baseurl=http://packages.elasticsearch.org/logstash/1.5/centos gpgcheck=1 gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch enabled=1 EOF yum clean all yum install logstash
启动 Logstash 进程:
在终端中,像下面这样运行命令来启动 Logstash 进程:
# bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
在这里我现在系统找到logstash文件,然后启动logstash进程。
# find / -type f -name "logstash" /etc/logrotate.d/logstash /etc/sysconfig/logstash /etc/rc.d/init.d/logstash /opt/logstash/bin/logstash # /opt/logstash/bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
然后你会发现终端在等待你的输入,没问题,敲入 Hello World,回车,看到如下内容:
hello world { "message" => "hello world", "@version" => "1", "@timestamp" => "2015-11-25T15:24:26.943Z", "host" => "0.0.0.0" }
备注:
Logstash 会给事件添加一些额外信息。最重要的就是 @timestamp,用来标记事件的发生时间。host 标记事件发生在哪里。
2.1配置语法
Logstash 社区通常习惯用 shipper,broker 和 indexer 来描述数据流中不同进程各自的角色。如下图:
1)语法:
Logstash 设计了自己的 DSL ―― 用 Ruby 语言写的―― 包括有区域,注释,数据类型(布尔值,字符串,数值,数组,哈希),条件判断,字段引用等。
2)区段(section)
Logstash 用 {} 来定义区域。区域内可以包括插件区域定义,你可以在一个区域内定义多个插件。插件区域内则可以定义键值对设置。示例如下:
input { stdin {} syslog {} }
3.安装plugin
通过 bin/plugin list 查看本机现在有多少插件可用
我的路径是
[root@ECS ~]# find / -type f -name plugin /opt/logstash/bin/plugin
我的服务器现在有105个插件可以用
[root@ECS ~]# /opt/logstash/bin/plugin list|wc -l 105
3.1 然后,假如你看到 https://github.com/logstash-plugins/ 下新发布了一个 logstash-output-webhdfs模块(当然目前还没有)。打算试试,就只需要运行:
bin/plugin install logstash-output-webhdfs
同样,假如是升级,只需要运行:
bin/plugin update logstash-input-tcp