這個(gè)厲害了,springboot整合ELK實(shí)現(xiàn)日志收集
點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”
優(yōu)質(zhì)文章,第一時(shí)間送達(dá)
? 作者?|??易心i
來(lái)源 |? urlify.cn/fQRJFj
66套java從入門到精通實(shí)戰(zhàn)課程分享
1.什么是ELK?
ELK 就是Elasticsearch,logstash,kibana的縮寫哈哈。
Elasticsearch 是一個(gè)搜索和分析引擎。
Logstash 是服務(wù)器端數(shù)據(jù)處理管道,能夠同時(shí)從多個(gè)來(lái)源采集數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù),然后將數(shù)據(jù)發(fā)送到諸如 Elasticsearch 等“存儲(chǔ)庫(kù)”中。
Kibana 則可以讓用戶在 Elasticsearch 中使用圖形和圖表對(duì)數(shù)據(jù)進(jìn)行可視化。
ELK該怎么實(shí)現(xiàn)日志收集呢?
logstash就相當(dāng)于一個(gè)管道,日志通過(guò)這個(gè)管道傳輸給Elasticsearch來(lái)保存,最后在kibana上通過(guò)圖表的形式就可以看見日志信息啦!
2.需要準(zhǔn)備的環(huán)境
這里是使用的Docker來(lái)創(chuàng)建elasticsearch,logstash,kibana;Docker compose來(lái)啟動(dòng)的(也可以用Docker運(yùn)行,看個(gè)人選擇),所以需要安裝Docker和Docker-Compose環(huán)境
2.1Docker環(huán)境安裝
1. 安裝yum-utils:
yum?install?-y?yum-utils?device-mapper-persistent-data?lvm2
2. 為yum源添加docker倉(cāng)庫(kù)位置:
yum-config-manager?--add-repo?https://download.docker.com/linux/centos/docker-ce.repo
3. 安裝docker:
yum?install?docker-ce
4. 啟動(dòng)docker:
systemctl?start?docker
2.2Docker Compose環(huán)境安裝
Docker Compose是一個(gè)用于定義和運(yùn)行多個(gè)docker容器應(yīng)用的工具。使用Compose你可以用YAML文件來(lái)配置你的應(yīng)用服務(wù),然后使用一個(gè)命令,你就可以部署你配置的所有服務(wù)了。
使用Docker Compose的步驟:
使用Dockerfile定義應(yīng)用程序環(huán)境,一般需要修改初始鏡像行為時(shí)才需要使用;
使用docker-compose.yml定義需要部署的應(yīng)用程序服務(wù),以便執(zhí)行腳本一次性部署;
使用docker-compose up命令將所有應(yīng)用服務(wù)一次性部署起來(lái)。
1. 安裝下載Docker Compose
curl?-L?https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname?-s`-`uname?-m`?>?/usr/local/bin/docker-compose
2. 修改該文件的權(quán)限為可執(zhí)行
chmod?+x?/usr/local/bin/docker-compose
3. 查看是否已經(jīng)安裝成功
docker-compose?--version

2.3獲取Elasticsearch,logstash,kibana的鏡像
docker?pull?elasticsearch:6.4.0
docker?pull?logstash:6.4.0
docker?pull?kibana:6.4.0
2.4部署前準(zhǔn)備
Elasticsearch配置
需要設(shè)置系統(tǒng)內(nèi)核參數(shù),否則會(huì)因?yàn)閮?nèi)存不足無(wú)法啟動(dòng);
改變?cè)O(shè)置
sysctl?-w?vm.max_map_count=262144
使之立即生效
sysctl?-p
需要?jiǎng)?chuàng)建/mydata/elasticsearch/data目錄并設(shè)置權(quán)限,否則會(huì)因?yàn)闊o(wú)權(quán)限訪問(wèn)而啟動(dòng)失敗。
創(chuàng)建目錄
mkdir?/mydata/elasticsearch/data/
創(chuàng)建并改變?cè)撃夸洐?quán)限
chmod?777?/mydata/elasticsearch/data
Logstash配置
創(chuàng)建配置文件存放目錄logstash
mkdir?/mydata/logstash
創(chuàng)建一個(gè)存放logstash配置的文件logstash-springboot.conf
文件內(nèi)容:
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}"
??}
}
2.5使用docker-compose.yml腳本啟動(dòng)ELK服務(wù)
創(chuàng)建docker-compose.yml,內(nèi)容如下
version:?'3'
services:
??elasticsearch:
????image:?elasticsearch:6.4.0
????container_name:?elasticsearch
????environment:
??????-?"cluster.name=elasticsearch"?#設(shè)置集群名稱為elasticsearch
??????-?"discovery.type=single-node"?#以單一節(jié)點(diǎn)模式啟動(dòng)
??????-?"ES_JAVA_OPTS=-Xms512m?-Xmx512m"?#設(shè)置使用jvm內(nèi)存大小
????volumes:
??????-?/mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins?#插件文件掛載
??????-?/mydata/elasticsearch/data:/usr/share/elasticsearch/data?#數(shù)據(jù)文件掛載
????ports:
??????-?9200:9200
??????-?9300:9300
??kibana:
????image:?kibana:6.4.0
????container_name:?kibana
????links:
??????-?elasticsearch:es?#可以用es這個(gè)域名訪問(wèn)elasticsearch服務(wù)
????depends_on:
??????-?elasticsearch?#kibana在elasticsearch啟動(dòng)之后再啟動(dòng)
????environment:
??????-?"elasticsearch.hosts=http://es:9200"?#設(shè)置訪問(wèn)elasticsearch的地址
????ports:
??????-?5601:5601
??logstash:
????image:?logstash:6.4.0
????container_name:?logstash
????volumes:
??????-?/mydata/logstash/logstash-springboot.conf:/usr/share/logstash/pipeline/logstash.conf?#掛載logstash的配置文件
????depends_on:
??????-?elasticsearch?#kibana在elasticsearch啟動(dòng)之后再啟動(dòng)
????links:
??????-?elasticsearch:es?#可以用es這個(gè)域名訪問(wèn)elasticsearch服務(wù)
????ports:
??????-?4560:4560
3.部署Elasticsearch,Logstash,Kibana
在docker-compose.yml目錄下,使用命令docker-compose up -d啟動(dòng)
啟動(dòng)成功!??!
3.1elasticsearch需要安裝中文分詞器IKAnalyzer
進(jìn)入容器
docker?exec?-it?elasticsearch?/bin/bash
此命令需要在容器中運(yùn)行
elasticsearch-plugin?install?https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.0/elasticsearch-analysis-ik-6.4.0.zip
退出
exit重啟
docker?restart?elasticsearch
3.2在logstash中安裝json_lines插件
進(jìn)入logstash容器
docker?exec?-it?logstash?/bin/bash
安裝插件
logstash-plugin?install?logstash-codec-json_lines
退出容器
exit
重啟logstash服務(wù)
docker?restart?logstash
都重新啟動(dòng)好之后,這三個(gè)容器都是運(yùn)行好的
查看kibana
ip:5601
查看elasticsearch是否成功啟動(dòng)
ip:9200
4.springboot應(yīng)用集成logstash
4.1.導(dǎo)入pom依賴
????net.logstash.logback
????logstash-logback-encoder
????5.3
4.2添加配置文件logback-spring.xml讓logback的日志輸出到logstash
將下面的ip地址改成自己的
"1.0"?encoding="UTF-8"?>
????"org/springframework/boot/logging/logback/defaults.xml"/>
????"org/springframework/boot/logging/logback/console-appender.xml"/>
????
????"APP_NAME"?value="mall-admin"/>
????
????"LOG_FILE_PATH"?value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/logs}"/>
????${APP_NAME}
????
????"FILE"?class="ch.qos.logback.core.rolling.RollingFileAppender">
????????"ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
????????????${LOG_FILE_PATH}/${APP_NAME}-%d{yyyy-MM-dd}.log
????????????30
????????
????????
????????????${FILE_LOG_PATTERN}
????????
????
????
????"LOGSTASH"?class="net.logstash.logback.appender.LogstashTcpSocketAppender">
????????
????????ip:4560
????????"UTF-8"?class="net.logstash.logback.encoder.LogstashEncoder"/>
????
????"INFO">
????????"CONSOLE"/>
????????"FILE"/>
????????"LOGSTASH"/>
????
4.3配置yml文件
添加logstash配置文件路徑
logging:
??config:?classpath:logstash-spring.xml
4.4測(cè)試
寫了一個(gè)方法測(cè)試了一下
訪問(wèn)路徑:http://localhost:8081/agv/agvdevdao/selectAll
控制臺(tái)輸出
在kibana中的日志信息
成功?。?!
最后總結(jié):
1.安裝docker環(huán)境
2.獲取elasticsearch,logstash,kibana的鏡像
3.運(yùn)行這三個(gè)容器
4.springboot集成logstash,將日志傳輸?shù)絜lasticsearch
粉絲福利:108本java從入門到大神精選電子書領(lǐng)取
???
?長(zhǎng)按上方鋒哥微信二維碼?2 秒 備注「1234」即可獲取資料以及 可以進(jìn)入java1234官方微信群
感謝點(diǎn)贊支持下哈?
