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

🎏:你只管努力,剩下的交給時間

🏠 :小破站

"從零開始,用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 storageskywalking-oap:image: apache/skywalking-oap-server:8.9.0container_name: skywalking-oapports:- "12800:12800"- "11800:11800"networks:- skywalking-networkdepends_on:- skywalking-elasticsearchenvironment:- SW_STORAGE=elasticsearch- TZ=Asia/Shanghai- SW_STORAGE_ES_CLUSTER_NODES=192.168.100.118:19200#volumes:#  - ./oap-config:/skywalking/config # 掛載本地目錄到容器中# Elasticsearchskywalking-elasticsearch:image: elasticsearch:7.16.3container_name: skywalking-elasticsearchports:- "19200:9200"- "19300:9300"networks:- skywalking-networkenvironment:- discovery.type=single-node- TZ=Asia/Shanghaiulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536mem_limit: 2g#volumes:#  - ./es-data:/usr/share/elasticsearch/data/nodes # 掛載本地目錄到容器中# SkyWalking UIskywalking-ui:image: apache/skywalking-ui:8.9.0container_name: skywalking-uiports:- "18080:8080"networks:- skywalking-networkenvironment:- SW_OAP_ADDRESS=http://192.168.100.118:12800- TZ=Asia/Shanghaivolumes:- ./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.pswp.cn/news/165700.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165700.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165700.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

代碼隨想錄-刷題第六天

242. 有效的字母異位詞 題目鏈接&#xff1a;242. 有效的字母異位詞 思路&#xff1a;哈希法。利用數組來記錄出現的字母個數&#xff0c;然后判斷是否為字母異位詞。 時間復雜度&#xff1a;O(n) class Solution {public boolean isAnagram(String s, String t) {int[] co…

【云備份】第三方庫的認識與使用

文章目錄 json庫粗略認識詳細認識writer 類reader類jsoncpp序列化實現jsoncpp反序列化實現 bundle文件壓縮庫簡單認識bundle庫實現文件壓縮bundle庫實現文件解壓縮 httplib庫Request類Response類Server類Client類 json庫 粗略認識 json是一種數據交換格式&#xff0c;采用完全…

激光切割設備中模組的作用有哪些?

激光切割設備是一種高精度的自動化加工設備&#xff0c;用于對金屬、非金屬等材料進行精確切割。直線模組作為激光切割設備的重要組成部分&#xff0c;在激光切割設備中起著重要的作用&#xff0c;為設備的運動系統提供了高精度、高穩定性和高效率的運動控制。 1、高精度的位置…

excel單元格加背景顏色不生效?

如果在 Excel 中設置單元格背景顏色而發現不生效&#xff0c;可能有幾個原因。以下是一些常見的解決方法&#xff1a; 1. **單元格鎖定&#xff1a;** 檢查所在單元格是否被鎖定。如果單元格被鎖定&#xff0c;并且工作表被保護&#xff0c;你可能無法更改其背景顏色。在工作表…

mysql 優化器的AST樹是啥

from ChatGPT: MySQL中的優化器&#xff08;optimizer&#xff09;使用AST&#xff08;Abstract Syntax Tree&#xff0c;抽象語法樹&#xff09;來表示查詢的語法結構。AST是一種樹狀結構&#xff0c;它反映了查詢語句的語法層次&#xff0c;是一個抽象表示&#xff0c;用于更…

Linux - 文件系統 - 理解目錄 - 理解 軟/硬鏈接

前言 在上篇博客當中&#xff0c;我們對 文件系統 和 inode 做了初步了解&#xff0c;本博客將在上篇博客的基礎之上&#xff0c;對于 文件系統當中的目錄進行進步一闡述。 Linux - 進一步理解 文件系統 - inode - 機械硬盤-CSDN博客 目錄 一個文件有一個 inode&#xff0c;…

Redis打包事務,分批提交

一、需求背景 接手一個老項目&#xff0c;在項目啟動的時候&#xff0c;需要將xxx省整個省的所有區域數據數據、以及系統字典配置逐條保存在Redis緩存里面&#xff0c;這樣查詢的時候會更快; 區域數據字典數據一共大概20000多條,&#xff0c;前同事直接使用 list.forEach…

Windows安裝MongoDB

1、下載MongoDB的zip&#xff0c;解壓 2、創建目錄 mkdir D:\JavaSoftware\Database\MongoDB\mongodb-win32-x86_64-windows-5.0.8\data\db mkdir D:\JavaSoftware\Database\MongoDB\mongodb-win32-x86_64-windows-5.0.8\data\log 3、創建一個配置文件mongod.cfg&#xff0c…

