ELK简介
ELK即Elasticsearch
、Logstash
、Kibana
,组合起来可以搭建线上日志系统,本文主要讲解使用ELK来收集SpringBoot
应用产生的日志。
ELK中各个服务的作用
Elasticsearch
:用于存储收集到的日志信息;Logstash
:用于收集日志,SpringBoot
应用整合了Logstash
以后会把日志发送给Logstash
,Logstash
再把日志转发给Elasticsearch
;Kibana
:通过Web端的可视化界面来查看日志。
环境要求
- docker(用的是Docker for Mac)
docker下载镜像过慢可以配置加速器。Macos 安装docker并配置镜像加速器 - docker-compose
开始搭建
1、创建3个文件夹,用于存放Elasticsearch
数据、Logstash
的插件和Logstash
的配置文件,由于Kibana
主要是用于把logstash
收集到的日志进行可视化分析,故本例不做更多配置。xxxxxxx
为本机下的用户。
mkdir -p /Users/xxxxxxx/elk/elasticsearch/data
mkdir -p /Users/xxxxxxx/elk/elasticsearch/plugins
mkdir -p /Users/xxxxxxx/elk/logstash
另外可以再创建一个文件夹,用于存放docker-compose.yml
文件
mkdir -p /Users/xxxxxxx/elk/docker
2、在/Users/xxxxxxx/elk/logstash
目录下创建ogstash
的配置文件logstash.conf
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => "es:9200"
index => "springboot-logstash-%{+YYYY.MM.dd}"
}
}
3、在/Users/xxxxxxx/elk/docker
创建docker-compose.yml
文件
version: '3'
services:
elasticsearch:
image: elasticsearch:7.5.0
container_name: elasticsearch
environment:
- "cluster.name=elasticsearch" #设置集群名称为elasticsearch
- "discovery.type=single-node" #以单一节点模式启动
- "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小
volumes:
- /Users/xxxxxxx/elk/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
- /Users/xxxxxxx/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
ports:
- 9200:9200
- 9300:9300
kibana:
image: kibana:7.5.0
container_name: kibana
links:
- elasticsearch:es #可以用es这个域名访问elasticsearch服务
depends_on:
- elasticsearch #kibana在elasticsearch启动之后再启动
environment:
- "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址
ports:
- 5601:5601
logstash:
image: logstash:7.5.0
container_name: logstash
volumes:
- /Users/xxxxxxx/elk/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件
depends_on:
- elasticsearch #kibana在elasticsearch启动之后再启动
links:
- elasticsearch:es #可以用es这个域名访问elasticsearch服务
ports:
- 4560:4560
3、在docker-compose.yml
文件目录下启动elk
docker-compose up -d
4、访问localhost:9200
和localhost:5601
能够正常,说明整个elk
环境已搭建完成。
至此,整个ELK环境已经能够搭建完成。
参考:
基于mac os通过docker搭建ELK日志采集系统