SpringBoot集成ELK

这篇具有很好参考价值的文章主要介绍了SpringBoot集成ELK。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

对于一个系统,app,等等,线上排查信息是一件非常头疼的事,尤其在服务端极为凸显,研发人员面对线上问题,首先定位日志,这个只能去服务器下检索日志,输入各种命令行,但是为了服务器的安全,一般不允许研发人员接触服务器,会有运维人员去操作日志,极大的影响效率!如果有可视化操作,检索日志的界面就好了!

ELK是啥?长啥样?

ELK其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和
Kibana。这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为ELK协议栈

SpringBoot集成ELK
Kibana

Kibana是一款基于 Apache开源协议,使用 JavaScript语言编写,为 Elasticsearch提供分析和可视化的 Web
平台。它可以在Elasticsearch的索引中查找,交互数据,并生成各种维度的表图.

Logstash 作为日志搜集器

这种架构是对上面架构的扩展,把一个 Logstash 数据搜集节点扩展到多个,分布于多台机器,将解析好的数据发送到
Elasticsearch server 进行存储,最后在 Kibana 查询、生成日志报表等
SpringBoot集成ELK

Elasticsearch
es详解点击获取

使用Docker Compose 搭建ELK环境

Docker compose 安装

官方地址

安装Docker compose 需要提前安装docker
1、进入官网【选则需要的版本 “这里选择的是 linux”】

SpringBoot集成ELK

2、下载命令
curl -L "https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" > /usr/local/bin/docker-compose
3、授权
sudo chmod +x /usr/local/bin/docker-compose
4、验证是否成功
docker-compose version

SpringBoot集成ELK

elk部署

需要下载的Docker镜像
docker pull elasticsearch:6.4.0
docker pull logstash:6.4.0
docker pull kibana:6.4.0

1、创建一个存放logstash配置的目录并上传配置文件
logstash-springboot.conf文件内容
input {
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4560
    codec => json_lines
  }
}
output {
  elasticsearch {
    hosts => "es:9200"
    index => "springboot-logstash-%{+YYYY.MM.dd}"
  }
}

2、创建配置文件存放目录并上传配置文件到该目录
mkdir /mydata/logstash
3、docker-compose.yml内容
version: '3'
services:
  elasticsearch:
    image: elasticsearch:6.4.0
    container_name: elasticsearch
    environment:
      - "cluster.name=elasticsearch" #设置集群名称为elasticsearch
      - "discovery.type=single-node" #以单一节点模式启动
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小
    volumes:
      - /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
      - /mydata/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
    ports:
      - 9200:9200
      - 9300:9300
  kibana:
    image: kibana:6.4.0
    container_name: kibana
    links:
      - elasticsearch:es #可以用es这个域名访问elasticsearch服务
    depends_on:
      - elasticsearch #kibana在elasticsearch启动之后再启动
    environment:
      - "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址
    ports:
      - 5601:5601
  logstash:
    image: logstash:6.4.0
    container_name: logstash
    volumes:
      - /mydata/logstash/logstash-springboot.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件
    depends_on:
      - elasticsearch #kibana在elasticsearch启动之后再启动
    links:
      - elasticsearch:es #可以用es这个域名访问elasticsearch服务
    ports:
      - 4560:4560

上传到linux服务器并使用docker-compose命令运行
docker-compose up -d

重点【因为elasticsearch不能以root用户启动 挂载理linux权限是不够的,执行一下命令**】**

chmod 777 /mydata/elasticsearch/data
1、在logstash中安装json_lines插件
# 进入logstash容器
docker exec -it logstash /bin/bash
# 进入bin目录
cd /bin/
# 安装插件
logstash-plugin install logstash-codec-json_lines
# 退出容器
exit
# 重启logstash服务
docker restart logstash

2、关闭防火墙
systemctl stop firewalld

访问地址:http://192.168.56.10:5601
SpringBoot集成ELK

SpringBoot应用集成Logstash

在pom.xml中添加logstash-logback-encoder依赖
<!--集成logstash-->
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>5.3</version>
</dependency>

添加配置文件logback-spring.xml让logback的日志输出到logstash

**注意appender节点下的destination需要改成你自己的logstash服务地址,比如我的是:192.168.56.10:4560 **

<?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">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE_PATH}/${APP_NAME}-%d{yyyy-MM-dd}.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>192.168.3.101: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>

在kibana中查看日志信息

创建index pattern

SpringBoot集成ELK

SpringBoot集成ELK

SpringBoot集成ELK

