中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

做直播網(wǎng)站vps可以嗎技術(shù)培訓(xùn)機(jī)構(gòu)

做直播網(wǎng)站vps可以嗎,技術(shù)培訓(xùn)機(jī)構(gòu),餐飲公司注冊流程及費(fèi)用,沒人注意的暴利行業(yè)概述 微服務(wù)調(diào)用存在的問題 串聯(lián)調(diào)用鏈路,快速定位問題;理清服務(wù)之間的依賴關(guān)系;微服務(wù)接口性能分析;業(yè)務(wù)流程調(diào)用處理順序; 全鏈路追蹤:對請求源頭到底層服務(wù)的調(diào)用鏈路中間的所有環(huán)節(jié)進(jìn)行監(jiān)控。 鏈路…

概述

微服務(wù)調(diào)用存在的問題

  • 串聯(lián)調(diào)用鏈路,快速定位問題;
  • 理清服務(wù)之間的依賴關(guān)系;
  • 微服務(wù)接口性能分析;
  • 業(yè)務(wù)流程調(diào)用處理順序;

全鏈路追蹤:對請求源頭到底層服務(wù)的調(diào)用鏈路中間的所有環(huán)節(jié)進(jìn)行監(jiān)控。

鏈路追蹤組件選型

OpenTracing語義規(guī)范:

https://github.com/opentracing/specification/blob/master/specification.md

組件對比:


ZipkinPinpointSkyWalkingCAT
貢獻(xiàn)者Twitter開源韓國人開源華為吳晟開源大眾點(diǎn)評開源
實(shí)現(xiàn)方式攔截請求,發(fā)送 http/mq 數(shù)據(jù)到 zipkin 服務(wù)字節(jié)碼注入字節(jié)碼注入代理埋點(diǎn)(攔截器、注解、過濾器)
接入方式基于 linkerd/sleuth,引入配置即可javaagent 字節(jié)碼javaagent 字節(jié)碼代碼侵入
agent 到 collector 傳輸協(xié)議http、MQthriftgRPChttp/tcp
OpenTracing支持支持
粒度接口級方法級方法級代碼級
全局調(diào)用統(tǒng)計(jì)支持支持支持
traceid 查詢支持支持
告警支持支持支持
JVM 監(jiān)控支持支持支持

探針性能對比:
模擬了三種并發(fā)用戶:500,750,1000。使用 jmeter 測試,每個線程發(fā)送 30 個請求,設(shè)置思考時間為 10ms。使用的采樣率為 1 ,即 100%,這邊與生產(chǎn)可能有差別。pinpoint 默認(rèn)的采樣率為 20,即 50%,通過設(shè)置 agent 的配置文件改為 100%。zipkin 默認(rèn)也是 1。組合起來,一共有 12 種。下面看下匯總表:
image.png
從上表可以看出,在三種鏈路監(jiān)控組件中,skywalking 的探針對吞吐量的影響最小,zipkin 的吞吐量居中。pinpoint 的探針對吞吐量的影響較為明顯,在 500 并發(fā)用戶時,測試服務(wù)的吞吐量從 1385 降低到 774,影響很大。然后再看下 CPU 和 memory 的影響,在內(nèi)部服務(wù)器進(jìn)行的壓測,對 CPU 和 memory 的影響都差不多在 10% 之內(nèi)。

SkyWalking 是什么

skywalking 是一個國產(chǎn)開源框架,2015 年由吳晟開源 ,2017 年加入 Apache 孵化器。skywalking 是分布式系統(tǒng)的應(yīng)用程序性能監(jiān)視工具,專為微服務(wù)、云原生架構(gòu)和基于容器(Docker、K8s、Mesos)架構(gòu)而設(shè)計(jì)。SkyWalking 是觀察性分析平臺和應(yīng)用性能管理系統(tǒng),提供分布式追蹤、服務(wù)網(wǎng)格遙測分析、度量聚合和可視化一體化解決方案。

官網(wǎng):http://skywalking.apache.org/
下載:http://skywalking.apache.org/downloads/
Github:https://github.com/apache/skywalking
文檔:https://skywalking.apache.org/docs/main/v9.1.0/readme/
中文文檔: https://skyapm.github.io/document-cn-translation-of-skywalking/
版本:v9.1.0

