偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一文帶你了解SkyWalking

開(kāi)發(fā) 架構(gòu)
Apache SkyWalking是一款功能強(qiáng)大的APM系統(tǒng),可以幫助開(kāi)發(fā)人員和運(yùn)維人員更好地了解分布式系統(tǒng)的性能狀況。通過(guò)使用SkyWalking,可以提高應(yīng)用程序的穩(wěn)定性和性能,降低運(yùn)維成本。

Apache SkyWalking

SkyWalking是一個(gè)開(kāi)源可觀測(cè)平臺(tái),用于收集、分析、聚合和可視化來(lái)自服務(wù)和云原生基礎(chǔ)設(shè)施的數(shù)據(jù)。SkyWalking 提供了一種簡(jiǎn)單的方法來(lái)保持分布式系統(tǒng)的清晰視圖,甚至跨云。它是一種現(xiàn)代APM,專(zhuān)為云原生、基于容器的分布式系統(tǒng)而設(shè)計(jì)。

文檔版本8.9.1,當(dāng)前最新版本9.10

圖片圖片

介紹

SkyWalking 是一個(gè)應(yīng)用性能監(jiān)控系統(tǒng)(APM)

為微服務(wù)、云原生和基于容器(Docker, Kubernetes, Mesos)體系結(jié)構(gòu)而設(shè)計(jì),主要實(shí)現(xiàn)功能包括分布式追蹤,性能指標(biāo)分析和服務(wù)依賴(lài)分析等

相似產(chǎn)品與對(duì)比

類(lèi)似功能的組件還有:Zipkin、Pinpoint 、CAT、Dapper等

  • Zipkin是Twitter開(kāi)源的調(diào)用鏈路分析工具,目前基于Spingcloud sleuth得到了廣泛的應(yīng)用,特點(diǎn)是輕量,部署簡(jiǎn)單。
  • 一個(gè)韓國(guó)團(tuán)隊(duì)開(kāi)源的產(chǎn)品,運(yùn)用了字節(jié)碼增強(qiáng)技術(shù),只需要在啟動(dòng)時(shí)添加啟動(dòng)參數(shù)即可,對(duì)代碼無(wú)侵入,目前支持Java和PHP語(yǔ)言,底層采用HBase來(lái)存儲(chǔ)數(shù)據(jù),探針收集的數(shù)據(jù)- 粒度非常細(xì),但性能損耗大,因其出現(xiàn)的時(shí)間較長(zhǎng),完成度也很高,應(yīng)用的公司較多
  • Skywalking是本土開(kāi)源的基于字節(jié)碼注入的調(diào)用鏈路分析以及應(yīng)用監(jiān)控分析工具,特點(diǎn)是支持多種插件,UI功能較強(qiáng),接入端無(wú)代碼侵入。
  • CAT是由國(guó)內(nèi)美團(tuán)點(diǎn)評(píng)開(kāi)源的,基于Java語(yǔ)言開(kāi)發(fā),目前提供Java、C/C++、Node.js、Python、Go等語(yǔ)言的客戶(hù)端,監(jiān)控?cái)?shù)據(jù)會(huì)全量統(tǒng)計(jì),國(guó)內(nèi)很多公司在用,例如美團(tuán)點(diǎn)評(píng)、攜程、拼多多等,CAT跟下邊要介紹的Zipkin都需要在應(yīng)用程序中埋點(diǎn),對(duì)代碼侵入性強(qiáng)。


Cat

Zipkin

Pinpoint

skywalking

依賴(lài)

Java 6,7,8

Maven 3.2.3+

mysql5.6

Linux 2.6以及之上(2.6內(nèi)核才可以支持epoll)

Java 6,7,8

Maven3.2+

rabbitMQ

Java 6,7,8

maven3+

Hbase0.94+

Java 6,7,8

maven3.0+

nodejs

zookeeper

elasticsearch

實(shí)現(xiàn)方式

代碼埋點(diǎn)(攔截器,注解,過(guò)濾器等)

攔截請(qǐng)求,發(fā)送(http,mq)數(shù)據(jù)至zipkin服務(wù)

java探針,字節(jié)碼增強(qiáng)

java探針,字節(jié)碼增強(qiáng)

顆粒度