使用一個接口的結果作為第二個接口的參數并將兩者的數據放置成下拉框的格式

背景 我使用下拉框實現選擇id 但是只有兩個接口 一個是所有的id 另一個是id對應的具體信息 我想把id傳入另一個接口并且獲取其name然后寫成類似這樣的數組 [ { value: 1, label: ‘名稱1’ }&#xff0c; { value: 2, label: ‘名稱2’ } { value: 3, label: ‘名稱3’ } ] 然…

【PPspliT】ppt轉pdf-保留過渡動畫

網址 http://www.maxonthenet.altervista.org/ppsplit.php 下載安裝 使用 再次打開ppt&#xff0c;就能在上方的選項欄里頭看到了&#xff1a;

GEE生物量碳儲量——利用紅和近紅外波段和OTSU大津法提取純凈森林面積

簡介: 如何利用紅和近紅外波段和OTSU大津法提取純凈森林面積?本文的主要邏輯是利用特定時期的遙感影像的波段,提取指定范圍的內的DN值,然后分別統計發生閾值變化的峰值區域,從而作為篩選森林的臨界點,如果研究區較大的話則需要先進行影像分割,分割成為相同大小的區域,…

前端開發Java學習

注釋&#xff1a; 單行注釋 // 多行注釋 /* */ 文件注釋 /** */ 1 關鍵字 &#xff08;關鍵字一定是小寫&#xff09; 2 常量 字符串常量"HelloWord","你好世界"整數常量12&#xff0c;-33小數常量3.14&#xff0c;22.1字符常量A&#xff0c;a &…

不是默認進入Linux|總是自動進入windows系統

問題描述 不是默認進入Linux系統無法主動出現boot引導自動進入windows系統 嘗試無效 修復引導無效重裝Grub無效重裝系統無效 環境 Ubuntu 22.04 LST微星主板 解決方案 修改引導順序&#xff1a; 開機狂按Del鍵&#xff0c;進入BIOS系統&#xff0c;左側Settings 設置&…

src和href的區別

前言 持續學習總結輸出中&#xff0c;src和href都是HTML中特定元素的屬性&#xff0c;都可以用來引入外部的資源。兩者區別如下&#xff1a; 1、作用 href 用于在當前文檔和引用資源之間確立聯系。 src 用于替換當前內容。 2、范圍用途 src&#xff08;source&#xff09…

RabbitMQ基礎教程

1.什么是消息隊列 消息隊列&#xff08;Message Queue&#xff09;&#xff0c;我們一般簡稱為MQ。消息隊列中間件是分布式系統中重要的組件&#xff0c;具有異步性、松耦合、分布式、可靠性等特點。用于實現高性能、高可用、可伸縮和最終一致性架構。是大型分布式系統不可缺少…

Angular11 MSAL B2C登錄實例 (一)

前言 因為項目需求&#xff0c;需要把Angular 11項目中登錄方式改成B2C登錄&#xff0c;所以在參考了一系列文檔后&#xff0c;成功通過MSAL將項目的登錄方式改成B2C登錄。下面介紹了詳細步驟及一些注意事項。 步驟&#xff1a; 1. 安裝MSAL 在項目中安裝msal npm i azure/…

BUUCTF [WUSTCTF2020]find_me 1

BUUCTF:https://buuoj.cn/challenges 題目描述&#xff1a; 得到的 flag 請包上 flag{} 提交。 感謝 Iven Huang 師傅供題。 比賽平臺&#xff1a;https://ctfgame.w-ais.cn/ 密文&#xff1a; 下載附件&#xff0c;得到一個.jpg圖片。 解題思路&#xff1a; 1、得到一張圖…

vue中頁面(路由)跳轉及傳值的幾種方式 router-link + query + params

vue中頁面(路由)跳轉及傳值的幾種方式 知道query 和 params 是什么 參考文案:https://www.php.cn/js-tutorial-382859.html 跳轉的幾種方式與傳值 1、router-link 1.1 根據路由路徑(無參數與有參數) <router-link to = "/page">跳轉到page頁面</…

Java WebSocket 客戶端接收大量數據

介紹 WebSocket 是一種基于 TCP 協議的全雙工通信協議&#xff0c;它能夠在客戶端和服務器之間建立一個持久連接&#xff0c;實現實時的雙向數據傳輸。在實際應用中&#xff0c;有時候我們需要處理大量的數據&#xff0c;例如實時監控系統或者實時股票行情等。本文將介紹如何使…