elasticsearch
配置修改:vi config/elasticsearch.yml
node.name: node-1
path.data: ~/elasticsearch/data
path.logs: ~/elasticsearch/logs
network.host: 127.0.0.1
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
启动:
./bin/elasticsearch -d
kibana
配置修改:vi config/kibana.yml
server.port: 5601
server.host: "127.0.0.1"
elasticsearch.hosts: ["http://127.0.0.1:9200"]
启动
./bin/kibana &
logstash
配置修改:vi config/logstash.yml
path.data: ~/logstash/data
path.logs: ~/logstash/logs
path.config: ~/logstash/config
http.host: "127.0.0.1"
添加配置
input{
kafka{
bootstrap_servers => ["127.0.0.1:9092"]
client_id => "kafkalog"
group_id => "kafkalog"
#从最新的偏移量开始消费
auto_offset_reset => "latest"
consumer_threads => 5
#此属性会将当前topic、offset、group、partition等信息也带到message中
decorate_events => true
#数组类型,可配置多个topic
topics => ["kafka-log"]
#所有插件通用属性,自定义,尤其在input里面配置多个数据源时很有用
type => "kafkalog"
}
}
output {
if[type] == "kafkalog"{
elasticsearch{
hosts => ["127.0.0.1:9200"]
#索引名称不能有点
index => "springboot"
timeout => 300
}
}
}
启动
./bin/logstash &
Zookeeper启动
在网上下载zk,然后启动安装。
zk默认的内存是1000m,最好修改一下xmx参数,不然如果zk内存不够,会导致频繁fullgc影响服务器性能。
kafka
配置修改:vi config/server.properties
listeners=PLAINTEXT://127.0.0.1:9092
log.dirs=/tmp/kafka-logs
zookeeper.connect=localhost:2181
启动
./bin/kafka-server-start.sh ./config/server.properties &
代码相关:
使用KafkaAppender的方式
log4j2和logback都提供了自定义appender的方式。
该集成方式主要是编写KafKaAppender,在打印日志的时候,调用kakfa的producer,将日志推送到kafka,然后由logstash从kafka拉取数据,写入到es。
增加kafka+logstash的原因,主要是es的写入性能可能不够高,担心压力太大。
使用日志文件收集的方式
在部署应用的时候,同时部署logstash,由logstash读取文件,然后写入到es。
好处就是:代码无需修改,而且打印日志的时候,不用调用kafkaappender,减少网络io。
坏处就是:日志格式转换没有那么灵活,需要部署很多个logstash占用资源、管理也不是很方便。