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
}
}
}
原文地址:https://www.cnblogs.com/gloria-liu/p/12201965.html