實(shí)現(xiàn)思路:采集數(shù)據(jù)》傳輸數(shù)據(jù)》存儲數(shù)據(jù)》分析數(shù)據(jù)》監(jiān)控報(bào)警。

SkyWalking 主要功能特性

  • 多種監(jiān)控手段,可以通過語言探針和 service mesh 獲得監(jiān)控的數(shù)據(jù);
  • 支持多種語言自動探針,包括 Java,.NET Core 和 Node.JS;
  • 輕量高效,無需大數(shù)據(jù)平臺和大量的服務(wù)器資源;
  • 模塊化,UI、存儲、集群管理都有多種機(jī)制可選;
  • 支持告警;
  • 優(yōu)秀的可視化解決方案;

SkyWalking 整體架構(gòu)

image.png
整個架構(gòu)分成四部分:

  • 上部分 Agent

負(fù)責(zé)從應(yīng)用中,收集鏈路信息,發(fā)送給 SkyWalking OAP 服務(wù)器;

  • 下部分 SkyWalking OAP

負(fù)責(zé)接收 Agent 發(fā)送的 Tracing 數(shù)據(jù)信息,然后進(jìn)行分析(Analysis Core),存儲到外部存儲器(Storage),最終提供查詢(Query)功能;

  • 右部分 Storage

Tracing 數(shù)據(jù)存儲,目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多種存儲器,目前采用較多的是 ES,主要考慮是 SkyWalking 開發(fā)團(tuán)隊(duì)自己的生產(chǎn)環(huán)境采用 ES 為主;

  • 左部分 SkyWalking UI

負(fù)責(zé)提供控制臺,查看鏈路等等;

SkyWalking 支持三種探針:

  • Agent

基于 ByteBuddy 字節(jié)碼增強(qiáng)技術(shù)實(shí)現(xiàn),通過 jvm 的 agent 參數(shù)加載,并在程序啟動時攔截指定的方法來收集數(shù)據(jù)。

  • SDK

程序中顯式調(diào)用 SkyWalking 提供的 SDK 來收集數(shù)據(jù),對應(yīng)用有侵入。

  • Service Mesh

通過 Service mesh 的網(wǎng)絡(luò)代理來收集數(shù)據(jù)。

后端(Backend):
接受探針發(fā)送過來的數(shù)據(jù),進(jìn)行度量分析,調(diào)用鏈分析和存儲。后端主要分為兩部分:

  • OAP(Observability Analysis Platform)

進(jìn)行度量分析和調(diào)用鏈分析的后端平臺,并支持將數(shù)據(jù)存儲到各種數(shù)據(jù)庫中,如:ElasticSearch,MySQL,InfluxDB等。

  • OAL(Observability Analysis Language)

用來進(jìn)行度量分析的 DSL,類似于 SQL,用于查詢度量分析結(jié)果和警報(bào)。

界面(UI):

  • RocketBot UI

SkyWalking 7.0.0 的默認(rèn) web UI

  • CLI

命令行界面

這四個模塊的交互流程:
image.png

SkyWalking 環(huán)境搭建部署

image.png
說明:

  • skywalking agent 和業(yè)務(wù)系統(tǒng)綁定在一起,負(fù)責(zé)收集各種監(jiān)控?cái)?shù)據(jù)。
  • Skywalking oapservice 是負(fù)責(zé)處理監(jiān)控?cái)?shù)據(jù)的,比如接受 skywalking agent 的監(jiān)控?cái)?shù)據(jù),并存儲在數(shù)據(jù)庫中。接受 skywalking webapp 的前端請求,從數(shù)據(jù)庫查詢數(shù)據(jù),并返回?cái)?shù)據(jù)給前端。Skywalking oapservice 通常以集群的形式存在。
  • skywalking webapp,前端界面,用于展示數(shù)據(jù)。
  • 用于存儲監(jiān)控?cái)?shù)據(jù)的數(shù)據(jù)庫,比如 mysql、elasticsearch 等。

下載 SkyWalking:

下載:http://skywalking.apache.org/downloads/

image.png
下載上圖箭頭所示,SkyWalking APM 包括 oap 和 ui,Java Agent 表示應(yīng)用需要接入的 agent。
下載鏈接:

# SkyWalking APM:  v9.1.0
wget https://archive.apache.org/dist/skywalking/9.1.0/apache-skywalking-apm-9.1.0.tar.gz# Java Agent: v8.11.0 
wget https://archive.apache.org/dist/skywalking/java-agent/8.11.0/apache-skywalking-java-agent-8.11.0.tgz

