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

一、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):
在这里插入图片描述

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界面

这几个操作:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就把日志集成好了,统一管理;

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

猜你喜欢

转载自blog.csdn.net/weixin_44704261/article/details/107450676