功能介紹
ELK 是軟件集合Elasticsearch、Logstash、Kibana的簡稱,由這三個軟件及其相關(guān)的組件可以打造大規(guī)模日志實(shí)時處理系統(tǒng)。
Elasticsearch 是一個基于 Lucene 的、支持全文索引的分布式存儲和索引引擎,主要負(fù)責(zé)將日志索引并存儲起來,方便業(yè)務(wù)方檢索查詢。
Logstash是一個日志收集、過濾、轉(zhuǎn)發(fā)的中間件,主要負(fù)責(zé)將各條業(yè)務(wù)線的各類日志統(tǒng)一收集、過濾后,轉(zhuǎn)發(fā)給 Elasticsearch 進(jìn)行下一步處理。
Kibana是一個可視化工具,主要負(fù)責(zé)查詢 Elasticsearch 的數(shù)據(jù)并以可視化的方式展現(xiàn)給業(yè)務(wù)方,比如各類餅圖、直方圖、區(qū)域圖等。
基于對日志的實(shí)時分析,可以隨時掌握服務(wù)的運(yùn)行狀況、統(tǒng)計(jì) PV/UV、發(fā)現(xiàn)異常流量、分析用戶行為、查看熱門站內(nèi)搜索關(guān)鍵詞等。
操作手順
一、每個單獨(dú)部署
創(chuàng)建自定義的網(wǎng)絡(luò)(用于連接到連接到同一網(wǎng)絡(luò)的其他服務(wù)(例如Kibana))
docker network create somenetwork
1、elasticsearch部署
使用docker命令
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.4.2
創(chuàng)建并啟動elasticsearch容器
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch --net somenetwork -d docker.elastic.co/elasticsearch/elasticsearch:6.4.2
通過本地瀏覽器訪問虛擬機(jī)地址的9200端口,返回如下內(nèi)容,則證明elasticsearch部署成功
{ "name" : "o6ORX7D", "cluster_name" : "docker-cluster", "cluster_uuid" : "XhSiS_axRC63-8R0_Pc26Q", "version" : { "number" : "6.4.2", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "04711c2", "build_date" : "2018-09-26T13:34:09.098244Z", "build_snapshot" : false, "lucene_version" : "7.4.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
2、logstash部署
使用docker命令
docker pull docker.elastic.co/logstash/logstash:6.4.2
創(chuàng)建并啟動logstash容器
docker run -p 5044:5044 -v /mydata/logstash/pipeline/:/usr/share/logstash/pipeline/ --name=logstash --net somenetwork -d docker.elastic.co/logstash/logstash:6.4.2
注意文件pipeline的映射,在pipeline中需要創(chuàng)建logstash的配置文件logstash.conf,該文件內(nèi)容如下:
input{ tcp { mode => "server" port => 5044 codec => json_lines tags => ["data-http"] } } output{ elasticsearch{ hosts=> ["elasticsearch:9200"] index => "data-http-%{+YYYY.MM.dd}" } stdout{codec => rubydebug} }
3、kibana部署
使用docker命令
docker pull docker.elastic.co/kibana/kibana:6.4.2
創(chuàng)建并啟動容器
docker run -p 5601:5601 --name=kibana --net somenetwork -d docker.elastic.co/kibana/kibana:6.4.2
二、docker-compose一起部署
?
一、第一步在docker上安裝ELK
創(chuàng)建目錄
mkdir /home/app/myelk
新建docker-compose.yml文件
復(fù)制以下內(nèi)容到新建的docker-compose.yml文件,保存yml文件
version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1 container_name: elasticsearch7.1.1 environment: - "cluster.name=elasticsearch" #設(shè)置集群名稱為elasticsearch - "discovery.type=single-node" #以單一節(jié)點(diǎn)模式啟動 - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #設(shè)置使用jvm內(nèi)存大小 - TZ=Asia/Shanghai volumes: - /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件掛載 - /mydata/elasticsearch/data:/usr/share/elasticsearch/data #數(shù)據(jù)文件掛載 ports: - 9200:9200 - 9300:9300 kibana: image: docker.elastic.co/kibana/kibana:7.1.1 container_name: kibana7.1.1 links: - elasticsearch:es #可以用es這個域名訪問elasticsearch服務(wù) depends_on: - elasticsearch #kibana在elasticsearch啟動之后再啟動 environment: - "elasticsearch.hosts=http://es:9200" #設(shè)置訪問elasticsearch的地址 - TZ=Asia/Shanghai ports: - 5601:5601 restart: always logstash: image: docker.elastic.co/logstash/logstash:7.1.1 container_name: logstash7.1.1 environment: - TZ=Asia/Shanghai volumes: - /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf #掛載logstash的配置文件 depends_on: - elasticsearch #kibana在elasticsearch啟動之后再啟動 links: - elasticsearch:es #可以用es這個域名訪問elasticsearch服務(wù) ports: - 9600:9600 - 5044:5044 restart: always
保證在新建的目錄下,安裝elk三大軟件
docker-compose up -d
若logstash啟動失敗,則去/mydata/logstash把logstash.conf改為以下文件格式:
input{ tcp { mode => "server" port => 5044 codec => json_lines tags => ["data-http"] } } filter{ json{ source => "message" remove_field => ["message"] } } output{ elasticsearch{ hosts=> ["es:9200"] index => "data-http-%{+YYYY.MM.dd}" } stdout{codec => rubydebug} }
重新啟動
docker-compose restart
三、springboot配置文章來源:http://www.zghlxwxcb.cn/news/detail-457217.html
創(chuàng)建logback.xml文件,即可簡單集成日志文章來源地址http://www.zghlxwxcb.cn/news/detail-457217.html
<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml" /> <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>127.0.0.1:5044</destination> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" /> </appender> <root level="INFO"> <appender-ref ref="LOGSTASH" /> <appender-ref ref="CONSOLE" /> </root> </configuration>
到了這里,關(guān)于springboot整合elk(Elasticsearch+Logstash+Kibana)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!