目錄說明:
apm:
image.png

  • webapp

UI 前端(web 監(jiān)控頁面)的 jar 包和配置文件;

  • oap-libs

后臺應(yīng)用的 jar 包,以及它的依賴 jar 包,里邊有一個 server-starter-*jar 就是啟動程序;

  • config

啟動后臺應(yīng)用程序的配置文件,是使用的各種配置;

  • bin

image.png
各種啟動腳本,一般使用腳本 startup.* 來啟動 web 頁面和對應(yīng)的后臺應(yīng)用;
oapService.:默認(rèn)使用的后臺程序的啟動腳本;(使用的是默認(rèn)模式啟動,還支持其他模式,各模式區(qū)別見啟動模式);
oapServicelnit.
:使用 init 模式啟動;在此模式下,OAP 服務(wù)器啟動以執(zhí)行初始化工作,然后退出;
oapServiceNolnit.:使用 no init 模式啟動;在此模式下,OAP 服務(wù)器不進(jìn)行初始化;
webappService.
:UI 前端的啟動腳本;
startup.:組合腳本,同時啟動 oapService.、webappService.* 腳本;

agent:
image.png

  • skywalking-agent.jar

代理服務(wù) jar 包。

  • config

代理服務(wù)啟動時使用的配置文件。

  • plugins

包含多個插件,代理服務(wù)啟動時會加載改目錄下的所有插件(實(shí)際是各種jar包)。

  • optional-plugins

可選插件,當(dāng)需要支持某種功能時,比如 SpringCloud Gateway,則需要把對應(yīng)的 jar 包拷貝到 plugins 目錄下。

搭建 SkyWalking OAP 服務(wù):
1)先使用默認(rèn)的 H2 數(shù)據(jù)庫存儲,不用修改配置

vim config/application.yml

image.png
2)啟動腳本

bin/startup.sh

image.png
日志信息存儲在 logs 目錄:
image.png
啟動成功后會啟動兩個服務(wù),一個是 skywalking-oap-server,一個是 skywalking-web-ui,啟動日志在 logs/skywalking-oap-server.log
skywalking-oap-server 服務(wù)啟動后會暴露 11800 和 12800 兩個端口,分別為收集監(jiān)控?cái)?shù)據(jù)的端口 11800 和接受前端請求的端口 12800,修改端口可以修改config/applicaiton.yml。
image.png
skywalking-web-ui 服務(wù)會占用 8080 端口,修改端口可以修改 webapp/webapp.yml。

server.port:SkyWalking UI 服務(wù)端口,默認(rèn)是8080;
spring.cloud.discovery.client.simple.instances.oap-service:SkyWalking OAP 服務(wù)地址數(shù)組,SkyWalking UI 界面的數(shù)據(jù)是通過請求 SkyWalking OAP 服務(wù)來獲得;

http://xxx:8080
image.png

SkyWalking 中三個概念

服務(wù)(Service)?:表示對請求提供相同行為的一系列或一組工作負(fù)載,在使用 Agent 時,可以定義服務(wù)的名字;
服務(wù)實(shí)例(Service Instance)?:上述的一組工作負(fù)載中的每一個工作負(fù)載稱為一個實(shí)例,一個服務(wù)實(shí)例實(shí)際就是操作系統(tǒng)上的一個真實(shí)進(jìn)程;
端點(diǎn)(Endpoint)?:對于特定服務(wù)所接收的請求路徑,如 HTTP 的 URI 路徑和 gRPC 服務(wù)的類名 + 方法簽名;

SkyWalking 快速開始

SkyWalking Agent 追蹤微服務(wù)

通過 jar 包方式接入

準(zhǔn)備一個 springboot 程序,打成可執(zhí)行 jar 包,寫一個 shell 腳本,在啟動項(xiàng)目的 Shell 腳本上,通過?-javaagent?參數(shù)進(jìn)行配置 SkyWalking Agent 來追蹤微服務(wù)。
startup.sh 腳本:

