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

news2024/11/28 0:46:48

 〇、虚拟机中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>
        <encoder
                class="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.coloradmin.cn/o/2206749.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java_EE ( IO 流技术)

什么是IO输入(Input)指的是&#xff1a;可以让程序从外部系统获得数据&#xff08;核心含义是“读”&#xff0c;读取外部数据&#xff09;。输出(Output)指的是&#xff1a;程序输出数据给外部系统从而可以操作外部系统&#xff08;核心含义是“写”&#xff0c;将数据写出到外…

七言-重阳寄友

题 记 九九重阳节&#xff0c;岁岁嵌在仲秋季节里&#xff0c;人们的心情也便随着气温的下降而逐渐地沉静下来。 丰收的喜悦洋溢在山水和田野之间。金黄的稻穗低垂着头&#xff0c;仿佛在向大地母亲致以最深情的敬意。 果园里&#xff0c;沉甸甸的苹果、梨子挂满枝头&#…

职场上的人情世故你知多少

1.发微信找人帮忙&#xff0c;半天不回&#xff0c;那基本没戏了&#xff0c;不要再打扰了&#xff0c;懂得都懂。 2.能力越大&#xff0c;事情越多&#xff0c;要懂得张弛有度&#xff0c;不要把自己全抛出去&#xff0c;给自己留点余地&#xff0c;毕竟你不知道别人如何暗地…

关于电动车新国标要求的北斗定位功能资料

一、安装及接口 电动自行车应内置北斗定位模块&#xff0c;安装于电动自行车不易损坏的固定部件中。定位装置所采用的芯片或模组应支持UAR或SPI接口至少支持接收处理北斗 B1C和B2a信号 二、定位检测环境 应具备接收实际卫星信号并进行电动自行车整车运行状态下检测的实验室条件…

【Axure安装包与汉化包附带授权证书】

一、下载Axure安装包与汉化包附带授权证书 1.下载汉化包 【快传】: 点击链接即可保存 2.解压安装包 解压下载好的压缩包&#xff0c;能看到有lang也就是汉化包&#xff0c;AxureRP-Setup-RC.exe 也就是Axure9的安装程序&#xff0c;以及汉化说明和授权码。 二、安装Axure9…

机器人末端的负载辨识

关节处的摩擦力变小了&#xff0c;导致系统的参数辨识精度会变高&#xff0c;因为动力学方程中的摩擦力项占的比例会变小。 为什么要有一个负载的参数辨识&#xff0c;因为对于整个系统来说&#xff0c;除了负载哈&#xff0c;其他关节都是不变的&#xff0c;出厂时都设置好了&…

用YOLOv5跑口罩佩戴识别时的一些问题解决

文章目录 1. 问题12. 问题23. 问题3 1. 问题1 1. 报错&#xff1a;TypeError: No loop matching the specified signature and casting was found for ufunc greater. 2. 原因&#xff1a;版本不兼容。 3. 解决&#xff1a; 先查看当前的 numpy 版本&#xff1a;pip list卸载当…

【动手学深度学习】5.2 参数管理(个人向笔记+代码注释)

之前的课程中&#xff0c;我们只是通过深度学习框架完成训练的工作&#xff0c;而忽略了操作参数的具体细节。所以我们我们介绍的内容有&#xff1a; 访问参数&#xff0c;用于调试&#xff0c;诊断和可视化参数初始化在不同的模型组件间共享参数 下面是一个有单隐藏层的多层感…

基于Python flask的豆瓣电影可视化系统,豆瓣电影爬虫系统

博主介绍&#xff1a;✌Java徐师兄、7年大厂程序员经历。全网粉丝13w、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不…

猿人学 — 第1届第17题(解题思路附源码)

猿人学 — 第1届第17题 根据题目“天杀的Http2.0”大概知道&#xff0c;请求的协议应该遵照的是Http2.0协议&#xff0c;并且目标网站专门对此进行了检测&#xff0c;在Network面板中右键表头&#xff0c;勾选Protocol 果不其然&#xff0c;一堆请求都是遵照Http2.0协议。而u…

2023年4月自考《数据库系统原理》04735试题

