Springboot部署ELK实战

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

1、部署docker、docker-compose环境

安装docker

# 安装docker
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun

# docker开机自启
systemctl enable docker
# 启动docker
systemctl start docker

# 创建docker用户组
groupadd docker

# 当前用户加入docker组
usermod -aG docker $USER

# 测试安装是否正确
docker info
docker run hello-world

# 配置镜像服务
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://6xe6xbbk.mirror.aliyuncs.com"]
}
EOF
# 重新加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

安装docker-compose

# 安装docker-compose依赖
curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 添加执行权限
chmod +x /usr/local/bin/docker-compose
# 查看是否安装成功
docker compose version

2、搭建elk

1、构建目录&&配置文件

按照图中展示的层级创建目录以及文件

共创建2个目录 kibana、logstash,3个文件docker-compose.yml、kibana.yml、log-config.conf

Springboot部署ELK实战,中间件,spring boot,elk,docker,elasticsearch

1、docker-compose.yml 文档
version: "3.3"
volumes:
  data:
  config:
  plugin:
networks:
  es:
services:
  elasticsearch:
    image: elasticsearch:7.14.0
    ports:
      - "9200:9200"
    networks:
      - "es"
    environment:
    # 单节点模式
      - "discovery.type=single-node"
      - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
   # 文件挂载
    volumes:
      - data:/usr/share/elasticsearch/data
      - config:/usr/share/elasticsearch/config
      - plugin:/usr/share/elasticsearch/plugins

  kibana:
    image: kibana:7.14.0
    ports:
      - "5601:5601"
    networks:
      - "es"
    volumes:
      - ./kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
  logstash:
    image: logstash:7.14.0
    ports:
      - "4560:4560"
      - "4561:4561"
    networks:
      - "es"
    volumes:
      - ./logstash/log-config.conf:/usr/share/logstash/pipeline/logstash.conf
2、Kibana.yml
server.host: "0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN" # 这个是为了可视化界面展示为中文
3、log-config.conf
input {
# logback发送日志信息,为tcp模式,也可以使用redis、kafka等方式进行日志的发送
  tcp {
  # logstash接收数据的端口和ip
  # 4560收集日志级别为info
    mode => "server"
    host => "0.0.0.0"
    port => 4560
    codec => json_lines
    type => "info"
  }
  tcp {
  # 4561收集日志级别为error
    mode => "server"
    host => "0.0.0.0"
    port => 4561
    codec => json_lines
    type => "error"
  }
}
output {
  elasticsearch {
    hosts => "elasticsearch:9200"
    # 可自定义,通过参数值补充,不存在的索引会先创建再赋值
    # 按日生成索引
    index => "logutils-%{type}-%{+YYYY-MM-dd}" 
  }
  # 输出到控制台
  stdout { codec => rubydebug }
}

2、添加es分词器插件

todo 引入插件

# 将分词器放在创建es镜像所指定的插件挂载目录
plugin:/usr/share/elasticsearch/plugins
# 检索当前所有的卷
docker volume ls

Springboot部署ELK实战,中间件,spring boot,elk,docker,elasticsearch

# 查找es挂载插件目录的绝对路径
docker volume inspect elk_workspace_plugin

Springboot部署ELK实战,中间件,spring boot,elk,docker,elasticsearch

# 将ik-7.14.0.zip 解压到es挂载插件目录的对接路径
unzip -d /var/lib/docker/volumes/elk_workspace_plugin/_data ik-7.14.0.zip

Springboot部署ELK实战,中间件,spring boot,elk,docker,elasticsearch

3、启动

# 在当前docker-compose.yml 同级目录下启动
# -d 后台启动
docker-compose up -d 

# 查看运行情况
docker ps -a

# 查看运行日志
docker logs -f 容器id/容器名查看运行日志

# 停止运行
docker-comopse down

# 强制读取更新配置后重启
docker-compose up --force-recreate -d 

Springboot部署ELK实战,中间件,spring boot,elk,docker,elasticsearch

3、Springboot项目引入es、logStash配置

1、引入依赖

<!--集成logstash-->
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>5.3</version>
</dependency>

<!--elasticsearch-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    <version>2.3.10.RELEASE</version>
</dependency>

2、修改application.yml配置文件

spring:
 elasticsearch:
   # 此处替换对应ip
    uris: ip:9200

3、调整logback.properties配置文件