#!/bin/sh
# SkyWalking Agent配置
export SW_AGENT_NAME=springboot-skywalking-demo # Agent名字,一般使用`spring.application.name`
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 # 配置 Collector 地址
export SW_AGENT_SPAN_LIMIT=2000 # 配置鏈路的最大 Span 數(shù)量,默認(rèn)為 300
export JAVA_AGENT=-javaagent:/root/skywalking-agent/skywalking-agent.jar
java $JAVA_AGENT -jar springboot-skywalking-demo-0.0.1-SNAPSHOT.jar # jar啟動

等同于:

java -javaagent:/root/skywalking-agent/skywalking-agent.jar 
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 
-DSW_AGENT_NAME=springboot-skywalking-demo -jar springboot-skywalking-demo-0.0.1-SNAPSHOT.jar

參數(shù)名對應(yīng) agent/config/agent.config 配置文件中的屬性。
屬性對應(yīng)的源碼:org.apache.skywalking.apm.agent.core.conf.Config.java

# The service name in UI
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
# Backend service addresses.
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}

我們也可以使用 skywalking.+配置文件中的配置名 作為系統(tǒng)配置項(xiàng)來進(jìn)行覆蓋。 javaagent 參數(shù)配置方式優(yōu)先級更高

-javaagent:/root/skywalking-agent/skywalking-agent.jar
-Dskywalking.agent.service_name=springboot-skywalking-demo
-Dskywalking.collector.backend_service=127.0.0.1:11800

在 IDEA 中使用 SkyWalking

在運(yùn)行的程序配置 jvm 參數(shù):

-javaagent:D:\apache\apache-skywalking-java-agent-8.11.0\skywalking-agent\skywalking-agent.jar
-DSW_AGENT_NAME=springboot-skywalking-demo
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.65.206:11800 

SkyWalking 跨多個微服務(wù)追蹤

Skywalking 跨多個微服務(wù)追蹤,只需要每個微服務(wù)啟動時添加 javaagent 參數(shù)即可。
啟動微服務(wù) gateway-service,order-service,user-service ,配置 skywalking 的 jvm 參數(shù)。

解決追蹤鏈路不顯示 gateway:
拷貝 agent/optional-plugins 目錄下的 gateway 插件和 webflux 插件到agent/plugins目錄:
image.png

SkyWalking 集成日志框架

https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/

引入依賴:

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

微服務(wù)添加 logback-spring.xml 文件,并配置?%tid?占位符:

<?xml version="1.0" encoding="UTF-8"?>
<configuration><appender name="console" 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>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern></layout></encoder></appender><!-- 設(shè)置 Appender --><root level="INFO"><appender-ref ref="console"/></root></configuration>

Skywalking 通過 grpc 上報(bào)日志(需要v8.4.0以上):
gRPC 報(bào)告程序可以將收集到的日志轉(zhuǎn)發(fā)到 SkyWalking OAP 服務(wù)器上。
logback-spring.xml 中添加:

<!-- https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/  --><!-- 通過grpc上報(bào)日志到skywalking oap-->
<appender name="grpc-log" 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>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern></layout></encoder>
</appender>

Skywalking UI 效果:
image.png

SkyWalking 告警通知

skywalking 告警的核心由一組規(guī)則驅(qū)動,這些規(guī)則定義在config/alarm-settings.yml文件中,告警規(guī)則的定義分為三部分:

  • 告警規(guī)則:它們定義了應(yīng)該如何觸發(fā)度量警報(bào),應(yīng)該考慮什么條件;
  • 網(wǎng)絡(luò)鉤子(Webhook):當(dāng)警告觸發(fā)時,哪些服務(wù)終端需要被通知;
  • gRPC 鉤子:遠(yuǎn)程 gRPC 方法的主機(jī)和端口,告警觸發(fā)后調(diào)用;

為了方便,skywalking 發(fā)行版中提供了默認(rèn)的alarm-setting.yml文件,包括一些規(guī)則,每個規(guī)則有英文注釋,可以根據(jù)注釋得知每個規(guī)則的作用:

  • 在最近10分鐘的3分鐘內(nèi)服務(wù)平均響應(yīng)時間超過1000ms
  • 最近10分鐘內(nèi),服務(wù)成功率在2分鐘內(nèi)低于80%
  • 服務(wù)實(shí)例的響應(yīng)時間在過去10分鐘的2分鐘內(nèi)超過1000ms
  • 數(shù)據(jù)庫訪問{name}的響應(yīng)時間在過去10分鐘的2分鐘內(nèi)超過1000ms

