Windows下部署 Logstash(单机)
- ELK
- 2020-08-03
- 25热度
- 0评论
1、下载 Logstash
2、解压,将 logstash config 目录下的 logstash-sample.conf 重命名为 logstash.conf,并编辑:
#必须包含input 和 output
#可以定义多个输入源与多个输出位置
input {
kafka {
#注意这里配置的kafka的broker地址不是zk的地址。在filebeat端要求单个地址加引号,这里是集群地址放一起加引号。
bootstrap_servers => ["127.0.0.1:9092,127.0.0.1:9093,127.0.0.1:9094"]
#group_id 这里必须保证唯一,是你这个logstash集群消费kafka集群的身份标识。同一个group_id不会出现logstash重复消费kafka集群的问题。
group_id => "logstash"
#kafka topic 名称
topics => ["test"]
consumer_threads => 5
decorate_events => true
#codec => "json"
codec => plain{charset=>"GBK"}
}
stdin{
codec => plain{charset=>"GBK"}
}
}
filter{
#里面可以包含各种数据处理的插件,如文本格式处理 grok、键值定义 kv、字段添加、geoip 获取地理位置信息等等
}
output {
elasticsearch {
#Windows下部署 ElasticSearch 集群 可参考:Windows下部署 ElasticSearch(集群)
hosts => ["localhost:9200","localhost:9201","localhost:9202"]
index =>"test"
codec => plain{charset=>"GBK"}
}
stdout{
#使用rubydebug时,在启动logstash时使用 --verbose --debug 便可以在终端看到输出的日志
#codec => rubydebug
codec => plain{charset=>"GBK"}
}
}
#Logstash API port:9600
3、CMD进入logstash目录,启动logstash:
.\bin\logstash -f .\config\logstash.conf
4、结束,浏览器访问:http://localhost:9600/


乱码问题:
CMD控制台产生(producer)消息后,消费者(consumer)收到消息乱码。
windows默认的字符编码是GBK,所以日志传入kafka之前应该是GBK的,但是不知道后面哪个环节被转成了UTF-8。GBK转成UTF-8是不可逆的操作,就算再转成GBK也无法回到最初的状态。
GBK转UTF-8后生成:����������
GBK转换成UTF-8再转成GBK:锟斤拷锟斤拷锟斤拷锟叫癸拷锟斤拷
当发生异常情况(比如:logstash重启)有可能发生数据丢失,可以选择logstash持久化到磁盘。
在 config/logstash.yml 文件中配置以下内容:
queue.type: persisted
path.queue: /usr/share/logstash/data #队列存储路径;如果队列类型为persisted,则生效
queue.page_capacity: 250mb #队列为持久化,单个队列大小
queue.max_events: 0 #当启用持久化队列时,队列中未读事件的最大数量,0为不限制
queue.max_bytes: 1024mb #队列最大容量
queue.checkpoint.acks: 1024 #在启用持久队列时强制执行检查点的最大数量,0为不限制
queue.checkpoint.writes: 1024 #在启用持久队列时强制执行检查点之前的最大数量的写入事件,0为不限制
queue.checkpoint.interval: 1000 #当启用持久队列时,在头页面上强制一个检查点的时间间隔
修改完后,重启logstash即可。
Logstash 性能测试,配置 logstash config 目录下的 logstash.conf 文件:
input{
generator {
count => 10000 #模拟数据1万条
message => '模拟数据具体内容' #模拟数据具体内容
codec => plain{charset=>"UTF-8"}
}
stdin{codec => plain{charset=>"UTF-8"}}
}
output {
elasticsearch {
hosts => ["localhost:9200","localhost:9201","localhost:9202"]
codec => plain{charset=>"UTF-8"}
index => "test"
}
stdout{codec => plain{charset=>"UTF-8"}}
}
Windows下部署 Kibana 可参考:Windows下部署 ElasticSearch、Head插件、Kibana(单机)
通过 Kibana 的 monitoring 监控查看测试结果:


鲁ICP备19063141号
鲁公网安备 37010302000824号