logstash
logstash介绍
logstash是一个开源的数据收集引擎,可以动态的将不同数据源的数据统一收集,并将数据按自定义配置规则标准化输入到指定输出源。
logstash安装
- 下载安装
1 2 3
| wget https://artifacts.elastic.co/downloads/logstash/logstash-7.4.2.tar.gz tar -zxvf logstash-7.4.2.tar.gz -C /opt/elk/ cd logstash-7.4.0
|
- 配置文件
1 2 3 4 5 6 7 8 9 10 11
| ls config/*
-rw-r--r-- 1 gnome gnome 2.0K 9月 27 18:20 jvm.options # jvm选项 -rw-r--r-- 1 gnome gnome 5.0K 9月 27 18:20 log4j2.properties # 日志配置 -rw-r--r-- 1 gnome gnome 342 9月 27 18:20 logstash-sample.conf # logstash配置样例 -rw-r--r-- 1 gnome gnome 8.1K 9月 27 18:20 logstash.yml # logstash配置,一般不用管 -rw-r--r-- 1 gnome gnome 3.1K 9月 27 18:20 pipelines.yml -rw-r--r-- 1 gnome gnome 1.7K 9月 27 18:20 startup.options # logstash启动选项
# 我们一般是复制logstash-sample.conf,重命名为我们想要的配置文件名,最终的配置都是在新的conf文件。 # 一般我们只需要更改conf配置文件就行了,其他默认。
|
logstash配置解析
详细配置请查看官方文档
logstash配置主要是用ruby写过滤器(官方推荐尽量使用ruby脚本)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| input { file{ path => "/opt/elk/logstash-7.4.0/test/*" start_position => "beginning" } }
filter {
ruby { path => "/opt/elk/logstash-7.4.0/config/filter_file.rb"
}
}
output { elasticsearch { user => elastic password => changeme pool_max => 1000 pool_max_per_route => 200 hosts => ["127.0.0.1:9200"] index => "logstash-to-es-test-%{+YYYY.MM.dd}" }
}
|
ruby脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| require 'rubygems' require 'json' require 'pp'
def register(params) @message = params["message"] end
def filter(event) message = event.get("message")
path = event.get('path') filename = path.split('/')[path.split('/').length-1] name = filename.split('.')[0]
if message != nil event.set("filename" , name) event.set("message" , message) return [event] else return [] end
|
logstash启动
- 编写启动脚本
1 2 3
| #! /bin/bash
/opt/elk/logstash-7.4.0/bin/logstash -f /opt/elk/logstash-7.4.0/config/filter_file.conf
|