只要我們的服務(wù)請求符合alarm-setting.yml文件中的某一條規(guī)則就會觸發(fā)告警。
比如 service_resp_time_rule 規(guī)則:
該規(guī)則表示服務(wù){(diào)name}的響應(yīng)時間在最近10分鐘的3分鐘內(nèi)超過1000ms
image.png

  • metrics-name:度量名稱,也是 OAL 腳本中的度量名。默認(rèn)配置中可以用于告警的度量有:服務(wù),實(shí)例,端點(diǎn),服務(wù)關(guān)系,實(shí)例關(guān)系,端點(diǎn)關(guān)系。它只支持long,double和int類型。
  • op:操作符。
  • threshold:閾值。
  • period:多久告警規(guī)則需要被檢查一下。這是一個時間窗口,與后端部署環(huán)境時間相匹配。
  • count:在一個周期窗口中,如果按 op 計(jì)算超過閾值的次數(shù)達(dá)到 count,則發(fā)送告警。
  • silence-period:在時間 N 中觸發(fā)報(bào)警后,在 N -> N + silence-period 這段時間內(nèi)不告警。
  • message:該規(guī)則觸發(fā)時,發(fā)送的通知消息。

測試:編寫接口,模擬慢查詢

@RequestMapping("/info/{id}")
public User info(@PathVariable("id") Integer id){try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}return userService.getById(id);
}

訪問接口,過段時間會在 skywalking 控制界面出現(xiàn)了告警信息:
image.png
實(shí)現(xiàn)回調(diào)接口:

@RequestMapping("/notify")
public String notify(@RequestBody Object obj){// TODO 告警信息,給技術(shù)負(fù)責(zé)人發(fā)短信,釘釘消息,郵件,微信通知等System.err.println(obj.toString());return "notify successfully";
}

config/alarm-settings.yml中配置回調(diào)接口,并重啟 skywalking 服務(wù):
image.png
測試訪問:[http://localhost:8000/user/info/1](http://localhost:8000/user/info/1),滿足告警規(guī)則后,控制臺輸出告警信息:
image.png

參考: https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/backend-alarm.md

對接釘釘:
image.png

Webhook 回調(diào)通知:
SkyWalking 告警 Webhook 回調(diào)要求接收方是一個 Web 容器(比如 tomcat 服務(wù)),告警的消息會通過 HTTP 請求進(jìn)行發(fā)送,請求方法為 POST,Content-Type 為 application/json,JSON 格式基于List<org.apache.skywalking.oap.server.core.alarm.AlarmMessage>的集合對象數(shù),集合中的每個AlarmMessage 包含以下信息:

  • scopeId. 所有可用的 Scope,參考:org.apache.skywalking.oap.server.core.source.DefaultScopeDefine
  • name. 目標(biāo) Scope 的實(shí)體名稱;
  • id0. Scope 實(shí)體的 ID;
  • id1. 未使用;
  • ruleName. 在 alarm-settings.yml 中配置的規(guī)則名;
  • alarmMessage. 報(bào)警消息內(nèi)容;
  • startTime. 告警時間, 位于當(dāng)前時間與 UTC 1970/1/1 之間;
[{scopeId = 2,scope = SERVICE_INSTANCE,name = 98e1839 a6fdf48b0aedb0ecabb8ea5f7 @192 .168 .233 .1 of springboot - skywalking - demo,id0 = c3ByaW5nYm9vdC1za3l3YWxraW5nLWRlbW8 = .1 _OThlMTgzOWE2ZmRmNDhiMGFlZGIwZWNhYmI4ZWE1ZjdAMTkyLjE2OC4yMzMuMQ == ,id1 = ,ruleName = service_instance_resp_time_rule,alarmMessage = Response time of service instance 98e1839 a6fdf48b0aedb0ecabb8ea5f7 @192 .168 .233 .1 of springboot - skywalking - demo is more than 1000 ms in 2 minutes of last 10 minutes,startTime = 1613913565462
}, {scopeId = 6,scope = ENDPOINT_RELATION,name = User in User to / user / info / {id} in springboot - skywalking - demo,id0 = VXNlcg == .0 _VXNlcg == ,id1 = c3ByaW5nYm9vdC1za3l3YWxraW5nLWRlbW8 = .1 _L3VzZXIvaW5mby97aWR9,ruleName = endpoint_relation_resp_time_rule,alarmMessage = Response time of endpoint relation User in User to / user / info / {id} in springboot - skywalking - demo is more than 1000 ms in 2 minutes of last 10 minutes,startTime = 1613913565462
}]

SkyWalking 持久化追蹤數(shù)據(jù)

基于 mysql 持久化

1)修改 config 目錄下的application.yml,使用 mysql 作為持久化存儲的倉庫
image.png
2)修改 mysql 連接配置
image.png

