win下搭建ELK并集成springboot

ELK是Elasticsearch、Logstash和Kibana的组合,用于日志收集、处理和可视化。它提供了强大的搜索、展示功能,适用于分布式日志管理、系统监控、故障排查等多个场景。在Windows环境下,文章详细介绍了ELK各组件的下载、配置和启动过程,并展示了如何与SpringBoot应用集成。
摘要由CSDN通过智能技术生成

ELK到底是什么?

一、ELK是什么?

ELK实际上是三个工具的集合,Elasticsearch + Logstash + Kibana,这三个工具组合形成了一套实用、易用的监控架构,很多公司利用它来搭建可视化的海量日志分析平台。

  1. ElasticSearch
    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

  1. Logstash
    Logstash是一个用于管理日志和事件的工具,你可以用它去收集日志、转换日志、解析日志并将他们作为数据提供给其它模块调用,例如搜索、存储等。

  1. Kibana
    Kibana是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,为用户提供强大的数据可视化支持。

二、ELK有何优势?

  1. 强大的搜索功能,elasticsearch可以以分布式搜索的方式快速检索,而且支持DSL的语法来进行搜索,简单的说,就是通过类似配置的语言,快速筛选数据。

  1. 完美的展示功能,可以展示非常详细的图表信息,而且可以定制展示内容,将数据可视化发挥的淋漓尽致。

  1. 分布式功能,能够解决大型集群运维工作很多问题,包括监控、预警、日志收集解析等。

三、ELK一般用来做啥?

ELK组件在海量日志系统的运维中,可用于解决:

  • 分布式日志数据集中式查询和管理

  • 系统监控,包含系统硬件和应用各个组件的监控

  • 故障排查

  • 安全信息和事件管理

  • 报表功能

ELK组件在大数据运维系统中,主要可解决的问题如下:

  • 日志查询,问题排查,上线检查

  • 服务器监控,应用监控,错误报警,Bug管理

  • 性能分析,用户行为分析,安全漏洞分析,时间管理

四、ELK搭建

1、版本介绍

这里笔者采用win11进行搭建,其余版本如下

elasticsearch-7.12.0

kibana-7.12.0-windows-x86_64

logstash-7.12.0-windows-x86_64

最后奉上网址:下载中心 - Elastic 中文社区 (elasticsearch.cn)

看清楚喽,是windows下,版本要一致

2、启动elasticsearch

ok,下载解压之后开始我们的文件配置,首先打开我们的elasticsearch文件夹,进入config文件夹,编辑elasticsearch.yml文件,在文件中引入

cluster.name: my-application  #集群名:类似于数据库名
path.data: D:/log  #数据目录
path.logs: D:/log  #日志目录
node.name: node-1
node.attr.rack: r1
cluster.initial_master_nodes: node-1
node.master: true
node.data: true
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.compression: true
transport.tcp.compress: true
indices.query.bool.max_clause_count: 10240
xpack.watcher.execution.default_throttle_period: 1s
http.cors.enabled: true
http.cors.allow-origin: "*"

保存配置后,启动ElasticSearch,进入bin目录,elasticsearch.bat启动成功,打开浏览器访问:http://127.0.0.1:9200,出现下面界面,说明ElasticSearch启动成功

3、安装elasticsearch-head插件

安装elasticsearch-head插件(这是elasticsearch的一个web端管理插件,通过管理插件可以查看ElsasticSearch的客户端工具,由node.js构建的前端工程。)git地址:https://github.com/mobz/elasticsearch-head 。拉去过慢,可以使用gitclone进行拉取https://gitclone.com/github.com/mobz/elasticsearch-head

拉取成功后,可以使用进入使用vscode打开或者其他编译器,打开终端,键盘入 npm in

bnpm install

npm run start

zhe 这里npm install k可能会有一个包npm install时 phantomjs包下载不下来,单独下载就可以批量下载时,

npm install phantomjs@2.1.1 --ignore-scripts

然后再重复上述操作即可,启动之后,访问http://localhost:9100,界面如下:

4、启动logstash

进入logstash/config中新建配置文件logstash.conf,内容如下:

input {
    file {
        type => "nginx_access"
        path => "d:/elk/logs/logstash.log"
    }
}
output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "access-%{+YYYY.MM.dd}"
    }
    stdout {
        codec => json_lines
    }
}

启动logstash,进入logstash/bin执行:.\logstash.bat -f ../config/logstash.conf

以下界面就是启动成功了

5、启动Kibana

进入Kibana下config下的kibana.yml修改为:

server.port: 5601
server.host: "127.0.0.1"
elasticsearch.hosts: ["http://localhost:9200"]
xpack.encryptedSavedObjects.encryptionKey: encryptedSavedObjects12345678909876543210
xpack.security.encryptionKey: encryptionKeysecurity12345678909876543210
xpack.reporting.encryptionKey: encryptionKeyreporting12345678909876543210
xpack.reporting.capture.browser.chromium.disableSandbox: true

启动Kibana,进入Kibana/bin执行:kibana.bat,打开浏览器访问http://localhost:5601/

五、与springboot集成

  1. 引入依赖

        <!--logstash-->
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>5.3</version>
        </dependency>
        
        <!--web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
    
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

yml配置文件中写入

spring.application.name=myElk

server.port = 8081

在resource下创建logback-spring.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
    <!--应用名称-->
    <property name="APP_NAME" value="mall-admin"/>
    <!--日志文件保存路径-->
    <property name="LOG_FILE_PATH" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/logs}"/>
    <contextName>${APP_NAME}</contextName>
    <!--每天记录日志到文件appender-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>d:\elk\logs\logstash.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--            <fileNamePattern>${LOG_FILE_PATH}/${APP_NAME}-%d{yyyy-MM-dd}.log</fileNamePattern>-->
            <fileNamePattern>d:\elk\logs\logstash.%d{yyyy-MM-dd}.%d.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <!--输出到logstash的appender-->
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!--可以访问的logstash日志收集端口-->
        <destination>127.0.0.1:4560</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
    </appender>
    <root level="info">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
        <appender-ref ref="LOGSTASH"/>
    </root>
</configuration>

ok,接下来创建测试类

package com.example.myelk.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@Slf4j
@RestController
@RequestMapping("/test")
public class TestController {
    
    @GetMapping("/success")
    public String test (){
        log.info("###test:{}", new Date());
        return "success";
    }
    
}

访问接口后,在Kibana中创建索引access-*,时间选择 I dont want to use te time filter就行

点击create index pattern即可创建成功

创建成功之后,可以选择上方搜索框,搜索Discover,可以选择table或者json

IDEA 中控制台打印的原日志内容是下面内容。Logstash 作用就是把下面内容转换为上面Elasticsearch 存储的内容。在中间做了数据格式转换,收集数据放入 Elasticsearch 中的工作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值