从零开始,用Docker-compose打造SkyWalking、Elasticsearch和Spring Cloud的完美融合

news2024/10/2 12:34:55

🎏:你只管努力,剩下的交给时间

🏠 :小破站

"从零开始,用Docker-compose打造SkyWalking、Elasticsearch和Spring Cloud的完美融合

  • 前言
  • 准备工作
  • 编写docker-compose.yml文件
    • 为什么使用本机ip
    • 为什么skywalking-oap-server要映射两个端口
    • 启动后为什么skywalking-oap-server会挂掉
  • 下载skywalking-agent
  • 整合springcloud
    • maven坐标实现
    • logback.xml实现
    • idea中配置
  • 最终实现展示

前言

在当今微服务架构的世界中,了解和监控系统的运行状态至关重要。本文将带你进入一个有趣的探险,使用Docker-Compose一键搭建起SkyWalking、Elasticsearch和Spring Cloud的完整监控平台。无需复杂的配置,让我们一起开始这场容器化监控的冒险之旅。

准备工作

  • 确保安装了Docker和Docker-Compose。

docker常用命令

docker-compose文件详解以及常用命令

编写docker-compose.yml文件

version: "3"

services:
  # SkyWalking OAP server with Elasticsearch storage
  skywalking-oap:
    image: apache/skywalking-oap-server:8.9.0
    container_name: skywalking-oap
    ports:
      - "12800:12800"
      - "11800:11800"
    networks:
      - skywalking-network
    depends_on:
      - skywalking-elasticsearch
    environment:
      - SW_STORAGE=elasticsearch
      - TZ=Asia/Shanghai
      - SW_STORAGE_ES_CLUSTER_NODES=192.168.100.118:19200
    #volumes:
    #  - ./oap-config:/skywalking/config # 挂载本地目录到容器中

  # Elasticsearch
  skywalking-elasticsearch:
    image: elasticsearch:7.16.3
    container_name: skywalking-elasticsearch
    ports:
      - "19200:9200"
      - "19300:9300"
    networks:
      - skywalking-network
    environment:
      - discovery.type=single-node
      - TZ=Asia/Shanghai
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    mem_limit: 2g
    #volumes:
    #  - ./es-data:/usr/share/elasticsearch/data/nodes # 挂载本地目录到容器中

  # SkyWalking UI
  skywalking-ui:
    image: apache/skywalking-ui:8.9.0
    container_name: skywalking-ui
    ports:
      - "18080:8080"
    networks:
      - skywalking-network
    environment:
      - SW_OAP_ADDRESS=http://192.168.100.118:12800
      - TZ=Asia/Shanghai
    volumes:
      - ./ui-config:/app/config # 挂载本地目录到容器中

networks:
  skywalking-network:
    driver: bridge

针对上面的yml我下面提几点

为什么使用本机ip

因为我使用的是mac系统,本机与docker不通讯,这里如果你是linux,可以直接写service

为什么skywalking-oap-server要映射两个端口

因为11800端口是服务中gRPC端口,在整合springcloud的时候需要用到

启动后为什么skywalking-oap-server会挂掉

从报错日志可以清楚的观察到,没有找到STORAGE,这里我猜测是因为es还没有完全启动导致的,即使加上depends_on好像也没作用,你也可以设置总是重启,或者手动重启一下

下载skywalking-agent

skywalking-agent,找到你对应版本即可

整合springcloud

maven坐标实现

<dependency>
  <groupId>org.apache.skywalking</groupId>
  <artifactId>apm-toolkit-trace</artifactId>
</dependency>
<dependency>
  <groupId>org.apache.skywalking</groupId>
  <artifactId>apm-toolkit-logback-1.x</artifactId>
</dependency>

logback.xml实现