storage:# 選擇使用mysql,默認(rèn)使用h2,不會持久化,重啟skyWalking之前的數(shù)據(jù)會丟失selector: ${SW_STORAGE:mysql}# 使用mysql作為持久化存儲的倉庫mysql:properties:# 數(shù)據(jù)庫連接地址,創(chuàng)建swtest數(shù)據(jù)庫jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://1ocalhost:3306/swtest"}# 用戶名dataSource.user: ${SW_DATA_SOURCE_USER:root}# 密碼dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root}

注意:需要添加 mysql 數(shù)據(jù)驅(qū)動包,因?yàn)樵?lib 目錄下是沒有 mysql 數(shù)據(jù)驅(qū)動包的,所以修改完配置啟動是會報(bào)錯,啟動失敗的。
image.png
3)添加 mysql 數(shù)據(jù)驅(qū)動包到 oap-libs 目錄下
image.png
4)啟動Skywalking
image.png
查看 swtest 數(shù)據(jù)庫,可以看到生成了很多表:
image.png
說明啟動成功了,打開配置對應(yīng)的地址[http://192.168.65.206:8080/](http://192.168.65.206:8080/),可以看到 skywalking 的 web 界面。
image.png
測試:重啟 skywalking,驗(yàn)證追蹤數(shù)據(jù)會不會丟失。

基于 elasticsearch 持久化

1)準(zhǔn)備好 elasticsearch 環(huán)境(參考 ES 專題)
啟動 elasticsearch 服務(wù)

bin/elasticsearch -d

image.png
2)修改config/application.yml配置文件,指定存儲使用 ES,修改 elasticsearch 的連接配置
image.png
3)啟動 Skywalking 服務(wù)
image.png
啟動時會向 elasticsearch 中創(chuàng)建大量的 index 索引用于持久化數(shù)據(jù)。
啟動應(yīng)用程序,查看追蹤數(shù)據(jù)是否已經(jīng)持久化到 elasticsearch 的索引中,然后重啟 skywalking,驗(yàn)證追蹤數(shù)據(jù)會不會丟失。
image.png

自定義 SkyWalking 鏈路追蹤

如果我們希望對項(xiàng)目中的業(yè)務(wù)方法,實(shí)現(xiàn)鏈路追蹤,方便我們排查問題,可以使用如下的代碼。
引入依賴:

<!-- SkyWalking 工具類 -->
<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>8.11.0</version>
</dependency>

在業(yè)務(wù)方法中可以 TraceContext 獲取到 traceId:

@RequestMapping("/list")
public List<User> list(){// TraceContext可以綁定key-valueTraceContext.putCorrelation("name", "jay");Optional<String> op = TraceContext.getCorrelation("name");log.info("name = {} ", op.get());// 獲取追蹤的traceIdString traceId = TraceContext.traceId();log.info("traceId = {} ", traceId);return userService.list();
}

在 Skywalking UI 中查詢 tranceId:
image.png

@Trace 將方法加入追蹤鏈路

如果一個業(yè)務(wù)方法想在 ui 界面的追蹤鏈路上顯示出來,只需要在業(yè)務(wù)方法上加上 @Trace 注解即可:
image.png
測試:
image.png

加入 @Tags 或 @Tag

我們還可以為追蹤鏈路增加其他額外的信息,比如記錄參數(shù)和返回信息。實(shí)現(xiàn)方式:在方法上增加 @Tag 或者@Tags。

@Trace
@Tag(key = "list", value = "returnedObj")
public List<User> list(){return userMapper.list();
}@Trace
@Tags({@Tag(key = "param", value = "arg[0]"),@Tag(key = "user", value = "returnedObj")})
public User getById(Integer id){return userMapper.getById(id);
}

SkyWalking 集群部署( oap 服務(wù)高可用)

