Springboot3整合ELK实现日志可视化

news2024/9/23 1:38:36

一、环境准备

Elasticsearch、Logstash、Kibana,组合起来可以搭建线上日志系统

ELK中各个服务的作用

  • Elasticsearch:用于存储收集到的日志信息;

  • Logstash:用于收集日志,SpringBoot应用整合了Logstash以后会把日志发送给Logstash,Logstash再把日志转发给Elasticsearch;

  • Kibana:通过Web端的可视化界面来查看日志。

1、安装Elasticsearch

  • 下载镜像

    如果本地有镜像,则无需下载。是否有镜像,可通过 docker images 命令查看。

    docker pull docker.elastic.co/elasticsearch/elasticsearch:8.8.2
    
  • 创建挂载目录

    mkdir -p /usr/local/elasticsearch/data && chmod 777 /usr/local/elasticsearch/data
    mkdir -p /usr/local/elasticsearch/plugins && chmod 777 /usr/local/elasticsearch/plugins
    mkdir -p /usr/local/elasticsearch/logs && chmod 777 /usr/local/elasticsearch/logs
    
  • docker run 运行容器

    docker run -d --name elasticsearch \
    --restart=always \
    -p 9200:9200 \
    -p 9300:9300 \
    -v /usr/local/elasticsearch/data:/usr/share/elasticsearch/data \
    -v /usr/local/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
    -v /usr/local/elasticsearch/logs:/usr/share/elasticsearch/logs \
    -e "discovery.type=single-node" \
    -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
    -e xpack.security.enabled=false \
    docker.elastic.co/elasticsearch/elasticsearch:8.8.2
    
  • docker 运行 elasticsearch 时,有可能会报如下错误:

    max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    

    解决办法是:在宿主机 /etc/sysctl.conf 文件最后添加一行:vm.max_map_count=262144 ,然后执行命令 sysctl -p

    echo "vm.max_map_count=262144" >> /etc/sysctl.conf
    
    sysctl -p #让配置生效
    
  • 验证

    通过 docker ps 查看容器的运行信息。

    访问网址 http://主机IP:9200/,会有一点点延迟,会看到类似如下内容:

    {
      "name" : "18263d8efab1",
      "cluster_name" : "docker-cluster",
      "cluster_uuid" : "DzaRMEosQ1CLD0b-MkgeQg",
      "version" : {
        "number" : "8.8.2",
        "build_flavor" : "default",
        "build_type" : "docker",
        "build_hash" : "98e1271edf932a480e4262a471281f1ee295ce6b",
        "build_date" : "2023-06-26T05:16:16.196344851Z",
        "build_snapshot" : false,
        "lucene_version" : "9.6.0",
        "minimum_wire_compatibility_version" : "7.17.0",
        "minimum_index_compatibility_version" : "7.0.0"
      },
      "tagline" : "You Know, for Search"
    }
    
  • 默认配置【不用改】

    ES 默认的配置文件 elasticsearch.yml 的内容只有 2 行:

    cluster.name: "docker-cluster"
    network.host: 0.0.0.0
    

2、安装IK分词器

​ 复制ik分词器到/usr/local/elasticsearch/plugins目录中即可

3、安装Kibana

  • 下载镜像

    docker pull docker.elastic.co/kibana/kibana:8.8.2
    
  • 修改配置

    创建/usr/local/kibana/config/kibana.yml

    mkdir -p  /usr/local/kibana/config
    
    cat > /usr/local/kibana/config/kibana.yml << EOF
    server.name: kibana
    server.host: "0"
    elasticsearch.hosts: [ "http://192.172.0.6:9200" ]  # elasticsearch 改为elasticsearch容器的地址
    monitoring.ui.container.elasticsearch.enabled: true
    i18n.locale: "zh-CN" # 设置kibana为中文
    EOF
    
    cat > /usr/local/kibana/config/kibana.yml << EOF
    server.name: kibana
    server.host: "0.0.0.0"
    elasticsearch.hosts: [ "http://192.172.0.14:9200" ]
    monitoring.ui.container.elasticsearch.enabled: true
    i18n.locale: "zh-CN"
    EOF
    
  • 创建容器

    docker run -id -p 5601:5601 \
    --name kibana \
    --restart=always \
    -v /usr/local/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
    -e "xpack.reporting.roles.enabled=false" \
    -e “ELASTICSEARCH_URL=http://192.172.0.14:9200” \
    docker.elastic.co/kibana/kibana:8.8.2
    

