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界面
这几个操作: 这样就把日志集成好了,统一管理;
谢谢大家阅读!互相学习!感谢魏来指导!
下一篇:
尽在双11:阿里巴巴技术演进与超越