当前位置: 首页 > news >正文

ELK:Elasticsearch、Logstash、Kibana Spring Cloud Sleuth和Spring Cloud Zipkin

 〇、虚拟机中docker安装elasticsearch 、Kibana、Logstash 

        elasticsearch导入中文分词器

        Logstash修改es数据库ip及创建索引名配置

一、elasticsearch数据库的结构

        和mysql作比较,mysql中的数据库的二维表相当于es数据库的index索引结构;mysql数据库的二维表中每一条数据相当于es数据库中的document文档数据。

        每个索引有主分片和副分片,主分片和副分片数据保持一致,类似主从关系。



        index索引有不同于二维表的mappings数据结构:



        document文档数据存放在hits中的hits中



二、使用Kibana图形化界面命令操作es数据库

      1)查看索引、创建索引及mappings结构、创建文档数据

1)查询所有索引

2)查看指定索引goods

3)创建索引并更改mapping结构 

4)创建索引文档

5)其他命令



      2)对文档数据的crud操作






      3)检索操作










三、使用java代码连接操作es数据库

        0)导入依赖坐标

  <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>


        1)创建实体类、并添加注解

                @Field:

                        添加该注解类似于redis的json数据和实体类对象的属性映射时添加的注解,name用来指定映射到es数据库中的字段名称,type用来指定映射到es数据库中的类型,analyzer用来指定分词器,es数据库没有中文分词器,需要自行下载。

                @Document:

                        indexName指定创建index索引时的索引名

   


  2)添加相关配置文件

                别忘记编写启动类


   3) 在测试类中调用es数据库连接对象elasticsearchRestTemplate     

        ①创建索引


        ②增


        ③改


        ④删


        ⑤全字段内容检索


        ⑥全部搜索


        ⑦匹配搜索


        ⑧短语搜索


        ⑨范围搜索


        ⑩多条件搜索


       ⑩①搜索高亮



四、使用Logstash收集日志数据到es数据库中

        0)依赖坐标

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version>
</parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.3</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
</dependencies>

        1)编写logback.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<!--该日志将日志级别不同的log信息保存到不同的文件中 -->

<configuration>

    <include resource="org/springframework/boot/logging/logback/defaults.xml" />

    <springProperty scope="context" name="springAppName"

                    source="spring.application.name" />

    <!-- 日志在工程中的输出位置 -->

    <property name="LOG_FILE" value="${BUILD_FOLDER:-build}/${springAppName}" />

    <!-- 控制台的日志输出样式 -->

    <property name="CONSOLE_LOG_PATTERN"

              value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />

    <!-- 控制台输出 -->

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">

        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">

            <level>INFO</level>

        </filter>

        <!-- 日志输出编码 -->

        <encoder>

            <pattern>${CONSOLE_LOG_PATTERN}</pattern>

            <charset>utf8</charset>

        </encoder>

    </appender>

    <!-- logstash远程日志配置-->

    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">

        <destination>192.168.8.128:4560</destination>

        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />

    </appender>

    <!-- 日志输出级别 -->

    <root level="DEBUG">

        <appender-ref ref="console" />

        <appender-ref ref="logstash" />

    </root>

</configuration>


        2)添加日志注解


         3)kibana查看日志索引文档信息

                        ①)命令查看

                        ②)图形化界面

五、Spring Cloud Sleuth

                Sleuth是在logback的基础上进行请求追踪和日志记录,会标记请求添加一个id。

        0)依赖坐标

<!-- sleuth启动器依赖 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!-- logstash相关依赖,用于应用中的Sleuth将采集的跟踪数据发送给logstash使用 -->
<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>5.0</version>
</dependency>

        1)修改logback.xml配置文件<encoder>标签

<?xml version="1.0" encoding="UTF-8"?>
<!--该日志将日志级别不同的log信息保存到不同的文件中 -->
<configuration><include resource="org/springframework/boot/logging/logback/defaults.xml" /><springProperty scope="context" name="springAppName"source="spring.application.name" /><!-- 日志在工程中的输出位置 --><property name="LOG_FILE" value="${BUILD_FOLDER:-build}/${springAppName}" /><!-- 控制台的日志输出样式 --><property name="CONSOLE_LOG_PATTERN"value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" /><!-- 控制台输出 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter><!-- 日志输出编码 --><encoder><pattern>${CONSOLE_LOG_PATTERN}</pattern><charset>utf8</charset></encoder></appender><!-- logstash远程日志配置--><appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>192.168.222.128:4560</destination><encoderclass="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"><providers><timestamp><timeZone>UTC</timeZone></timestamp><pattern><pattern>{"severity": "%level","service": "${springAppName:-}","trace": "%X{X-B3-TraceId:-}","span": "%X{X-B3-SpanId:-}","exportable": "%X{X-Span-Export:-}","pid": "${PID:-}","thread": "%thread","class": "%logger{40}","rest": "%message"}</pattern></pattern></providers></encoder></appender><!-- 日志输出级别 --><root level="DEBUG"><appender-ref ref="console" /><appender-ref ref="logstash" /></root>
</configuration>

六、Spring Cloud Zipkin

                Zipkin和Sleuth集成,提供请求追踪,响应时间的可视化界面

                -1)创建docker容器运行Zipkin服务器


                0)依赖坐标

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

               1)删除logback.xml

               2)访问http://192.168.222.128:9411/zipkin:


http://www.mrgr.cn/news/48156.html

相关文章:

  • 【潜意识Java】深度解析黑马项目《苍穹外卖》与蓝桥杯算法的结合问题
  • SAP SD客户主数据及其配置
  • 重温设计模式--组合模式
  • 管理系统、微信小程序类源码文档-哔哩哔哩教程同步
  • 如何从 0 到 1 ,打造全新一代分布式数据架构
  • DataV的安装与使用(Vue3版本)
  • 24-10-11-网络
  • 基于Web的停车场管理系统(论文+源码)_kaic
  • 编写Vue组件
  • 功率检测和语音功能
  • Linux系统:apt upgrade与apt update 命令的作用
  • Flutter多语言适配
  • 【C++】零碎知识点(易忘 / 易错)总结回顾
  • VS2022使用技巧
  • Windows 11 文件转换攻略:轻松将 docx 转换为 pdf 实战技巧
  • 《软件工程导论》—— 1 - 13章习题详解!
  • 代码随想录day32:动态规划part5
  • 每天一题:洛谷P1279 字串距离
  • 解决使用MobaXterm不能向Ubuntu上传下载文件的问题
  • 推荐阅读:丰田汽车金融支老师使用“数智化审计赋能平台”之体验分享
  • DM原生JDBC,查询结果用Jackson序列化,字段为TEXT类型且存的json字符串时,报错“Infinite recursion“
  • HCIP--以太网交换安全(二)端口安全
  • RDD优化:缓存和checkpoint机制、数据共享(广播变量、累加器)、RDD的依赖关系、shuffle过程、并行度说明
  • Git介绍--github/gitee/gitlab使用
  • Qt 数据库,人脸识别
  • Matplotlib库