spring boot项目集成elk收集项目日志
目录
项目进行到一定时候我们会希望对系统的日志进行分析,特别是生产环境的日志。以便随时了解系统的运行状态。
elk代表elasticsearch、logstash和kibana,是最为成熟的一套日志收集平台。logstash负责收集日志,elasticsearch负责存储日志和对日志进行索引,kibana负责日志的展示。
搭建elk环境
配置
我们使用docker和docker-compose来部署elk平台,docker-compose文件如下:
##elk.yml
version: "3.0"
services:
elasticsearch:
image: elasticsearch:7.0.1
restart: always
ports:
- 9200:9200
- 9300:9300
environment:
- discovery.type=single-node
volumes:
- /srv/elasticsearch:/usr/share/elasticsearch/data
logstash:
image: logstash:7.0.1
restart: always
ports:
- 5000:5000
- 9600:9600
volumes:
- ./config/logstash/pipeline.conf:/usr/share/logstash/pipeline/logstash.conf
kibana:
image: kibana:7.0.1
restart: always
ports:
- 5601:5601
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- SERVER_NAME=kibana
- SERVER_HOST="0"
我们的logstash配置pipeline如下(./config/logstash/pipeline.conf):
input {
tcp {
port => 5000
codec => "json"
type => "prod"
}
}
filter {
json {
source => "_source"
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
}
}
部署elk
使用docker-compose部署项目:
docker-compose -f elk.yml pull
docker-compose -f elk.yml up -d
这样就装好了elk平台,访问 http://localhost:5601 可以看到kibana的web管理界面。
spring boot配置
jhipster的项目默认集成了logstash支持,只需要开启就可以了,修改下面几个参数:
jhipster.logging.logstash.enabled = true
jhipster.logging.logstash.host = localhost #logstash所在主机
jhipster.logging.logstash.port = 5000 #配置监听的tcp端口
启动项目,在kibana里建立索引,即可以看到生成的log数据了。