SpringBoot整合ELK记录

您所在的位置:网站首页 开源日志索引和展示 SpringBoot整合ELK记录

SpringBoot整合ELK记录

2023-07-05 07:07| 来源: 网络整理| 查看: 265

ELK 分布式日志

实际上ELK是三款软件的简称,分别是Elasticsearch、 Logstash、Kibana组成。

Elasticsearch 基于java,是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Kibana 基于nodejs,也是一个开源和免费的工具,Kibana可以为Logstash和ElasticSearch提供的日志分析友好的Web 界面,可以汇总、分析和搜索重要数据日志。

Logstash 基于java,是一个开源的用于收集,分析和存储日志的工具。

需求:项目需要集中化的日志管理,所有服务器上的日志收集汇总。

Docker快速搭建ELK环境 拉取镜像

docker pull elasticsearch:7.10.1 docker pull kibana:7.10.1 docker pull logstash:7.10.1

1. elasticsearch部署

1. 环境准备 # 创建文件 mkdir -p /opt/elasticsearch/{plugins,data}  /etc/elasticsearch touch /etc/elasticsearch/elasticsearch.yml  chmod -R 777 /opt/elasticsearch/data/   vim /etc/elasticsearch/elasticsearch.yml

# 写入 cluster.name: elasticsearch http.cors.enabled: true                                http.cors.allow-origin: "*"                      http.host: 0.0.0.0 node.max_local_storage_nodes: 100

2. 启动容器 docker run -d --name=elasticsearch --restart=always \ -e discovery.type=single-node \ -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ -p 9200:9200 \ -p 9300:9300 \ -v /etc/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /opt/elasticsearch/data:/usr/share/elasticsearch/data \ -v /opt/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ elasticsearch:7.10.1

3. 验证和查看ElasticSearch版本 curl -XGET localhost:9200

2. kibana部署

1. 环境准备# 创建文件 mkdir -p /etc/kibana vim /etc/kibana/kibana.yml

# 写入 server.name: kibana server.host: "0" elasticsearch.hosts: [ "http://elasticsearch:9200" ] i18n.locale: "zh-CN"

2. 启动容器 docker run -d --restart always -p 5601:5601 --name kibana --link elasticsearch \ -e ELASTICSEARCH_URL=http://elasticsearch:9200 \ -v /etc/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml \ kibana:7.10.1

3. logstash部署

1. 环境准备 配置 logstash.yml# 创建文件 mkdir -p /etc/logstash/config vim /etc/logstash/config/logstash.yml

# 写入 http.host: "0.0.0.0" xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ] xpack.management.pipeline.id: ["main"]

配置pipeline.yml# 创建文件 vim  /etc/logstash/config/pipeline.yml 

# 写入(注意空格) - pipeline.id: main   path.config: "/usr/share/logstash/pipeline/logstash.config"    配置logstash.conf

注意:该配置可以有多种形式,如tcp、file等。我这里使用的tcp形式。

tcp形式:一个项目或其他日志数据来源用tcp协议的远程传输方式,将日志数据传入logstash

file文件形式:表示项目或tomcat指定一个生成日志存放路径,来存放生成的日志文件,然后logstash搜集此目录下所有的日志数据文件传给elasticsearch

# 创建文件 mkdir -p /etc/logstash/pipeline vim /etc/logstash/pipeline/logstash.conf 

# 写入 input {     tcp {       port => 5044       mode => "server"       host => "0.0.0.0"       codec => json_lines     } } filter{

} output {     elasticsearch {         hosts => ["elasticsearch:9200"]         # 索引名称,在springboot的logback-spring.xml文件动态配置%{[indexName]}         index => "%{[indexName]}-log-%{+YYYY-MM-dd}"     } }

2. 启动容器 docker run -d --restart always -p 5044:5044 -p 9600:9600 --name logstash --link elasticsearch \ -v /etc/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \ -v /etc/logstash/config/pipeline.yml:/usr/share/logstash/config/pipeline.yml \ -v /etc/logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \ logstash:7.10.1

测试 访问: http://ip:5601/

ps:页面出来就好,到这里还不能显示日志。因为没有配置索引。

SpringBoot整合

依赖

net.logstash.logback logstash-logback-encoder 7.2

logback-spring.xml配置

ps:在每个服务的logback-spring.xml配置不同的${moduleName},可实现动态配置索引,这样推送到Logstash就可以区分不同模块的日志

ip:5044 5 minutes {"indexName": "${moduleName}"} UTC  Kibana界面配置

 现在回到Kibana界面,配置索引,即可管理日志。

访问Kibana日志管理界面: http://ip:5601/

 创建索引

 索引名称若不能命中,则说明前面的配置有误。

 配置完索引后,就可以到Discover查看日志。

ps:动态设置索引名称后,这里可以轻松管理不同服务发送过来的日志,选择不同索引即可切换日志来源。

 参考链接:【Spring Cloud & Alibaba 开源全栈项目实战】:SpringBoot整合ELK实现分布式日志收集 - 有来技术 - 博客园 (cnblogs.com)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3