logstash介绍
Logstash是一个具有实时流水线功能的开源数据收集引擎。Logstash可以动态地统一来自不同来源的数据,并将规范化的数据到你选择的目的地。为各种高级下游分析和可视化用例清理和民主化所有数据。
虽然Logstash最初推动了日志收集方面的创新,但它的功能远远超出了这个用例。任何类型的事件都可以通过大量的输入、过滤器和输出插件进行丰富和转换,许多本机编解码器进一步简化了摄取过程。
运行logstash
下载Logstash安装文件,可以选择 tar.gz,deb,zip,rpm包,安装logstash前需要先安装好java环境。根据不同的包选择不同的安装方式
[root@docker1 logstash]# ll
total 393040
-rw-r--r-- 1 root root 402472840 May 8 14:05 logstash-8.13.3-linux-x86_64.tar.gz
[root@docker1 logstash]# tar -xf logstash-8.13.3-linux-x86_64.tar.gz
[root@docker1 logstash]# cd logstash-8.13.3/
[root@docker1 logstash-8.13.3]# ll
total 680
drwxr-xr-x 2 root root 4096 May 16 13:11 bin
drwxr-xr-x 2 root root 142 May 16 13:11 config
-rw-r--r-- 1 root wheel 2276 Apr 26 04:56 CONTRIBUTORS
drwxr-xr-x 2 root wheel 6 Apr 26 04:56 data
-rw-r--r-- 1 root root 1183 Mar 14 11:30 filebeat.conf # logstash 的pipeline,需要手动编写,不是解压包自带,logstash启动的时候需要
-rw-r--r-- 1 root wheel 4445 Apr 26 04:56 Gemfile
-rw-r--r-- 1 root wheel 31968 Apr 26 04:56 Gemfile.lock
drwxr-xr-x 9 root root 121 May 16 13:15 jdk
-rw-r--r-- 1 root wheel 17 Apr 26 04:56 JDK_VERSION
drwxr-xr-x 6 root root 84 May 16 13:11 lib
-rw-r--r-- 1 root wheel 13675 Apr 26 04:56 LICENSE.txt
drwxr-xr-x 4 root root 90 May 16 13:11 logstash-core
drwxr-xr-x 3 root root 86 May 16 13:11 logstash-core-plugin-api
drwxr-xr-x 4 root root 55 May 16 13:11 modules
-rw-r--r-- 1 root wheel 620491 Apr 26 04:56 NOTICE.TXT
drwxr-xr-x 3 root root 30 May 16 13:11 tools
drwxr-xr-x 4 root root 33 May 16 13:13 vendor
drwxr-xr-x 9 root root 193 May 16 13:14 x-pack
[root@docker1 logstash-8.13.3]# ./bin/logstash -f filebeat.conf
配置文件
你可以通过插件串起来创建管道,用来传输数据,插件包括:输入、输出、过滤器、解码器。要构建logstash管道,需要创建一个配置文件来指定要使用的插件和每个插件的设置。
一个非常基本的管道可能只包含一个输入和输出。大多数管道至少包含一个过滤器插件,并在时间满足特定条件时使用条件来处理事件。
# 此配置文件为filebeat输入,输出日志到syslog
[root@docker1 logstash-8.13.3]# cat filebeat.conf
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
# 输入插件
input {
beats {
port => 5044 #接收输入日志的端口
type => "tomcatlog"
ecs_compatibility => disabled
enrich => none
enable_metric => false
}
}
# 过滤模块
filter {
ruby {
code => "event.set('@timestamp',LogStash::Timestamp.at(event.get('@timestamp').time.localtime + 8*60*60))"
} #调整日志输出时间,默认输出日志时间差8个小时
}
# 输出模块
output {
# stdout {
# codec => "rubydebug"
# codec => line { format => "%{message}"}
# } # 输出日志到标准输出,可以进行一些测试,验证logstash是否可以正常输出日志
syslog {
id => "Docker"
port => "514" #syslog监听端口
protocol => "udp" #syslog使用协议
appname => "" #默认是 "LOGSTASH",可以使用空不输出内容
host => "192.168.15.169" # syslog服务器地址
sourcehost => "" #默认是 "%{host}",可以使用空不输出内容
msgid => "" #默认是 "-",可以使用空不输出内容
procid => "" #默认是 "-",可以使用空不输出内容
codec => line { format => "%{message}"} #指定日志输出格式
}
}
[root@docker1 logstash-8.13.3]#