message的配置根据需要,sessionId、traceId是通过配置才能引用的

  "message": "[%X{sessionId}] [%X{traceId}] %class:%line <![CDATA[%message]]>"
 <!--LogStash访问host-->
 <springProperty  scope="context" name="LOG_STASH_HOST" source="logstash.host"/>
    
  <!--ERROR日志输出到LogStash-->
    <appender name="LOG_STASH_ERROR" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 这里定义转发ip和端口 -->
        <destination>ip:4561</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>Asia/Shanghai</timeZone>
                </timestamp>
                <!--自定义日志输出格式-->
                <pattern>
                    <pattern>
                        {
                        "project": "logutils-error",
                        "level": "%level",
                        "service": "${APP_NAME:-}",
                        "thread": "%thread",
                        "class": "%logger",
                        "message": "[%X{sessionId}] [%X{traceId}] %class:%line <![CDATA[%message]]>",
                        "stack_trace": "%exception{20}",
                        "classLine":"%class:%line"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>
    <!--接口访问记录日志输出到LogStash-->
    <appender name="LOG_STASH_RECORD" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>ip:4560</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>Asia/Shanghai</timeZone>
                </timestamp>
                <!--自定义日志输出格式-->
                <pattern>
                    <pattern>
                        {
                        "project": "logutils-info",
                        "level": "%level",
                        "service": "${APP_NAME:-}",
                        "class": "%logger",
                        "message": "[%X{sessionId}] [%X{traceId}] %class:%line %message",
                        "thread": "%thread",
                        "classLine":"%class:%line"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>
    
    <logger name="com" level="ERROR">
     <appender-ref ref="LOG_STASH_ERROR"/>
    </logger>

    <logger name="com" level="INFO">
     <appender-ref ref="LOG_STASH_RECORD"/>
    </logger>

4、使用情况

1、查看服务是否成功运行

Eleasticsearch: http://ip:9200

Springboot部署ELK实战,中间件,spring boot,elk,docker,elasticsearch

Kibana: http://ip:5601

Springboot部署ELK实战,中间件,spring boot,elk,docker,elasticsearch

2、Kibana管理索引

检索Stack Management

Springboot部署ELK实战,中间件,spring boot,elk,docker,elasticsearch

创建索引模式

Springboot部署ELK实战,中间件,spring boot,elk,docker,elasticsearch

启动后会自动生成对应的索引提供选择

Springboot部署ELK实战,中间件,spring boot,elk,docker,elasticsearch

配置按照@timestamp 作为全局时间筛选

Springboot部署ELK实战,中间件,spring boot,elk,docker,elasticsearch

3、日志搜索

Springboot部署ELK实战,中间件,spring boot,elk,docker,elasticsearch

Springboot部署ELK实战,中间件,spring boot,elk,docker,elasticsearch
以上便是Springboot部署ELK实战的全部内容,如有解析不当欢迎在评论区指出!文章来源地址https://www.toymoban.com/news/detail-630530.html

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

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

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

相关文章

  • 中间件: Redis安装与部署

    集群部署 启动6个redis节点 扩缩容 https://blog.csdn.net/lzb348110175/article/details/122168638 扩容: 添加两个节点, 第一个节点表示新节点,第二个节点表示集群中已有的任意一个节点 分配slot, 后面的节点是已有的节点 添加slave, 第一个为slave, 第二个为slave对应的master 缩容: 查看集

    2024年02月12日
    浏览(46)
  • Springboot整合RabbitMQ消息中间件

    spring-boot-rabbitmq–消息中间件整合 前言:RabbitMQ的各种交换机说明 1、直连交换机 生产者发布消息时必须带着routing-key,队列绑定到交换机时必须指定binding-key ,且routing-key和binding-key必须完全相同,如此才能将消息路由到队列中 直连交换机通常用来循环分发任务给多个workers,

    2024年02月11日
    浏览(47)
  • 中间件上云部署 rocketmq

    Apache RocketMQ是一个分布式消息传递和流媒体平台,具有低延迟、高性能和可靠性、万亿级别的容量和灵活的可伸缩性。 发布/订阅消息传递模型 定期消息传递 按时间或偏移量进行消息回溯 日志中心流 大数据集成 在同一队列中可靠的FIFO和严格的有序消息传递 有效的拉伸消费

    2024年02月16日
    浏览(46)
  • 中间件上云部署 kafka

    Apache Kafka是一种流行的分布式流式消息平台。Kafka生产者将数据写入分区主题,这些主题通过可配置的副本存储到broker群集上。 消费者来消费存储在broker的分区生成的数据。 storageclass ingress 创建topic 创建数据生产者,添加数据 在当前终端或另一个终端中创建数据消费者,消

    2024年02月16日
    浏览(39)
  • 中间件上云部署 zookeeper

    storageclass ingress 注意: Pod Disruption Budget (pod 中断 预算),含义其实是 终止pod前 通过labelSelector机制获取正常运行的pod数目的限制,目的是对主动驱逐的保护措施。 场景 节点维护或升级时(kubectl drain) 对应用的自动缩容操作(autoscaling down) 由于节点不可用(not ready)导致的Pod驱逐就

    2024年02月17日
    浏览(43)
  • 中间件: ElasticSearch的安装与部署

    文档地址: https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html 创建用户: 系统参数配置: 方式一:YUM安装 方式二: 配置 启动 (1)修改配置elasticsearch.yml: cluster.name # 一个集群内cluster name 需要相同 node.name # 各个节点node name 唯一 discovery.seed_hosts # network.host node.mast

    2024年02月12日
    浏览(42)
  • 使用Spring Boot集成中间件:基础篇

    在现代应用开发中,中间件在构建高效、可扩展的系统方面起着至关重要的作用。而Spring Boot作为一种快速开发框架,提供了丰富的集成中间件的能力,使得我们能够轻松地将各种中间件引入到我们的应用程序中。本文将重点介绍如何使用Spring Boot集成Redis中间件,并提供一个

    2024年01月25日
    浏览(45)
  • 中间件系列 - Redis入门到实战(原理篇)

    学习视频: 黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式锁+企业解决方案+黑马点评实战项目 中间件系列 - Redis入门到实战 本内容仅用于个人学习笔记,如有侵扰,联系删除 学习目标 Redis数据结构 Redis网络模型 Redis通信协议-RESP协议 我们都知道Redis中保

    2024年02月03日
    浏览(49)
  • 中间件系列 - Redis入门到实战(基础篇)

    学习视频: 黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式锁+企业解决方案+黑马点评实战项目 中间件系列 - Redis入门到实战 本内容仅用于个人学习笔记,如有侵扰,联系删除 本章学习目标: 初始Redis 认识NoSQL 认识Redis 安装Redis Redis桌面客户端 Redis常见命

    2024年02月04日
    浏览(45)
  • RabbitMQ 消息中间件与集群的部署

    1、消息中间件 1、简介 消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信。 当下主流的消息中间件有RabbitMQ、Kafka、

    2024年02月21日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包