<configuration>
    <!-- 引用 Spring Boot 的 logback 基础配置 -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <!-- 格式化输出:%d 表示日期,%X{tid} SkWalking 链路追踪编号,%thread 表示线程名,%-5level:级别从左显示 5 个字符宽度,%msg:日志消息,%n是换行符 -->
    <property name="PATTERN_DEFAULT" value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%thread] [%tid] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>

    <!-- 控制台 Appender -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">     
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>${PATTERN_DEFAULT}</pattern>
            </layout>
        </encoder>
    </appender>

    <!-- 文件 Appender -->
    <!-- 参考 Spring Boot 的 file-appender.xml 编写 -->
    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>${PATTERN_DEFAULT}</pattern>
            </layout>
        </encoder>
        <!-- 日志文件名 -->
        <file>${LOG_FILE}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 滚动后的日志文件名 -->
            <fileNamePattern>${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}</fileNamePattern>
            <!-- 启动服务时,是否清理历史日志,一般不建议清理 -->
            <cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart>
            <!-- 日志文件,到达多少容量,进行滚动 -->
            <maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize>
            <!-- 日志文件的总大小,0 表示不限制 -->
            <totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap>
            <!-- 日志文件的保留天数 -->
            <maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-30}</maxHistory>
        </rollingPolicy>
    </appender>
    <!-- 异步写入日志,提升性能 -->
    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志。默认的,如果队列的 80% 已满,则会丢弃 TRACT、DEBUG、INFO 级别的日志 -->
        <discardingThreshold>0</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能。默认值为 256 -->
        <queueSize>256</queueSize>
        <appender-ref ref="FILE"/>
    </appender>

    <!-- SkyWalking GRPC 日志收集,实现日志中心。注意:SkyWalking 8.4.0 版本开始支持 -->
    <appender name="GRPC" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>${PATTERN_DEFAULT}</pattern>
            </layout>
        </encoder>
    </appender>

    <!-- 本地环境 -->
    <springProfile name="local">
        <root level="INFO">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="GRPC"/> <!-- 本地环境下,如果不想接入 SkyWalking 日志服务,可以注释掉本行 -->
            <appender-ref ref="ASYNC"/>  <!-- 本地环境下,如果不想打印日志,可以注释掉本行 -->
        </root>
    </springProfile>
    <!-- 其它环境 -->
    <springProfile name="dev,test,stage,prod,default">
        <root level="INFO">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="ASYNC"/>
            <appender-ref ref="GRPC"/>
        </root>
    </springProfile>

</configuration>

idea中配置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里一定要注意,配置到环境变量我的没有作用,配置到vm才可行

# 第一个是你服务名称,第二个是对应的skywalking-agent.jar,第三个是你skywalking-aop-server的gRPC地址
-Dskywalking.agent.service_name=study-gateway -javaagent:/Users/xiaobo/webSoft/skywalking-agent/skywalking-agent.jar -Dskywalking.collector.backend_service=127.0.0.1:11800

🔚:springcloud项目启动实现效果图如下

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最终实现展示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

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

相关文章

VL06O报表添加增强字段

业务描述 用户需要在VL06O事务代码下进行批量交货过账&#xff0c;现有的筛选条件不太适用当前公司的业务&#xff0c;需要在报表中新增三个交货单增强字段&#xff0c;方便其筛选&#xff08;选择屏幕没有加&#xff0c;用户在报表里用标准按钮功能自己筛选&#xff09; 效果…

百战python01-初识python_turtle绘图

文章目录 简介练习1.简易的进度条学习使用turtle在屏幕上绘制图形注:需要对python有基本了解,可查看本作者python基础专栏,有任何问题欢迎私信或评论(本专栏每章内容都将不定期进行内容扩充与更新) 简介 python简介及方向+pycharm安装使用请转 练习 注:尝试练习。了解…

视频云存储EasyCVR平台国标接入获取通道设备未回复是什么原因?该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

Windows平台Unity下实现camera场景推送RTMP|轻量级RTSP服务|实时录像

技术背景 我们在对接Unity平台camera场景采集的时候&#xff0c;除了常规的RTMP推送、录像外&#xff0c;还有一些开发者&#xff0c;需要能实现轻量级RTSP服务&#xff0c;对外提供个拉流的RTSP URL。 目前我们在Windows平台Unity下数据源可采集到以下部分&#xff1a; 采集…

如何满足BMW EDI项目的PKT需求?

近期宝马BMW&#xff08;以下简称BMW&#xff09;在其部分供应商之间试点推进PKT项目&#xff0c;BMW为什么要启动 PKT 计划呢&#xff1f; 业务系统全面升级统一全球所有宝马工厂的流程 宝马内部的物流供货流程 近期BMW PKT需求主要针对其内部物流供货流程展开&#xff1a; …

linux下流媒体压力测试工具的使用

前言 因为领导要求做linux的推拉流时服务器压力测试&#xff0c;于是在网上找了找。一顿操作下来&#xff0c;发现很多软件盗用一款名为srs-bench的开源软件。 该代码仓库有详细的使用说明&#xff0c;而且可以在issues中找到可能会遇到的问题的解决办法 需要下载该仓库的源…

网页小游戏的开发流程

网页小游戏的开发流程可以分为几个关键步骤。这只是一个一般性的流程概述&#xff0c;具体的步骤可能会根据项目的规模和要求而有所不同。此外&#xff0c;还要考虑法律和版权问题&#xff0c;确保你的游戏开发过程是合法的。下面是一个简要的概述&#xff0c;希望对大家有所帮…

Centos Download

前言 CentOS Linux 是一个社区支持的发行版&#xff0c;源自 CentOS git for Red Hat Enterprise Linux &#xff08;RHEL&#xff09; 上免费提供给公众的源代码。因此&#xff0c;CentOS Linux 的目标是在功能上与 RHEL 兼容。CentOS 计划主要更改组件以删除上游供应商的品牌…

【QML】StackView上层页面半透明,显示下层页面

