ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana。
推荐使用docker-compose进行部署
version: '3'
services:
es:
image: elasticsearch:6.8.5
container_name: elasticsearch
environment:
- "cluster.name=elasticsearch" #设置集群名称为elasticsearch
- "discovery.type=single-node" #以单一节点模式启动
- "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小
volumes:
- /data/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
ports:
- 19200:9200
- 19300:9300
kibana:
image: kibana:6.8.5
container_name: kibana
depends_on:
- es #kibana在elasticsearch启动之后再启动
environment:
- "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址
- "SERVER_BASEPATH=/elk"
- "SERVER_REWRITEBASEPATH=true"
ports:
- 15601:5601
logstash:
image: logstash:6.8.5
container_name: logstash
volumes:
- /data/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置>文件
depends_on:
- es #在elasticsearch启动之后再启动
ports:
- 4560:4560
启动命令
docker-compose up -d
input {
tcp {
host => "0.0.0.0"
port => 4560
mode => "server"
tags => ["services"]
codec => json_lines
}
stdin {
}
}
output {
elasticsearch {
hosts => "es:9200"
}
}
在logback配置文件中添加LogstashTcpSocketAppender
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>${LOGSTASH_SERVER}</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
其中LOGSTASH_SERVER的值即为logstash的服务器地址和端口。
配置index patterns,点management->kabana->index patterns; 输入logstash-* 然后下一步
可以看到,应用的日志已经聚合起来,可以通过全文搜索来查找信息。