目录 一:选择题 二:填空题 三:设计题 四:简答题 五:综合题 一:选择题 1.在数据库系统中&#xff0c;专门用户建立和管理数据的软件是 (书中)P28页 A.DBS B.DB C.DBA D.DBMS 2.通常所说的数据库系统容不包括 (书中)P29页 A.应用程序 B.数据库管理员 C.用户 D.网络环境 …

Datawhale 组队学习 文生图 Prompt攻防 task01

文生图大模型面临着巨大的滥用风险&#xff0c;如生成虚假、违法违规、血腥恐怖或歧视仇恨的图片&#xff0c;评估此类模型和系统的安全防范能力至关重要。 赛题背景&#xff1a;从产业应用需求出发&#xff0c;体验为大模型注入生成式“风险疫苗”&#xff0c;透视大模型生图潜…

Java SE vs Java EE 与 JVM vs JDK vs JRE

Java SE&#xff08;Java Platform&#xff0c;Standard Edition&#xff09;: Java 平台标准版&#xff0c;Java 编程语言的基础&#xff0c;它包含了支持 Java 应用程序开发和运行的核心类库以及虚拟机等核心组件。Java SE 可以用于构建桌面应用程序或简单的服务器应用程序。…

聚类分析 | IPOA优化FCM模糊C均值聚类优化算法

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 (多图聚类)IPOA优化FCM模糊C均值聚类优化算法&#xff0c;matlab代码&#xff0c;超多图 基于改进的鹈鹕优化算法&#xff08;IPOA&#xff09;优化FCM模糊C均值聚类优化&#xff0c;matlab代码&#xff0c;直接运行…

万字长文解读预测市场的历史发展与未来前景

撰文&#xff1a;Alex Nardi&#xff0c;Shoal Research 编译&#xff1a;Yangz&#xff0c;Techub News 文章要点&#xff1a; 预测市场的发展和影响&#xff1a;预测市场利用集体智慧预测未来事件的能力日益得到认可&#xff0c;对政治、金融、娱乐和流行文化等领域产生了重…

HiRT | 异步控制策略,告别VLA时延问题

论文&#xff1a;HiRT: Enhancing Robotic Control with Hierarchical Robot Transformers 前言&#xff1a;HiRT 通过异步处理的策略&#xff0c;将 VLM 作为低频慢思考过程&#xff0c;将轻量的动作策略模型作为高频快响应过程 &#xff0c;以此解决 VLA 驱动带来的控制时延问…

Ubuntu22.04环境下源码安装OpenCV 4.8.1

因为项目需要用OpenCV对yolov8模型进行推理&#xff0c;通过DNN模块&#xff0c;之前本地的OpenCV版本是4.5.4&#xff08;好像安装完ROS2 humble之后系统就自带了opencv&#xff09;&#xff0c;加载onnx模型一直报错&#xff0c;网上查询到需要4.7以上&#xff0c;干脆直接升…

vue3之依赖注入provide(提供)/inject(注入)

通常情况下&#xff0c;需要从父组件传值到子组件使用props足以&#xff0c;但是如果是深层嵌套的组件&#xff0c;如果某个深层的组件想要得到祖先组件的部分数据&#xff0c;使用props的话需要沿着各个嵌套的组件着层传递数据&#xff0c;而在传递过程中的组件压根就不需要使…

你了解 SpringBoot 在一次 http 请求中耗费了多少内存吗?

在实际工作中&#xff0c;经常会需要进行在全链路压测&#xff0c;优化 GC参数&#xff0c;优化 JVM 内存分配。 当知道 1 次 RPC 请求和 Http 请求需要的堆内存大小后&#xff0c;你可以精确地计算&#xff1a;指定的并发量之下&#xff0c;系统需申请多少堆内存。同时结合 J…

若依 根据角色权限 动态添加路由 学习

源于这个问题对若依权限改造的学习&#xff0c;用ASP.NET Core Web api 做后端&#xff0c;所以不是纯净的若依前端&#xff0c;有部分改过。 ​​​​​​​若依 从字典类型跳到字典数据跳到了404-CSDN博客 从路由守卫获取到用户信息开始&#xff0c;到路由跳转结束的过程 …