4、安装Logstash

  • 拉取镜像

    docker pull docker.elastic.co/logstash/logstash:8.8.2
    
  • 创建挂载目录

    mkdir -p /usr/local/logstash/config
    
  • 创建配置文件

    • 创建logstash.conf

      cat > /usr/local/logstash/config/logstash.conf << EOF
      input {
        beats {
          mode => "server"
          host => "0.0.0.0"  #可以远程访问的机器
          port => 5044  #logstash控制台访问端口
          codec => json
        }
      }
      output {
        elasticsearch {
          #elasticsearch地址,多个以','隔开
          hosts => ["192.172.0.14:9200"]
          #创建的elasticsearch索引名,可以自定义也可以使用下面的默认
          index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
        }
      }
      EOF
      
    • 创建logstash.yml

      cat > /usr/local/logstash/config/logstash.yml << EOF
      http.host: "0.0.0.0"
      xpack.monitoring.elasticsearch.hosts: ["http://192.172.0.14:9200"] #es服务器地址
      EOF
      
  • 创建容器

    docker run -d --name logstash \
    -m 1000M --restart=always \
    -p 5044:5044 -p 9600:9600 \
    --privileged=true \
    -e ES_JAVA_OPTS="-Duser.timezone=Asia/Shanghai" \
    -v /usr/local/logstash/config/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
    -v /usr/local/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \
    docker.elastic.co/logstash/logstash:8.8.2
    

    二、 SpringBoot整合Logstash

1、添加依赖

<!-- logstash -->
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>8.0</version>
</dependency>

<!-- lombok-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

2、修改logback配置文件

修改 logback-spring.xml配置 文件 增加 logstash 配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!--应用名称-->
    <springProperty scope="context" name="appName" source="spring.application.name"/>
    <!--输出到logstash的appender-->
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!-- logstash服务器地址-->
        <destination>192.172.0.14:5044</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"spring.application.name":"${appName}"}</customFields>
        </encoder>
    </appender>

    <!-- 本地日志打印格式-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%5p | %-40.40logger{39} : %m%n</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>

    <!-- 配置项目最大的包名-->
    <logger name="com.woniu" level="DEBUG" additivity="false">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="LOGSTASH"/>
    </logger>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="LOGSTASH"/>
    </root>
</configuration>

3、修改yml

spring:
    application:
        name: logs-demo

#日志配置
logging:
    config: classpath:logback-spring.xml
  • 启动项目查看是否成功推送日志
    在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2090404.html

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

相关文章

【Android】UI拓展之滑动菜单、悬浮按钮、CoordinatorLayout布局等

文章目录 一、滑动菜单1. 添加依赖2. 侧滑菜单内容2.1 headerLayout样式2.2 menu样式 3. 主界面添加4. 关联actionbar与滑动菜单 二、悬浮按钮FloatingActionButton 三、可交互提示Snackbar 四、能协调子视图的布局CoordinatorLayout 五、卡片式布局CardView 一、滑动菜单 Draw…

微信小程序服务器费用一年多少?微信小程序开发

在互联网时代&#xff0c;微信小程序已成为众多企业和个人拓展业务、提升服务品质的有力工具。然而对于许多准备涉足小程序领域的朋友来说【开发一个小程序大概需要多少钱】以及【微信小程序服务器费用一年需要多少】是首要关注的问题&#xff0c;今天飞飞将和你们分享小程序服…

【LoRa】SetLoRaSymbNumTimeout寄存器

目录 1 前言2 实验验证疑问2.1 SetRx的timeout模式和SetLoRaSymbNumTimeout2.1.1 实验12.1.2 实验22.1.3 结论 2.2 SetRx的single与continuous模式和SetLoRaSymbNumTimeout2.2.1 实验12.2.2 实验22.2.3 实验3 3 小结 1 前言 本章节介绍LoRa芯片的寄存器SetLoRaSymbNumTimeout&…

服务器部署前后端分离项目vue+springboot

步骤 1-安装java&#xff0c;mysql&#xff0c;nginx环境 服务器先安装宝塔 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_lts.sh && bash install.sh ed8484bec安装后输入bt 14查看内网链接打开宝塔页面 java&…

uniapp icons图标不显示的问题解决

如图所示 在uniapp开发中 突然发现icons组件不显示图标了 &#xff0c;而且没什么报错 这是为什么 其实这最大的原因就是你上面的代码在取值上没有做好null的判断 导致参数取值报错 因此影响了页面正常的渲染 导致下面的图标都不显示

vsCode多文件标签栏换行显示

1.文件——首选项——点‘设置’ 2.输入 wrap tabs 并勾选Workbench › Editor: Wrap Tabs

安装MySQL,navicat以及Django配置遇到的一些问题

MySQL安装问题 安装MySQL按照了此文章&#xff1a; MySQL数据库下载及安装教程&#xff08;最最新版&#xff09;_mysql下载安装-CSDN博客https://blog.csdn.net/weixin_39289696/article/details/128850498首先是遇到了starting the server红色叉号显示 按照上面文章的介绍…

