功能介绍
ELK 是软件集合Elasticsearch、Logstash、Kibana的简称,由这三个软件及其相关的组件可以打造大规模日志实时处理系统。
Elasticsearch 是一个基于 Lucene 的、支持全文索引的分布式存储和索引引擎,主要负责将日志索引并存储起来,方便业务方检索查询。
Logstash是一个日志收集、过滤、转发的中间件,主要负责将各条业务线的各类日志统一收集、过滤后,转发给 Elasticsearch 进行下一步处理。
Kibana是一个可视化工具,主要负责查询 Elasticsearch 的数据并以可视化的方式展现给业务方,比如各类饼图、直方图、区域图等。
基于对日志的实时分析,可以随时掌握服务的运行状况、统计 PV/UV、发现异常流量、分析用户行为、查看热门站内搜索关键词等。
操作手顺
一、每个单独部署
创建自定义的网络(用于连接到连接到同一网络的其他服务(例如Kibana))
docker network create somenetwork
1、elasticsearch部署
使用docker命令
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.4.2
创建并启动elasticsearch容器
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch --net somenetwork -d docker.elastic.co/elasticsearch/elasticsearch:6.4.2
通过本地浏览器访问虚拟机地址的9200端口,返回如下内容,则证明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
创建并启动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中需要创建logstash的配置文件logstash.conf,该文件内容如下:
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
创建并启动容器
docker run -p 5601:5601 --name=kibana --net somenetwork -d docker.elastic.co/kibana/kibana:6.4.2
二、docker-compose一起部署
一、第一步在docker上安装ELK
创建目录
mkdir /home/app/myelk
新建docker-compose.yml文件
复制以下内容到新建的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" #设置集群名称为elasticsearch - "discovery.type=single-node" #以单一节点模式启动 - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小 - TZ=Asia/Shanghai volumes: - /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载 - /mydata/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载 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服务 depends_on: - elasticsearch #kibana在elasticsearch启动之后再启动 environment: - "elasticsearch.hosts=http://es:9200" #设置访问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服务 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配置文章来源:https://www.toymoban.com/news/detail-457217.html
创建logback.xml文件,即可简单集成日志文章来源地址https://www.toymoban.com/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>
到了这里,关于springboot整合elk(Elasticsearch+Logstash+Kibana)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!