代碼級(jí)

接口級(jí)

方法級(jí)

方法級(jí)

頁(yè)面UI

*****

**

*****

****

存儲(chǔ)選擇

Mysql,hdfs

In-memory,mysql,cassandra,elasticsearch

Hbase

Elasticsearch,h2

通信方式

-

http,mq

Thrift

GRPC

MQ監(jiān)控

不支持

不支持

不支持

RocketMq,kafka

全局調(diào)用 統(tǒng)計(jì)

支持

不支持

支持

支持

Trace查詢(xún)

不持支

支持

不支持

支持

報(bào)警

支持

不支持

支持

支持

Jvm監(jiān)控

不支持

不支持

支持

支持

優(yōu)點(diǎn)

功能完善

spring-cloud-sleuth可以很好的集成zipkin , 代碼無(wú)侵入,集成非常簡(jiǎn)單 , 社區(qū)更加活躍。對(duì)外提供有query接口,更加容易二次開(kāi)發(fā)

完全無(wú)侵入, 僅需修改啟動(dòng)方式,界面完善,功能細(xì)致。

完全無(wú)侵入,界面完善,支持應(yīng)用拓?fù)鋱D及單個(gè)調(diào)用鏈查詢(xún)。功能比較完善(zipkin + pinpoint)

缺點(diǎn)

代碼侵入性較強(qiáng),需要埋點(diǎn)文檔比較混亂,文檔與發(fā)布版本的符合性較低,需要依賴(lài)點(diǎn)評(píng)私服 (或者需要把他私服上的jar手動(dòng)下載下來(lái),然后上傳到我們的私服上去)。

默認(rèn)使用的是http請(qǐng)求向zipkin上報(bào)信息,耗性能。跟sleuth結(jié)合可以使用rabbitMQ的方式異步來(lái)做,增加了復(fù)雜度,需要引入rabbitMQ 。數(shù)據(jù)分析比較簡(jiǎn)單。

不支持查詢(xún)單個(gè)調(diào)用鏈, 對(duì)外表現(xiàn)的是整個(gè)應(yīng)用的調(diào)用生態(tài)。二次開(kāi)發(fā)難度較高

3.2版本之前BUG較多 ,網(wǎng)上反映兼容性較差 . 3.2新版本的反映情況較少依賴(lài)較多。

文檔

網(wǎng)上資料較少,僅官網(wǎng)提供的文檔,比較亂

文檔完善

文檔完善

文檔完善

開(kāi)發(fā)者

大眾點(diǎn)評(píng)

Twiter

Naver

吳晟(華為開(kāi)發(fā)者) ,目前已經(jīng)加入Apache孵化器

使用公司

大眾點(diǎn)評(píng),攜程,陸金所,同程旅游,獵聘網(wǎng),拼多多

Twiter

Naver

華為,alibaba cloud,天源迪科,當(dāng)當(dāng)網(wǎng),京東金融

功能

開(kāi)源監(jiān)控平臺(tái),用于從服務(wù)和云原生基礎(chǔ)設(shè)施收集、分析、聚合和可視化數(shù)據(jù)。SkyWalking提供了一種簡(jiǎn)單的方法來(lái)維護(hù)分布式系統(tǒng)的清晰視圖,甚至可以跨云查看。它是一種現(xiàn)代APM,專(zhuān)門(mén)為云原生、基于容器的分布式系統(tǒng)設(shè)計(jì)

監(jiān)測(cè)對(duì)象包括:service(服務(wù)), service instance(實(shí)例), endpoint(端點(diǎn))

功能描述:

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

架構(gòu)

SkyWalking 在邏輯上分為四個(gè)部分:Probes、Platform backend、Storage 和 UI。

圖片圖片

探針Probe

采集tracing(調(diào)用鏈數(shù)據(jù))和metric(指標(biāo))信息并上報(bào),上報(bào)通過(guò)HTTP或者gRPC方式按要求重新格式化數(shù)據(jù)發(fā)送數(shù)據(jù)到Skywalking Collector

  • 自動(dòng)探針:Java支持的中間件、框架與類(lèi)庫(kù)列表
  • 手動(dòng)探針:OpenTrackingApi、@Trace注解、trackId集成到日志中。