Skywalking 集群是將 skywalking oap 作為一個服務(wù)注冊到 nacos 上,只要 skywalking oap 服務(wù)沒有全部宕機(jī),保證有一個 skywalking oap 在運(yùn)行,就能進(jìn)行追蹤。
搭建一個 skywalking oap 集群需要:
(1)至少一個 Nacos(也可以是 nacos 集群)
(2)至少一個 ElasticSearch (也可以是 es 集群)
(3)至少 2 個 skywalking oap 服務(wù)
(4)至少 1 個 UI ( UI 也可以集群多個,用 Nginx 代理統(tǒng)一入口)

1) 修改config/application.yml文件
使用nacos作為注冊中心:
image.png
修改nacos配置:
image.png
可以選擇性修改監(jiān)聽端口:
image.png
修改存儲策略,使用 elasticsearch 作為 storage:
image.png
2)配置 ui 服務(wù) webapp.yml 文件的 oap-service,寫多個 oap 服務(wù)地址
image.png
3) 啟動微服務(wù)測試
指定微服務(wù)的 jvm 參數(shù):

-Dskywalking.collector.backend_service=ip1:11800,ip2:11800
http://www.risenshineclean.com/news/48487.html

相關(guān)文章:

  • 免費(fèi)建商城網(wǎng)站網(wǎng)址查詢
  • 私彩票網(wǎng)站建設(shè)網(wǎng)站seo優(yōu)化排名
  • 做模具的網(wǎng)站seo智能優(yōu)化
  • wordpress用戶排行榜廈門seo服務(wù)
  • 做亞馬遜網(wǎng)站費(fèi)用嗎必應(yīng)收錄提交入口
  • 一個網(wǎng)站可以做多少個關(guān)鍵詞百度網(wǎng)頁排名怎么提升
  • wordpress首頁截?cái)鄐eo白帽優(yōu)化
  • php動態(tài)網(wǎng)站開發(fā)簡介網(wǎng)站制作平臺
  • 自己怎么做系統(tǒng)網(wǎng)站能打開的a站
  • 共享辦公室 設(shè)計(jì)網(wǎng)站性能優(yōu)化
  • 鐵漢生態(tài)建設(shè)有限公司網(wǎng)站最新黑帽seo培訓(xùn)
  • 如何做屬于自己的領(lǐng)券網(wǎng)站廈門人才網(wǎng)最新招聘信息
  • 越南做企業(yè)網(wǎng)站百度云電腦版網(wǎng)站入口
  • 廣寧縣住房和城鄉(xiāng)建設(shè)局網(wǎng)站seo優(yōu)化標(biāo)題 關(guān)鍵詞
  • 一個網(wǎng)站多個域名重定向怎么做南京搜索引擎推廣優(yōu)化
  • 響應(yīng)式網(wǎng)站建設(shè)團(tuán)隊(duì)全網(wǎng)天下網(wǎng)站開發(fā)制作培訓(xùn)學(xué)校
  • 怎么做婚戀網(wǎng)站百度收錄是什么意思
  • 跨境電商網(wǎng)站建設(shè)方案網(wǎng)站優(yōu)化排名易下拉穩(wěn)定
  • 附近網(wǎng)站建設(shè)公司哪家好注冊網(wǎng)站免費(fèi)注冊
  • 要找企業(yè)做網(wǎng)站應(yīng)該注意什么網(wǎng)站優(yōu)化外包推薦
  • 河源建設(shè)用地競拍網(wǎng)站2024年新冠疫情最新消息今天
  • 信息網(wǎng)站建設(shè)預(yù)算windows優(yōu)化大師和360哪個好
  • 怎么在自己電腦上建網(wǎng)站今日競彩足球最新比賽結(jié)果查詢
  • 營銷系統(tǒng)有哪些南昌seo排名外包
  • 網(wǎng)站主頁模板友情鏈接檢測平臺
  • 建一家網(wǎng)站多少錢濰坊網(wǎng)站建設(shè)方案咨詢
  • 游戲類網(wǎng)頁設(shè)計(jì)優(yōu)化推廣
  • 網(wǎng)站建設(shè)設(shè)計(jì)時代創(chuàng)信好找廣告商的平臺
  • 企業(yè)網(wǎng)站平臺如何做網(wǎng)絡(luò)推廣視頻剪輯培訓(xùn)
  • 網(wǎng)站備案主體查詢河南seo優(yōu)化