一、docker安装各个环境

1. 安装es

docker pull elasticsearch:7.4.2

执行脚本:

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2

elasticsearch.yml: 这个文件好像要提前建好,对应宿主机文件夹也可以先建好

yml里面加上:

http.host: 0.0.0.0

我猜是允许所有外网访问吧,但是我用的是宝塔面板,防火墙…

好了,如下图启动成功(kibana、logstash):

docker快速搭建ELK做分布式日志系统_分布式

2. 安装kibana

docker pull kibana:7.4.2

安装脚本:

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.109.135:9200 -p 5601:5601 -d kibana:7.4.2

3. 安装logstash

三者版本一致,要不然会出现莫名的BUG

docker pull logstash:7.4.2

这里需要先配置一个文件(创建并启动 logstash需要映射):

新建文件 /mydata/logstash/logstash.conf

input {
tcp {
mode => "server"
host => "0.0.0.0"
# 接收服务发送过来的日志端口,随意改,别重复就好
port => 5000
codec => json_lines
}
}
output {
elasticsearch {
# 自己es装的地方
hosts => ["192.168.109.135:9200"]
action => "index"
# 索引 kibana创建索引时使用,根据自己心情来,最好有意义,我是我的网站服务名log+时间节点
index => "dscnlog-%{+YYYY.MM.dd}"
}
stdout {
codec => rubydebug
}
}

安装脚本:

docker run --name logstash -p 5000:5000 \
-v /mydata/logstash/logstash.conf:/etc/logstash.conf \
--link elasticsearch:elasticsearch \
-d logstash:7.4.2 \
logstash -f /etc/logstash.conf

所有的安装就完成了,有问题多试几遍就可以了

二、集成到SpringCloud简单的使用

1. 加入依赖

一般是在公共模块,每个服务都会引用的模块

加入maven依赖(好像6.x了应该可以集成,我没试过,可以试试):

<!-- 日志集中管理 -->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.2</version>
</dependency>

2. 创建logback.xml

依旧放在公共模块下的 resources文件下:

直接取名叫logback.xml这个就行了,改名字还需要额外加入springboot的配置,麻烦

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">
<!-- 作用域就是spring的上下文环境中,后面是服务名,defaultValue不填就可以了,之后就是打印对应的服务名 -->
<springProperty scope="context" name="applicationName" source="spring.application.name" defaultValue=""/>
<include resource="org/springframework/boot/logging/logback/base.xml" />
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!-- logstash远程主机 -->
<destination>192.168.109.135:5000</destination>
<!-- encoder必须配置,有多种可选 -->
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<!-- 日志输出级别 -->
<root level="info">
<appender-ref ref="stash" />
</root>
</configuration>

3. 打开kibana界面

这几个操作:

docker快速搭建ELK做分布式日志系统_spring_02

docker快速搭建ELK做分布式日志系统_logback_03

docker快速搭建ELK做分布式日志系统_分布式_04

这样就把日志集成好了,统一管理;

谢谢大家阅读!互相学习!感谢魏来指导!