后端Platform backend

支持?jǐn)?shù)據(jù)聚合、分析和流式處理,包括跟蹤、度量和日志。

基于gRpc、Http 鏈路數(shù)據(jù)收集器,對(duì)agent傳過(guò)來(lái)的tracing和metric數(shù)據(jù)進(jìn)行整合分析通過(guò)Analysis Core模塊處理并落入相關(guān)的數(shù)據(jù)存儲(chǔ)中,同時(shí)會(huì)通過(guò)Query Core模塊進(jìn)行二次統(tǒng)計(jì)和監(jiān)控告警

數(shù)據(jù)存儲(chǔ)Storage

通過(guò)開(kāi)放/可插入接口存儲(chǔ) SkyWalking 數(shù)據(jù),支持多種方式存儲(chǔ)數(shù)據(jù) H2,ElasticSearch,MySQL, TiDB, InfluxDB或自定義

可視化平臺(tái)UI

基于GraphQL Http 高度可定制的基于 Web 的界面的可視化平臺(tái),允許 SkyWalking 最終用戶(hù)可視化和管理。

下載安裝

下載

官方下載地址:https://skywalking.apache.org/downloads/

歷史版本下載:https://archive.apache.org/dist/skywalking/

Rocketbot-UI 8.x:https://github.com/apache/skywalking-rocketbot-ui

Booster UI 9.x:https://github.com/apache/skywalking-booster-ui

注:APM已經(jīng)集成UI,不需要單獨(dú)下載與部署

Window安裝

  • 安裝APM (8.9.1,h2)
  • 下載apache-skywalking-apm-bin
  • 解壓執(zhí)行命名 ~/bin/startup.bat
  • 訪(fǎng)問(wèn)http://localhost:8080

圖片圖片

Docker安裝

  • 安裝OAP

下載鏡像

docker pull apache/skywalking-oap-server:8.9.1

啟動(dòng)容器

docker run --name oap -p 12800:12800 -p 11800:11800 -p 1234:1234 --restart always -d apache/skywalking-oap-server:8.9.1
  • 安裝UI

下載鏡像

docker pull apache/skywalking-ui

啟動(dòng)容器

docker run --name oap-ui -p 18080:8080 --restart always -d -e SW_OAP_ADDRESS=http://localhost:12800 apache/skywalking-ui

訪(fǎng)問(wèn)http://localhost:18080

系統(tǒng)集成

  • 探針

負(fù)責(zé)進(jìn)行數(shù)據(jù)的收集,包含了Tracing和Metrics的數(shù)據(jù),agent會(huì)被安裝到服務(wù)所在的服務(wù)器上,以方便數(shù)據(jù)的獲取。探針使用gRPC協(xié)議與OAP平臺(tái)通信并上報(bào)數(shù)據(jù)。

  • 可觀測(cè)性分析平臺(tái) OAP

接收探針發(fā)送的數(shù)據(jù),并在內(nèi)存中使用分析引擎(Analysis Core)進(jìn)行數(shù)據(jù)的整合運(yùn)算,然后將數(shù)據(jù)存儲(chǔ)到對(duì)應(yīng)的存儲(chǔ)介質(zhì)上,比如 Elasticsearch、MySQL等存儲(chǔ)服務(wù)。同時(shí)OAP還使用查詢(xún)引擎(Query Core)提供HTTP查詢(xún)接口。OAP默認(rèn)監(jiān)聽(tīng)兩個(gè)端口gRPC協(xié)議端口11800、HTTP端口12800,gRPC用于探針上報(bào)數(shù)據(jù),HTTP端口用于UI連接OAP平臺(tái)獲取數(shù)據(jù)。

  • UI

Skywalking 提供單獨(dú)的UI進(jìn)行數(shù)據(jù)的查看,UI調(diào)用OAP提供的接口,獲取對(duì)應(yīng)的數(shù)據(jù)根據(jù)UI模板的配置進(jìn)行展示。Skywalking UI與OAP之間使用Http協(xié)議進(jìn)行通信。Skywalking UI默認(rèn)監(jiān)聽(tīng)8080端口提供Web服務(wù)。

Java Agent

  • 下載:Java Agent v8.11.0
  • 目錄結(jié)構(gòu)

