ELK+Kafka部署指南 (二)
四、安装logstash
安装启动
步骤1、解压安装包、修改配置####
解压安装包:tar -zxvf logstash-7.0.0.tar.gz
进入到解压后的目录:cd logstash-7.0.0
进入到config文件夹:cd config
由于logstash的配置文件在启动的时候指定,编辑创建配置文件:vi springboot_kafka.conf
开发环境修改后的配置如下:
springboot_kafka.conf
input {
kafka{
bootstrap_servers => ["172.18.5.47:9092"]
#消费者分组
group_id => "logstash"
#数组类型,可配置多个topic
topics => ["kafka-log"]
#所有插件通用属性,尤其在input里面配置多个数据源时很有用
type => "kafka"
consumer_threads => 5
decorate_events => false
codec => "json"
}
}
output {
elasticsearch {
# ES地址
hosts => ["http://172.18.5.47:9200"]
# document_type => "applog"
# template_name => "app-biz-*"
# template_overwrite => true
# manage_template => true
# 指定索引名字,logType为log4j2.xml指定的应用名称
index => "wojiacloud-%{logType}-%{+YYYY.MM.dd}"
codec => json
}
# stdout {}
}
步骤2、启动logstash####
启动logstash:bin/logstash -f config/springboot_kafka.conf 1>/dev/null 2>&1 &
出现下图中日志则说明启动成功了
logstash配置多入多出并互相隔离,主要需要解决如下两个问题:####
1、如何加载多个配置文件?
普通启动方式:nohup bin/logstash -f /etc/logstash/conf.d/logstash.conf &
多配置文件启动方式:nohup bin/logstash -f /etc/logstash/conf.d &
注意:/etc/logstash/conf.d为目录,将加载该目录下所有配置文件;不要使用/etc/logstash/conf.d/*.conf
2、问题:配置不当,各输入输出会存在交叉,如何隔离各输入输出?
解决办法:利用type,对输入输出进行筛选,配置参考:
logstash-47-demo.conf
input {
kafka{
bootstrap_servers => ["172.18.5.47:9092"]
#消费者分组
group_id => "logstashDemo"
#当Input有多个输入源的时候,需要配置client_id并且必须唯一
client_id => "logstash-demo"
#数组类型,可配置多个topic
topics => ["demo-log"]
#从最新的偏移量开始消费
auto_offset_reset => "latest"
#所有插件通用属性,尤其在input里面配置多个数据源时很有用
type => "demo"
consumer_threads => 2
decorate_events => false
codec => "json"
}
}
output {
if [type] == "demo" {
elasticsearch {
# ES地址
hosts => ["http://172.18.5.47:9200"]
# document_type => "applog"
# template_name => "app-biz-*"
# template_overwrite => true
# manage_template => true
# 指定索引名字,logType为log4j2.xml指定的应用名称
index => "demo-log-%{logType}"
#
codec => json
}
}
}
logstash-47-ownercloud.conf
input {
kafka{
bootstrap_servers => ["172.18.5.47:9092"]
#消费者分组
group_id => "logstash"
#当Input有多个输入源的时候,需要配置client_id并且必须唯一
client_id => "logstash-ownercloud"
#数组类型,可配置多个topic
topics => ["kafka-log"]
#从最新的偏移量开始消费
auto_offset_reset => "latest"
#所有插件通用属性,尤其在input里面配置多个数据源时很有用
type => "ownercloud"
consumer_threads => 2
decorate_events => false
codec => "json"
}
}
output {
# 判断进行隔离
if [type] == "ownercloud" {
elasticsearch {
# ES地址
hosts => ["http://172.18.5.47:9200"]
# document_type => "applog"
# template_name => "app-biz-*"
# template_overwrite => true
# manage_template => true
# 指定索引名字,logType为log4j2.xml指定的应用名称
index => "wojiacloud-%{logType}"
#
codec => json
}
}
}