1、 应用场景 有时候需要模拟弹窗效果&#xff0c;需要下层的页面半透明显示。仅仅将上层页面背景设置为透明并不能实现这个效果&#xff0c;下层的页面依然被覆盖。Qt帮助文档中有如下代码&#xff0c;经测试有效果。 2、 代码 重点标记&#xff1a; 下层页面需要设置这个…

220V转12V固定输出12V非隔离芯片WT5106WT5105

220V转12V固定输出12V非隔离芯片WT5106WT5105 今天给大家介绍一款实用芯片&#xff0c;WT5106。它是一款高效率高精度的非隔离降压开关电源恒压控制驱动芯片。 WT5106适用于85VAC~265VAC全范围输入电压的非隔离Buck、Buckboost拓扑结构&#xff0c;小家电、电机驱动、继电器驱…

Django框架环境的搭建(图文详解)

目录 day01 Web框架和Django基础 1.web框架底层 1.1 网络通信​编辑 1.2 常见软件架构 1.3 手撸web框架 2.web框架 2.1 wsgiref 2.2 werkzeug 2.3 各框架的区别 3.快速上手django框架 3.1 安装 3.2 命令行 3.3 Pycharm 4.虚拟环境 4.1 创建虚拟环境 - 命令行 4…

宿主Linux——KVM安装Windows7系统

KVM虚拟技术 KVM(Kernel-based Virtual Machine) 是基于Linux内核的开源虚拟化技术&#xff0c;在一台物理机上可同时运行多个虚拟系统。KVM使用硬件虚拟化扩展&#xff0c;例如Intel的VT和AMD的AMD-V&#xff0c;在性能方面更加高效&#xff0c;可提供更好的计算能力和响应速…

echarts移动markline(拖拽单条markline)

echarts移动markline&#xff08;拖拽单条markline&#xff09; 效果 问题由来&#xff1a; 图表中需要一个移动的标线&#xff0c;辅助观察图表&#xff1b; 想法&#xff1a; 意思是在原来点或者原来标线上新增一个图层&#xff0c;拖动图层动态绘制新的点或者新的标线; 参考…

ChatGLM2-6B微调过程说明文档

参考文档&#xff1a; ChatGLM2-6B 微调(初体验) - 知乎 环境配置 下载anaconda&#xff0c;版本是Anaconda3-2023.03-0-Linux-x86_64.sh&#xff0c;其对应的python版本是3.10&#xff0c;试过3.7和3.11版本的在运行时都报错。 执行下面的命令安装anaconda sh Anaconda3-202…

NLP的使用

参考&#xff1a; Apache openNLP 简介 - 链滴 (ld246.com) opennlp 模型下载地址&#xff1a;Index of /apache/opennlp/models/ud-models-1.0/ (tencent.com) OpenNLP是一个流行的开源自然语言处理工具包&#xff0c;它提供了一系列的NLP模型和算法。然而&#xff0c;Open…

让SOLIDWORKS Composer动画在PPT中随意转换

SOLIDWORKS Composer作为一款易学易用的技术图解软件&#xff0c;非常适合用来给客户展示自己的产品。这里我们教大家如何将Composer文件插入大PPT中&#xff0c;并任意切换文件&#xff0c;用以给客户展示不用的方案和产品。 1.首先大家要安装SOLIDWORKS Composer Player 这个…

【2018年数据结构真题】

方法一 给定一个含n(n>1)个整数的数组&#xff0c;请设计一个在时间上尽可能高效的算法&#xff0c;找出数组中未出现的最小正整数。例如&#xff0c;数组{-5&#xff0c;3&#xff0c;2&#xff0c;3}中未出现的最小正整数是1&#xff1b;数组{1&#xff0c;2&#xff0c;…

易点易动库存管理系统革新企业库存管理,降本增效

随着全球经济的快速发展和市场竞争的加剧&#xff0c;企业对库存管理的需求变得越来越迫切。传统的手工操作和繁琐的库存管理方式已经无法满足现代企业的需求。为了解决这一问题&#xff0c;易点易动库存管理系统应运而生。 易点易动库存管理系统概述 易点易动库存管理系统是一…

金融众筹模式系统源码 适合创业孵化机构+天使投资机构+投资基金会等 附带完整的搭建教程

随着互联网技术的发展和金融市场的开放&#xff0c;金融众筹模式逐渐成为一种新型的融资方式。这种模式通过互联网平台聚集大量投资者&#xff0c;共同参与到一个项目中&#xff0c;为项目提供资金支持&#xff0c;最终获得投资回报。今天罗峰给大家分享一款金融众筹模式系统源…

SpringCache使用详解

SpringCache 1.新建测试项目SpringCache2.SpringCache整合redis2.1.Cacheable2.2.CacheEvict2.3.Cacheput2.4.Caching2.5.CacheConfig 3.SpringCache问题4.SpringCache实现多级缓存 1.新建测试项目SpringCache 引入依赖 <dependencies><dependency><groupId&g…