activations                 # 工具包,默認(rèn)加載。

bootstrap-plugins           # 啟動(dòng)插件,默認(rèn)加載。

config                      # 配置文件

logs                        # 日志

optional-plugins            # 可選擴(kuò)展插件,啟動(dòng)不加載,如需加載將其移到到plugins目錄下。

optional-reporter-plugins   # 可選統(tǒng)計(jì)類(lèi)插件,啟動(dòng)不加載。

plugins                     # 服務(wù)類(lèi)插件

skywalking-agent.jar        # 客戶(hù)端主程序,需要被服務(wù)啟動(dòng)是引用。

  • 使用:項(xiàng)目啟動(dòng)命令添加-javaagent:/path/skywalking-agent/skywalking-agent.jar
  • 示例:
java -javaagent:/path/skywalking-agent/skywalking-agent.jar -jar your-app.jar
  • 配置:
  • 系統(tǒng)屬性:-Dskywalking.[config]=[value]
  • 代理參數(shù): -javaagent:skywalking-agent.jar=[config]=[value],...
  • 系統(tǒng)環(huán)境變量:agent.service_name=${SW_AGENT_NAME:Your_ApplicationName},如果SW_AGENT_NAME 您的操作系統(tǒng)中存在環(huán)境變量,并且其值為skywalking-agent-demo,則agent.service_name此處的值將被覆蓋為skywalking-agent-demo,否則將被設(shè)置為Your_ApplicationName。
  • 修改目錄/path/skywalking-agent/config/agent.config文件
// todo
//服務(wù)名稱(chēng)
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
// OAP服務(wù)地址
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}

代理選項(xiàng) > System.Properties(-D) > 系統(tǒng)環(huán)境變量 > 配置文件

  • 官方文檔

Client JavaScript

  • 安裝
npm install skywalking-client-js --save
  • 注冊(cè)
import ClientMonitor from 'skywalking-client-js';

   // Report collected data to `http:// + window.location.host + /browser/perfData` in default
   ClientMonitor.register({
      collector: 'http://127.0.0.1:8080',
      service: 'test-ui',
      pagePath: '/current/page/name',
      serviceVersion: 'v1.0.0',
   });
// options
   {
      // 參考方法文檔
   }
  • 手動(dòng)收集指標(biāo)頁(yè)面加載時(shí)或任何其他有意義的時(shí)刻的指標(biāo),PV

register時(shí)設(shè)置autoTracePerf:false

  • 調(diào)用setPerformance
import ClientMonitor from 'skywalking-client-js';

   ClientMonitor.setPerformance({
      collector: 'http://127.0.0.1:8080',
      service: 'browser-app',
      serviceVersion: '1.0.0',
      pagePath: location.href,
      useFmp: true
   });
  • SPA

register時(shí)設(shè)置enableSPA:true,開(kāi)啟單頁(yè)面應(yīng)用基于hashchange event觸發(fā)指標(biāo)采集行為

或者通過(guò)以下方法手動(dòng)處理,在上報(bào)數(shù)據(jù)時(shí)手動(dòng)更新頁(yè)面名稱(chēng),當(dāng)調(diào)用該方法時(shí),默認(rèn)情況下將重新報(bào)告頁(yè)面PV

app.on('routeChange', function (next) {
      ClientMonitor.setPerformance({
         collector: 'http://127.0.0.1:8080',
         service: 'browser-app',
         serviceVersion: '1.0.0',
         pagePath: location.href,
         useFmp: true
      });
   });
  • 跟蹤請(qǐng)求數(shù)據(jù)支持跟蹤這些(XMLHttpRequest和Fetch API)兩種模式的數(shù)據(jù)請(qǐng)求。同時(shí),支持基于XMLHttpRequest和fetch的跟蹤庫(kù)和工具,如Axios、SuperAgent、OpenApi等