SpringBoot集成ELK文章来源地址https://www.toymoban.com/news/detail-407646.html

到了这里,关于SpringBoot集成ELK的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot系统搭建集成-015-自动化测试

    李村 dreamlison@163.com , v1.0.0, 2019.10.07 除了安全之外,项目开发的一个重要的一环就是自动化测试,自动化测试主要是使用几个注解比如@springBootTest,引入Test starter依赖; 这样就可以自动启动获取容器中对象 自动化测试是一种软件测试技术,使用特殊的自动化测试工具执行测试

    2024年02月09日
    浏览(31)
  • SpringBoot集成系统监控和告警工具包prometheus

    prometheus以开源软件的形式进行研发的系统监控和告警工具包 Grafana 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测工具,只需要提供需要监控的数据,它就可以帮助生成各种可视化仪表,同时它还有报警功能,可以在系统出现问题时发出通知。 环境搭建:

    2024年03月09日
    浏览(46)
  • SpringBoot集成slf4j日志系统

    作者平台: | CSDN:blog.csdn.net/qq_4115394… | 掘金:juejin.cn/user/651387… | 知乎:www.zhihu.com/people/1024… | GitHub:github.com/JiangXia-10… | 微信公众号:1024笔记 本文大约4777字,预计阅读时长11分钟 日志系统作为一个应用系统的重要部分之一,它能够有助于我们在系统在线上环境中如果

    2023年04月19日
    浏览(29)
  • 基于springboot线上礼品商城

    博主主页 :猫头鹰源码 博主简介 :Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战 主要内容 :毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 该系统创作于2023年3月,基于spr

    2024年02月13日
    浏览(24)
  • 对于一个程序员来说,电脑的内存需要多大?

    1、 程序员电脑内存有多大内存够用足够了,纯写代码的编程对电脑要求不高,尤其对显卡几乎没有要求,一般编程可能开的任务窗口比较多,所以只要cpu和内存大点就可以了一般来说,处理器确实比显卡来得重要一些,因为我们的电脑中只配备了一块处理器,而处理器内置

    2024年02月09日
    浏览(45)
  • 关于建立一个Java项目全过程(专对于新手)

    JDK = JRE + 开发工具集(例如Javac编译工具等) JRE = JVM + Java SE标准类库 下载网址(Oracle公司官网):www.oracle.com 这里链接具体下载网址:https://www.oracle.com/java/technologies/downloads/ 复制链接打开后会出现以下内容 这里我们选择JDK17,因为这个版本的更稳定,更完善一些 然后点击链

    2024年02月07日
    浏览(41)
  • Vue3对于一个前端来讲意味着什么?

    最近很多技术网站,讨论的最多的无非就是Vue3了,大多数都是Composition API和基于Proxy的原理分析。但是今天想着跟大家聊聊, Vue3对于一个低代码平台的前端更深层次意味着什么? 首先,Vue是前端三大主流框架之一,也是目前最火的一个前端框架。 Vue作为一套构建用户界面的

    2024年02月09日
    浏览(31)
  • 使用Vue2开发一个图片预览组件,支持多图切换、缩放旋转、鼠标滚轮、键盘按键、拖动等等操作

    话不多说,咱们赶紧来开启本章的内容,这次小编给各位带来的依旧是实用类文章,分享如何开发一个完整的 图片预览组件 ,它支持多图切换、放大缩小、旋转、鼠标滚轮操作、键盘按键控制、拖动等等的功能,并且使用方便、易扩展,零依赖。 项目演示技术小编采用的是

    2024年02月09日
    浏览(52)
  • SpringBoot——对于属性中的时间和文件的单位进行设置

    在之前我们编写配置文件的时候,有时候多种技术的配置的属性值的默认属性的单位不同,比如在Tomcat中,对于最大连接时间就是以毫秒为单位,但是对于session的过期时间就是以分钟为单位,像这种单位不不统一就容易造成我们在编写配置文件的时候数值输入错误。那么我们

    2024年02月06日
    浏览(36)
  • Spring中事务失效的8中场景 对于一个事务开子线程

    1. 数据库引擎不支持事务 这里以 MySQL为例,MyISAM引擎是不支持事务操作的,一般要支持事务都会使用InnoDB引擎,根据MySQL 的官方文档说明,从MySQL 5.5.5 开始的默认存储引擎是 InnoDB,之前默认的都是 MyISAM,所以这一点要值得注意,如果底层引擎不支持事务,那么再怎么设置也

    2024年02月16日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包