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>
        <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:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值