springboot 集成 ELK 示例

springboot 集成 ELK 示例,第1张

springboot 集成 ELK 示例 一 环境准备

windows 系统
springboot:2.1.3.RELEASE
elasticsearch: 6.2.2
kibana: 6.2.2
logstash: 6.2.2
Java:1.8
其他环境:springdata, mybatis, mysql 等
强调:elasticsearch, kibana, logstash 版本一定要匹配

二 集成前环境测试 2.1 elasticsearch 测试

下载 elasticsearch, 解压到指定目录,该步骤网上有很多教程,不细说了,解压后到 bin 目录下,执行 elasticsearch.bat 文件,成功执行后访问:http://localhost:9200/, 显示如下图,即为成功

2.2 kibana 测试

下载 kibana, 解压到指定目录,该步骤网上有很多教程,不细说了, 解压后到 bin 目录下, 执行 kibana.bat 文件,启动成功后,访问:http://localhost:5601/,显示如下图,即为成功。

2.3 logstash 测试

下载 logstash, 解压到指定目录,该步骤网上有很多教程,不细说了, 解压后到 config 目录下,创建 logstash.conf 文件,文件为 springboot 集成时要用到的配置,文件内容为:

input {
	tcp {
		mode => "server"
		host => "127.0.0.1"
		port => 4560
		codec => json_lines
	}
}

output {
	elasticsearch {
		hosts => "localhost:9200"
		index => "springboot-logstash-%{+YYYY.MM.dd}"
	}
}

强调:文件缩进及格式要严格正确,否则启动会报错。
文件配置完成后,切换到 bin 目录下,执行命令进行测试:logstash -e “input { stdin { } } output { elasticsearch { hosts => [‘127.0.0.1:9200’] } }”。 执行后稍等一下屏幕会出现等待输入的提示,如:

输入 hello,然后查看 kibana 页面,会出现索引为 logstash-xxx 的索引,并且可以看到 hello, 如:

该步成功后,意味着 logstash 可以收集信息并发送到 elasticsearch,并在 bibana 页面展示,整个流程是通的。成功后在 bin 目录下执行启动命令:logstash -f …/config/logstash.conf, 稍等一下等待启动成功, 启动成功后访问:http://localhost:9600/, 如下所示:

至此 ELK 的环境准备及测试完成,接下来进行springboot 集成 ELK 所需的配置

三 配置

简单准备一个可以正常启动的 springboot 项目,且有 log 的输出。
本文只列出关于 ELK 的相关配置,其他依赖或者配置可以自由添加,如 redis, mongdb等。

    添加依赖:

	mysql
	mysql-connector-java
	8.0.15




	org.springframework.boot
	spring-boot-starter-data-elasticsearch



	org.junit.jupiter
	junit-jupiter
	RELEASE
	test




	net.logstash.logback
	logstash-logback-encoder
	5.3


其他所需依赖可以自由添加,如 mybatis 分页或者 mybati 生成器之类的。

    application.yml 内容类似:
server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: xxx
    password: xxx
  data:
    elasticsearch:
      repositories:
        enabled: true
      cluster-nodes: 127.0.0.1:9300 # es的连接地址及端口号
      cluster-name: elasticsearch # es集群的名称


mybatis:
  mapper-locations:
    - classpath:mappermapper/*.xml


logging:
  level:
    root=INFO:
  config: classpath:logback-spring.xml

有其他配置可以自由添加。

    resource 目录下添加文件 logback-spring.xml,文件内容为:



    
    

    

    
    

    
    

    
    
        
            INFO
        
        
        
            ${CONSOLE_LOG_PATTERN}
            utf8
        
    

    
    
        127.0.0.1:4560
        
        
            
                
                    UTC
                
                
                    
                        {
                        "logLevel": "%level",
                        "serviceName": "${springAppName:-}",
                        "pid": "${PID:-}",
                        "thread": "%thread",
                        "class": "%logger{40}",
                        "rest": "%message"
                        }
                    
                
            
        
        
    

    
        
        
    


成功启动项目, 访问项目,触发 log 的输出,在 kibana 页面如果可以看到 springboot-logstash-xxx 的索引,就已经成功一半了,接下来,在 kibana 页面创建索引:

索引名称可以按照规则自己随便填,点击下一步,


之后就可以在 Discover 中查询自己想要关注的内容了,搜索 log 中的关键字等。至此, 集成完成。

四 问题

集成过程遇到了一些问题,记录一下。

4.1 项目启动失败

项目本来启动正常,但是当集成 logstash 后,启动失败,错误为: Caused by: java.lang.IllegalArgumentException: mapper [brandName] of different type, current_type [text], merged_type [keyword] 等。
查询出错误原因为 elasticsearch 上的索引映射数据和现在对不上,数据不一致导致的,所以解决办法就是删除 es 上的索引。如在 kibana 界面,Dev Tools 功能下,执行命令:

DELETE xxx
{
  "query": {
    "match_all": {}
  }
}

其中 XXX 为 索引名称。
删除成功后,再次启动项目,启动成功,问题解决。

4.2 创建索引失败

在 kibana 页面创建索引曾经一直失败,点击创建按钮后就一直在这个页面上,F12 打开控制台,发现该请求一直返回 503,service unreachable,调整了好久,又调整 es 以及 kibana 的 yml 配置文件,把 端口号之类的注释都打开了,的确可以成功创建了,但是 项目又不好用了,后来又把改的配置文件都还原,调整项目可以正常启动及使用,然后调整 logstash,conf 文件,使其可以连接到本地的 es,注意,调整完成后一定要重启,重启后,再次创建,可以成功了。

五 总结

还有一堆琐碎的小问题,都在网上很快找到了答案,就不记载了。之前项目已经用 spring data 集成了 es, 这次加上 logstash, 也弄了两天,遇到了很多问题,也都一一解决了,终于把整个 ELK 框架搭建完成,收获很多。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5708746.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存