centos
logstash 5.2.
logstash
logstash是什么呢, 他是一个数据管道, JRuby编写的运行在java虚拟机的具有收集, 分析和转发数据流功能的工具
特性:
安装
1), wget下载
https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.tar.gz
2), 解压即安装
tar -zxvf /usr/work/logstash-5.2..tar.gz
3), 测试下:
bin/logstash -e 'input { stdin {} } output { stdout {} }'
然后可以输入hello, 回车后给你返回
要等一会, 刚开始还以为没启动呢
然后输入hello logstash, 就可看到输出结果了
运行参数:
语法:
1), 区块
Logstash 用 {}
来定义区域。区域内可以包括插件区域定义,你可以在一个区域内定义多个插件。插件区域内则可以定义键值对设置
input {
stdin {}
syslog {}
}
2) 数据类型
logstash支持少量的数据值类型:
bool, debug=>true
string, host=>"hostname"
number, port=>514
array, match=>["datatime", "unix", "iso8601"]
hash(字典), options=> { key1=>"values1", "key2"=>"values2"}
3), 字段引用, 使用[], 如果多层, 就每层的字段卸载[]
[geoip][location][0]
4), 条件判断:
-
==
(等于),!=
(不等于),<
(小于),>
(大于),<=
(小于等于),>=
(大于等于) -
=~
(匹配正则),!~
(不匹配正则) -
in
(包含),not in
(不包含) -
and
(与),or
(或), nand(非与), xor(非或) -
()
(复合表达式),!()
(对复合表达式结果取反)
5), 命令行参数:
-e: 执行
-f 或 --config: , 配置固话在文件里面, 可以指定目录, 读取目录下所有配置
真实运用中是 ./logstash -f agent.conf
-l 或 --log
./logstash -l logs/logstash.log
设置文件:
从 logstash 5.0 开始, 新增了 {LH}/config/logstash.yml可以将命令行参数通过yaml设置
pipeline:
workers:
batch:
size:
delay:
其他设置还有:
--pipeline-workers 或 -w
运行 filter 和 output 的 pipeline 线程数量。默认是 CPU 核数。
--pipeline-batch-size 或 -b
每个 Logstash pipeline 线程,在执行具体的 filter 和 output 函数之前,最多能累积的日志条数。默认是 条。越大性能越好,同样也会消耗越多的 JVM 内存。
--pipeline-batch-delay 或 -u
每个 Logstash pipeline 线程,在打包批量日志的时候,最多等待几毫秒。默认是 ms。
--pluginpath 或 -P
可以写自己的插件,然后用 bin/logstash --pluginpath /path/to/own/plugins 加载它们。
--verbose
输出一定的调试日志。
--debug
输出更多的调试日志。
后台运行:
1, 如果使用的rmp包安装的, 可以使用service进行启动
如果不是, 可以自己写脚本实现
2, 使用 nohup方式
./logstash &
3, 使用supervisord
首先安装
yum -y install supervisord --enablerepo=epel
在 /etc/supervisord.conf 中添加内容,
[program:elkpro_1]
environment=LS_HEAP_SIZE=5000m
directory=/opt/soft/elk/logstash
command=/opt/soft/elk/logstash/bin/logstash -f /etc/logstash/pro1.conf -w -l /var/log/logstash/pro1.log
[program:elkpro_2]
environment=LS_HEAP_SIZE=5000m
directory=/opt/logstash
command=/opt/logstash/bin/logstash -f /etc/logstash/pro2.conf -w -l /var/log/logstash/pro2.log
然后使用 service supervisord start 启动就可以了
也可以使用supervisorctl命令单独控制一系列的logstash进程, stop elkpro_2
参考: elk权威指南