《机器学习》【项目】 爬虫爬取数据、数据分词、贝叶斯算法、判断分类 <完整实战详解> (全篇完结)

目录 一、回顾爬虫 1、什么是爬虫 2、实操爬虫 1&#xff09;寻找标签位置 2&#xff09;爬取苏某某购产品好评数据 运行代码&#xff1a; 3&#xff09;爬取差评内容 二、数据分词 1、将获取到的好评和差评数据进行初步分词 1&#xff09;初步分词 2&#xff09;内…

华为云征文|1分钟熟悉Flexus X实例基础操作

前言 随着云计算技术的普及&#xff0c;越来越多的企业和个人开始将业务迁移到云端。华为云作为国内领先的云服务提供商&#xff0c;推出了高性能、高可用性的Flexus云服务器X&#xff0c;以满足不同用户的需求。本文将详细介绍如何购买Flexus云服务器X以及初次使用时的基本操…

物联网平台组件2: 平台校验规则

加载不通的规则引擎配置文件&#xff0c;使用DynamicExpresso校验采集数据&#xff0c;得出是否告警 rules.json {"Rules": [{"Description": "温度超过阈值警报","Condition": "temperature > 30","Action":…

2024 Xiangtan University Summer Camp-Div.2 个人题解 (待补完)

前言&#xff1a; 教练突然发在群里的一个比赛&#xff0c;想到自己好像也没什么事干&#xff0c;就参加了个div2&#xff08;太菜了&#xff09;&#xff0c;我看着好像没啥人发这玩意的题解&#xff0c;cf上比赛结束了也看不了别人代码&#xff0c;就将自己的写出题的代码分享…

鸿蒙Next 单元测试框架——hypium

一 框架概述 单元测试框架(hypium)是HarmonyOS上的测试框架&#xff0c;提供测试用例编写、执行、结果显示能力&#xff0c;用于测试系统或应用接口。 表1 单元测试框架功能特性 二 安装使用 目前hypium以npm包的形式发布, 因此需要在Deveco Studio 工程级package.json内配…

Javascript集合引用类型(一)

思维导图 Javascript集合引用类型(一)思维导图 对象 数组与定型数组 Map、WeakMap、Set以及WeakSet类型 1. Object 创建的对象的两种方式&#xff1a;new 操作符和对象字面量 使用对象字面量的更多&#xff0c;因为代码量少&#xff1b; 2. Array Array构造函数,es6新增…

android studio avd设置中文输入法和时间

设置语言 打开avd 找到设置 找到语言 找到系统语言 把中文移动到第一个就是默认语言了 如果想删除英文可以点击三个点有个移除 随便找个输入框&#xff0c;默认就是中文了 设置时间 点击设置->系统->日期和时间 关掉自动设置 选择一下时区为上海即可

【Datawhale X 李宏毅苹果书 AI夏令营】深度学习自适应学习率(AdaGrad/RMSProp/Adam)及其调度

1、自适应学习率 理论上&#xff1a;在训练一个网络&#xff0c;训练到现在参数在临界点附近&#xff0c;再根据特征值的正负号判断该 临界点是鞍点还是局部最小值实际上&#xff1a;①在训练的时候&#xff0c;要走到鞍点或局部最小值非常困难&#xff1b;②多数还未走到临界…

第十周:机器学习笔记

第十周机器学习周报 摘要Abstract机器学习——self-attention&#xff08;注意力机制&#xff09;1. 为什么要用self-attention2. self-attention 工作原理2.1 求α的两种方式2.2 attention-score&#xff08;关联程度&#xff09; Pytorch学习1. 损失函数代码实战1.1 L1loss&a…

EmguCV学习笔记 VB.Net 8.4 pyrMeanShiftFiltering

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

如何构建大型超市数据处理系统?Java SpringBoot搭配MySQL,实现高效数据管理!

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

深入了解Pod(一)

一、pod的配置文件 Pod配置文件的属性说明 属性名称 取值类型 是否必须 取值说明 version String √ 版本号 &#xff0c;例如V1 kind String √ Pod metadata Object √ 元数据 metadata.name String √ Pod名称 metadata.namespace String √…

分销渠道|中小企业可以有推广计划吗?

大家好&#xff0c;我是林叔&#xff0c;专注于分享SaaS企业渠道分销的实战经验。今天&#xff0c;我们来聊聊一个常被中小企业主忽视但极具潜力的营销策略——推广计划。很多人可能觉得推广计划是大企业的专利&#xff0c;但实际上&#xff0c;对于中小企业而言&#xff0c;它…