Logstash简介
主要是用来日志的搜集、分析、过滤日志的工具。用于管理日志和事件的工具,你可以用它去收集日志、"转换日志、解析日志并将他们作为数据提供给其它模块调用,例如搜索、存储等。基于java语言开发
安装Logstash也是为了搭建ELK,而且Logstash也被ElasticSeatch整合到一起了,所以下载的话也是在ElasticSearch官网下载
ES官网下载Logstash,网络慢的情况耐心等待,直到ES官网脚本,界面完全渲染完成
这里版本如果是要搭建ELK的话要和ElasticSearch、Kibana的版本保持一致
Logstash安装
1.上传并解压
unzip -n logstash-6.5.4.zip /data/elk/
2.编写读写配置
1.读命令行输出并打印
vi test.conf
input{
stdin{}
}
output{
stdout{codec=>"rubydebug"}
}
cd logstash-6.5.4
./bin/logstash -f config/test.conf
后台启动
nohup bin/logstash -f config/test.conf &
2.读文件输出
input{
file{
path => ["path"]
start_position => "beginning"
type => "web"
}
}
output{
stdout{
codec => "rubydebug"
}
}
3.读取ES数据
input{
elasticsearch{
hosts => "120.27.16.240"
index => "test"
query => '{"query": { "match_all":{} }}'
}
}
output{
stdout{
codec => "rubydebug"
}
}
4.读取命令行并输入到ES
input{
stdin{}
}
output{
stdout{
codec=>"rubydebug"
}
elasticsearch{
hosts => ["http://xxx.xxx.x.xxx:9200"]
index => "logstash"
}
}
host: 是一个数组类型的值,后面跟的值是elasticsearch节点的地址与端口,默认端口是9200。可添加多个地址。
index: 写入elasticsearch的索引的名称,这里可以使用变量。Logstash提供了%(+YYYY.MM.dd}这种写法。在语法解析的时候,看到以+号开头的,就会自动认为后面是时间格式,尝试用时间格式来解析后续字符串。这种以天为单位分割的写法,可以很容易的删除老的数据或者搜索指定时间范围内的数据。此外,注意索引名中不能直大写字母。
manage-template: 用来设置是否开启logstash自动管理模板功能,如果设置为false将关闭自动管理模板功能。如果我们自定义了模板,那么应该设置为false
template_name: 这个配置项用来设置在Elasticsearch中模板的名称。
5.读取kafka写入ES
这里需要确认kafka中的topics 是否存在
input{
kafka{
type => "kafka"
codec =>"json"#指定json中的编码格式json{charset => "UTF-8"}
topics => "testtopic"
bootstrap_servers => "xxx.xxx.x.xxx:9092"
#add_field => {"[@metadate][tagid]" =>"test_log"} 增加一个字段,用于标识和判断,在output输出中会用到。
}
}
output{
stdout{
codec=>"rubydebug"
}
elasticsearch{
hosts => ["http://xxx.xxx.x.xxx:9200"]
index => "logstash"
}
}
6.读取命令行输出指定目录文件
input{
stdin{}
}
output{
stdout{codec=>"rubydebug"}
file{
path => "/data/elk/logstash-6.5.4/config/log/%{+yyyy-MM-dd}/%{host}_%{+HH}.log"
}
}
这里输出到文件中是这样显示的
设置一下编码即可让输出和输入的内容保持一致
input{
stdin{}
}
output{
stdout{codec=>"rubydebug"}
file{
path => "/data/elk/logstash-6.5.4/config/log/%{+yyyy-MM-dd}/%{host}_%{+HH}.log"
codec => line {format => "%{message}"}
}
}
以上选择任意一种配置作为启动配置即可根据自己的业务场景选择配置