// Angular
   import { ErrorHandler } from '@angular/core';
   import ClientMonitor from 'skywalking-client-js';

   export class AppGlobalErrorhandler implements ErrorHandler {
   handleError(error) {
      ClientMonitor.reportFrameErrors({
         collector: 'http://127.0.0.1',
         service: 'angular-demo',
         pagePath: '/app',
         serviceVersion: 'v1.0.0',
      }, error);
   }
   }
   @NgModule({
   ...
   providers: [{provide: ErrorHandler, useClass: AppGlobalErrorhandler}]
   })
   class AppModule {}
   ```

   ```js
   // React
   class ErrorBoundary extends React.Component {
   constructor(props) {
      super(props);
      this.state = { hasError: false };
   }
   static getDerivedStateFromError(error) {
      // Update state so the next render will show the fallback UI.
      return { hasError: true };
   }
   componentDidCatch(error, errorInfo) {
      // You can also log the error to an error reporting service
      ClientMonitor.reportFrameErrors({
         collector: 'http://127.0.0.1',
         service: 'react-demo',
         pagePath: '/app',
         serviceVersion: 'v1.0.0',
      }, error);
   }
   render() {
      if (this.state.hasError) {
         // You can render any custom fallback UI
         return <h1>Something went wrong.</h1>;
      }
      return this.props.children; 
   }
   }
   <ErrorBoundary>
   <MyWidget />
   </ErrorBoundary>
   ```

   ```js
   // Vue
   Vue.config.errorHandler = (error) => {
   ClientMonitor.reportFrameErrors({
      collector: 'http://127.0.0.1',
      service: 'vue-demo',
      pagePath: '/app',
      serviceVersion: 'v1.0.0',
   }, error);
   }
   ```
  • 官方文檔

skywalking-client-js

監(jiān)測(cè)對(duì)象

  • 服務(wù)(Service)
對(duì)請(qǐng)求提供端點(diǎn)的單個(gè)應(yīng)用或負(fù)載,在使用埋點(diǎn)、代理或 SDK 的時(shí)候,你可以定義服務(wù)的名字。如果不定義的話(huà),SkyWalking 會(huì)使用在agent.conf中配置的默認(rèn)服務(wù)名稱(chēng)。
  • 服務(wù)實(shí)例(Instance)
服務(wù)組中的每個(gè)單獨(dú)的工作負(fù)載都稱(chēng)為一個(gè)實(shí)例。就像pods在 Kubernetes 中一樣,它不需要是單個(gè)操作系統(tǒng)進(jìn)程,但是,如果您使用儀器代理,則實(shí)例實(shí)際上是一個(gè)真正的操作系統(tǒng)進(jìn)程。
  • 端點(diǎn)(Endpoint)
用于傳入請(qǐng)求的服務(wù)中的路徑,例如 HTTP URI 路徑或 gRPC 服務(wù)類(lèi) + 方法簽名。

UI指標(biāo)

通過(guò)配置文件定義需要關(guān)注的指標(biāo) 通過(guò)特定的分析語(yǔ)言計(jì)算指標(biāo)

UI包括以下幾個(gè)部分:

  • 儀表盤(pán)
  • 拓?fù)鋱D
  • 追蹤
  • 性能剖析
  • 日志
  • 告警
  • 事件
  • 調(diào)試

儀表盤(pán)

APM

  • Global

Services Load(CPM / PPM):服務(wù)每分鐘請(qǐng)求數(shù)

Slow Services(ms):慢響應(yīng)服務(wù)(按照響應(yīng)時(shí)間排序)

Un-Health Services (Apdex):Apdex分?jǐn)?shù)(1為滿(mǎn)分)

Slow Endpoints (ms):慢Endpoint的平均響應(yīng)時(shí)間

Global Response Latency(percentile in ms):響應(yīng)時(shí)間百分比

Global Heatmap:服務(wù)響應(yīng)時(shí)間熱力分布圖,根據(jù)時(shí)間段內(nèi)不同響應(yīng)時(shí)間的數(shù)量顯示顏色深度顏色越深,請(qǐng)求越多。

  • Service
  • Service Apdex 數(shù)字:當(dāng)前服務(wù)的Apdex分?jǐn)?shù);
  • Successful Rate(%):當(dāng)前服務(wù)的請(qǐng)求成功率;
  • Service Load (CPM / PPM)數(shù)字:每分鐘調(diào)用次數(shù)(CPM),如果是TCP,表示每分鐘的數(shù)據(jù)包數(shù)(PPM);
  • Service Avg Response Time(ms):當(dāng)前服務(wù)平均響應(yīng)時(shí)間;
  • Service Apdex 折線(xiàn)圖:當(dāng)前服務(wù)一段時(shí)間內(nèi)的Apdex分?jǐn)?shù);
  • Service Response Time Percentile(ms):當(dāng)前服務(wù)的百分比響應(yīng)延時(shí);
  • Successful Rate(%)折線(xiàn)圖:當(dāng)前服務(wù)一段時(shí)間內(nèi)的請(qǐng)求成功率;
  • Service Load (CPM / PPM)折線(xiàn)圖:當(dāng)前服務(wù)一段時(shí)間內(nèi)的每分鐘調(diào)用次數(shù);
  • Service Throughput(Bytes):服務(wù)吞吐量,只適用于TCP服務(wù);
  • Message Queue Consuming Count:消息隊(duì)列消費(fèi)數(shù);
  • Message Queue Avg Consuming Latency(ms):消息隊(duì)列平均延遲時(shí)間;
  • Service Instances Load(CPM / PPM):每個(gè)實(shí)例每分鐘請(qǐng)求數(shù);
  • Slow Service Instance(ms):每個(gè)服務(wù)實(shí)例平均延時(shí);
  • Service Instance Successful Rate(%):服務(wù)實(shí)例的請(qǐng)求成功率。
  • Instance
  • instance_jvm_memory_heap(堆內(nèi)存使用)
  • instance_jvm_memory_heap_max(最大堆內(nèi)存)
  • instance_jvm_memory_noheap(直接內(nèi)存使用)
  • instance_jvm_memory_noheap_max(最大直接內(nèi)存)
  • Service Instance Load(CPM / PPM):當(dāng)前實(shí)例每分鐘調(diào)用數(shù);
  • Service Instance Throughput(Bytes):當(dāng)前實(shí)例的吞吐流量;
  • Service Instance Successful Rate(%):當(dāng)前實(shí)例調(diào)用成功比率;
  • Service Instance Latency(ms):當(dāng)前實(shí)例響應(yīng)延時(shí);
  • JVM CPU(Java Service)%:當(dāng)前實(shí)例JVM的CPU占用百分比(相對(duì)于主機(jī));
  • JVM Memory (Java Service)(MB):當(dāng)前實(shí)例的內(nèi)存占用大小;
  • JVM GC Time(ms):JVM 垃圾回收時(shí)間,包含young gc和old gc;
  • JVM GC Count:JVM垃圾回收次數(shù),包含young gc count和old gc count;
  • JVM Thread Count(java service):當(dāng)前實(shí)例的線(xiàn)程數(shù);
  • JVM Thread State Count (Java Service):當(dāng)前實(shí)例的各狀態(tài)線(xiàn)程數(shù);
  • JVM Class Count (Java Service):當(dāng)前實(shí)例類(lèi)的計(jì)數(shù)。
  • Endpoint
  • Endpoint Load in Current Service(CPM / PPM):當(dāng)前服務(wù)每個(gè)端點(diǎn)的每分鐘請(qǐng)求數(shù);
  • Slow Endpoints in Current Service(ms):當(dāng)前服務(wù)每個(gè)端點(diǎn)的平均響應(yīng)時(shí)間;
  • Successful Rate in Current Service(%):當(dāng)前服務(wù)每個(gè)端點(diǎn)的請(qǐng)求成功率;
  • Endpoint Load:當(dāng)前端點(diǎn)每個(gè)時(shí)間段的請(qǐng)求量;
  • Endpoint Avg Response Time(ms):當(dāng)前端點(diǎn)每個(gè)時(shí)間段的平均請(qǐng)求響應(yīng)時(shí)間;
  • Endpoint Response Time Percentile(ms):當(dāng)前端點(diǎn)每個(gè)時(shí)間段的響應(yīng)時(shí)間占比;
  • Endpoint Successful Rate(%):當(dāng)前端點(diǎn)每個(gè)時(shí)間段的請(qǐng)求成功率;

Database

  • Database Avg Response Time(ms):當(dāng)前數(shù)據(jù)庫(kù)平均響應(yīng)時(shí)間;
  • Database Access Successful Rate(%):當(dāng)前數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)成功率;
  • Database Traffic(CPM: Calls Per Minute):當(dāng)前數(shù)據(jù)庫(kù)每分鐘請(qǐng)求數(shù);
  • Database Access Latency Percentile(ms):當(dāng)前數(shù)據(jù)庫(kù)響應(yīng)延遲時(shí)間的百分比;
  • Slow Statements(ms):慢查詢(xún),按照?qǐng)?zhí)行時(shí)間排序;
  • All Database Loads(CPM: Calls Per Minute):所有數(shù)據(jù)庫(kù)的請(qǐng)求次數(shù)排序;
  • Un-Health Databases (Successful Rate):所有數(shù)據(jù)庫(kù)請(qǐng)求成功率排序。

SelfObservability

自監(jiān)控,OAP服務(wù)端的各項(xiàng)指標(biāo)

  • 修改配置config/application.yml
# 將-修改為default
   prometheus-fetcher:
     selector: ${SW_PROMETHEUS_FETCHER:default}
     #default:
     #   active: ${SW_PROMETHEUS_FETCHER_ACTIVE:true}

   # 改none為prometheus
   telemetry:
     selector: ${SW_TELEMETRY:prometheus} 
     prometheus:
       host: ${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
       port: ${SW_TELEMETRY_PROMETHEUS_PORT:1234}
  • 如果telemetry有調(diào)整,則對(duì)應(yīng)修改修改config/fetcher-prom-rules/self.yaml
fetcherInterval: PT15S
   fetcherTimeout: PT10S
   metricsPath: /metrics
   staticConfig:
      # 改為上步中telemetry配置的ip
      targets:
         - url: http://localhost:1234 
            sslCaFilePath:
      labels:
         service: oap-server
  • 檢查:curl http://localhost:1234/metrics

Event

Istio、K8s

VM

Web Browser

對(duì)前端也有一定的監(jiān)控,通過(guò)Skywalking-Client-js組件來(lái)操作,包括Web App、Pages兩個(gè)指標(biāo)。

拓?fù)鋱D

  • 服務(wù)選擇器 支持顯示直接關(guān)系,包括上游和下游;
  • 自定義組 提供服務(wù)組的任意子拓?fù)涔δ埽欠纸M的信息是保存在瀏覽器內(nèi)的;
  • 服務(wù)菜單 當(dāng)您單擊任何服務(wù)時(shí)打開(kāi)。該圖形可以對(duì)所選擇的服務(wù)進(jìn)行度量、跟蹤和告警查詢(xún);
  • 服務(wù)指標(biāo)的關(guān)系 提供服務(wù)RPC交互的度量以及這兩個(gè)服務(wù)的實(shí)例。

追蹤

看每個(gè)接口的調(diào)用鏈,每個(gè)鏈路耗時(shí)、狀態(tài)。如果為失敗展示錯(cuò)誤信息,如果是數(shù)據(jù)庫(kù),會(huì)展示查詢(xún)語(yǔ)句。另外可以根據(jù)追蹤tid(trace id)和標(biāo)記(tag)進(jìn)行篩選。

性能剖析

日志

告警

事件

調(diào)試

日志集成

支持logback、log4j、log4j2日志框架集成,基于gRpc通信協(xié)議實(shí)現(xiàn)日志采集。

以logback為例:

  • 引入依賴(lài)
<dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-logback-1.x</artifactId>
            <version>8.9.0</version>
        </dependency>
  • 修改logback.xml配置
<!-- ... -->

      <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.mdc.TraceIdMDCPatternLogbackLayout">
                  <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern>
            </layout>
         </encoder>
      </appender>

      <root level="INFO">
         <!-- ... -->
         <appender-ref ref="grpc-log"/>
      </root>
  • 修改agent配置 ~/config/agent.config
plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:0.0.0.0}
   plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
   plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760} 
   plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}
  • 官方示例

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

監(jiān)控方法

通過(guò)@Trace注解標(biāo)記需要追蹤的方法調(diào)用情況

  • 引入依賴(lài)
<dependency>
         <groupId>org.apache.skywalking</groupId>
         <artifactId>apm-toolkit-trace</artifactId>
         <version>8.9.0</version>
      </dependency>
  • 修改代碼
@Trace
   @GetMapping("/printLog")
   public String printLog() {
      Logger.info("traceId:{}",TraceContext.traceId())
      return "ok";
   }

告警接入

  • 規(guī)則修改配置config/alarm-settings.yml
  • 鉤子支持WebHook、GRPCHook、SlackHook、WechatHook、DingtalkHook、FeishuHook實(shí)現(xiàn)告警信息推送

場(chǎng)景

指標(biāo)性統(tǒng)計(jì)

一個(gè)服務(wù)的 TBS 的正確率、成功率、流量等,這是我們常見(jiàn)的針對(duì)單個(gè)指標(biāo)或者某一個(gè)數(shù)據(jù)庫(kù)的,這就是 Metrics 單指標(biāo)分析

Tracing 分布式追蹤

一次請(qǐng)求的范圍,也就是我們從瀏覽器或者手機(jī)端發(fā)起任何的一次調(diào)用,甚至我們可以再推廣一點(diǎn),是一次業(yè)務(wù)交易,比如說(shuō)一次訂購(gòu)的過(guò)程,從瀏覽商品到最后下定單、支付、物流、最后交到我們的手上。這是一個(gè)流程化的東西,我們需要軌跡,需要去追蹤。

Logging 日志記錄

我們程序在執(zhí)行的過(guò)程中間發(fā)生了一些日志,會(huì)一幀一幀地跳出來(lái)給大家去記錄這個(gè)東西,這是日志記錄。

關(guān)鍵詞

  • Topology:拓?fù)?/li>
  • Trace:追蹤
  • Metrics:度量
  • Span:
  • Apdex:是根據(jù)設(shè)定的閾值和響應(yīng)時(shí)間結(jié)合考慮的衡量標(biāo)準(zhǔn)。它是滿(mǎn)意響應(yīng)時(shí)間和不滿(mǎn)意響應(yīng)時(shí)間相對(duì)于總響應(yīng)時(shí)間的比率。它衡量的是用戶(hù)對(duì)你的服務(wù)的滿(mǎn)意程度,因?yàn)閭鹘y(tǒng)的指標(biāo)(如平均響應(yīng)時(shí)間)可能很快就會(huì)容易形成偏差。
  • percentile:標(biāo)簽含義(p50、p75、p90、p95、p99):例如p99為1000ms, 這意味著 99% 的請(qǐng)求應(yīng)該比1000ms更快

結(jié)束語(yǔ)

Apache SkyWalking是一款功能強(qiáng)大的APM系統(tǒng),可以幫助開(kāi)發(fā)人員和運(yùn)維人員更好地了解分布式系統(tǒng)的性能狀況。通過(guò)使用SkyWalking,可以提高應(yīng)用程序的穩(wěn)定性和性能,降低運(yùn)維成本。

責(zé)任編輯:武曉燕 來(lái)源: Java技術(shù)指北
相關(guān)推薦

2022-11-11 19:09:13

架構(gòu)

2023-11-20 08:18:49

Netty服務(wù)器

2023-11-08 08:15:48

服務(wù)監(jiān)控Zipkin

2023-10-27 08:15:45

2022-02-24 07:34:10

SSL協(xié)議加密

2022-04-28 09:22:46

Vue灰度發(fā)布代碼

2025-09-12 16:31:04

TiDBMCP ServerAI工具

2020-10-08 14:32:57

大數(shù)據(jù)工具技術(shù)

2022-09-29 13:09:38

DataClassPython代碼

2025-01-15 09:06:57

servlet服務(wù)器Java

2020-02-02 15:14:24

HTTP黑科技前端

2019-08-06 09:00:00

JavaScript函數(shù)式編程前端

2024-05-07 08:49:36

Hadoop數(shù)據(jù)存儲(chǔ)-分布式存儲(chǔ)

2024-05-27 00:00:00

.NET游戲引擎C#

2023-05-17 11:33:45

梯度下降機(jī)器學(xué)習(xí)

2024-02-04 09:44:41

量子計(jì)算量子量子物理

2022-03-14 08:01:06

LRU算法線(xiàn)程池

2018-10-22 08:14:04

2023-03-31 08:16:53

Flutter優(yōu)化內(nèi)存管理

2022-02-18 10:13:07

SolrElasticSea開(kāi)源
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)