日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

skywalking 安装_如何使用skywalking 进行全链路监控

發(fā)布時(shí)間:2024/1/23 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 skywalking 安装_如何使用skywalking 进行全链路监控 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文涉及內(nèi)容

  • skywalking 全鏈路監(jiān)控
  • skywalking 的參數(shù)配置
  • skywalking UI 監(jiān)控視角與指標(biāo)介紹
  • 一些很有用的點(diǎn)

skywalking 全鏈路監(jiān)控

下圖是我從網(wǎng)上找到的一個(gè)比較常見的微服務(wù)架構(gòu),看得出來使用的是 spring cloud 框架組件,后端服務(wù)是 java。我所謂的全鏈路監(jiān)控是 從 Nginx 到數(shù)據(jù)庫 這個(gè)鏈路的監(jiān)控。

我們知道 skywalking 可以通過 agent 比較方便的監(jiān)控到后端的 java 應(yīng)用。有關(guān) skywalking 的安裝請參考官方文檔[1]

以下是幾個(gè)界面截圖:通過 skywalking , 我們可以從服務(wù)入口開始一直監(jiān)控到數(shù)據(jù)庫,甚至是數(shù)據(jù)庫的 sql 以及參數(shù)都可以一覽無余(sql 參數(shù)顯示需要單獨(dú)配置,后面會(huì)講)。

然而我們并沒有監(jiān)控到請求的上游源頭,即 Nginx 入口,如果我們將從 Nginx 入口來的并且經(jīng)由 java 服務(wù)最終到數(shù)據(jù)庫的請求全部監(jiān)控起來,就完成了請求的全鏈路監(jiān)控。上面我們處理了下半段,現(xiàn)在我們來處理上半段。

skywalking-nginx-lua[2] 這是 skywalking 的另一個(gè)項(xiàng)目,可以通過它來對nginx進(jìn)行監(jiān)控。skywalking-nginx-lua 是使用lua來織入 agent 的。所以要求你的 nginx 要么有 lua 模塊,要么用 openResty 這樣的自帶 Lua 功能模塊的軟件。

我使用的是openResty,只需要加以下配置就可以實(shí)現(xiàn)監(jiān)控(注意中文注釋部分):

http?{????lua_package_path?"/Path/to/.../skywalking-nginx-lua/lib/skywalking/?.lua;;";????#?Buffer?represents?the?register?inform?and?the?queue?of?the?finished?segment????lua_shared_dict?tracing_buffer?100m;????#?Init?is?the?timer?setter?and?keeper????#?Setup?an?infinite?loop?timer?to?do?register?and?trace?report.????init_worker_by_lua_block?{????????local?metadata_buffer?=?ngx.shared.tracing_buffer????????--?Set?service?name????????metadata_buffer:set('serviceName',?'User?Service?Name')????????--?Instance?means?the?number?of?Nginx?deployment,?does?not?mean?the?worker?instances????????metadata_buffer:set('serviceInstanceName',?'User?Service?Instance?Name')????????#這是你的skywalking?server地址????????require("client"):startBackendTimer("http://127.0.0.1:12800")????}????server?{????????listen?8080;????????location?/ingress?{????????????default_type?text/html;????????????rewrite_by_lua_block?{????????????????------------------------------------------------------????????????????--?NOTICE,?this?should?be?changed?manually????????????????--?This?variable?represents?the?upstream?logic?address????????????????--?Please?set?them?as?service?logic?name?or?DNS?name????????????????--????????????????--?Currently,?we?can?not?have?the?upstream?real?network?address????????????????------------------------------------------------------????????????????require("tracer"):start("upstream?service")????????????????--?If?you?want?correlation?custom?data?to?the?downstream?service????????????????--?require("tracer"):start("upstream?service",?{custom?=?"custom_value"})????????????}????????????#?這是你的目標(biāo)下游服務(wù),比如java的微服務(wù)網(wǎng)關(guān)????????????proxy_pass?http://127.0.0.1:8080/backend;????????????body_filter_by_lua_block?{????????????????if?ngx.arg[2]?then????????????????????require("tracer"):finish()????????????????end????????????}????????????log_by_lua_block?{????????????????require("tracer"):prepareForReport()????????????}????????}????}}

下面是幾個(gè)監(jiān)控到的nginx數(shù)據(jù)的截圖

至此我們就完成了整個(gè)鏈路的監(jiān)控。

skywalking 的參數(shù)配置

一些中文文檔

  • agent的文檔[3]
  • ui的文檔[4]

通過修改agent/config/agenet.config 文件得到的能力

根據(jù)文檔 https://github.com/apache/skywalking/blob/v8.0.0/docs/en/setup/service-agent/java-agent/README.md 得知

  • 1 可以獲取 sql中的參數(shù),默認(rèn)是獲取不到的。當(dāng)然還要設(shè)置參數(shù)最大長度。但獲取參數(shù)有可能引起性能問題。
  • 2 收集http參數(shù)
#收集SpringMVC?plugin插件請求參,在tomcat上時(shí)這倆設(shè)置一個(gè)即可plugin.tomcat.collect_http_params?or???plugin.springmvc.collect_http_params?plugin.springmvc.collect_http_params=true?#請求參數(shù)收集的最大字符長度,?配置過大會(huì)影響性能.?plugin.http.http_params_length_threshold=1024
  • 3 skywalking-oap 的配置文件中關(guān)于數(shù)據(jù)存儲(chǔ)時(shí)長的配置
core:??selector:?${SW_CORE:default}??default:????#?Mixed:?Receive?agent?data,?Level?1?aggregate,?Level?2?aggregate????#?Receiver:?Receive?agent?data,?Level?1?aggregate????#?Aggregator:?Level?2?aggregate????role:?${SW_CORE_ROLE:Mixed}?#?Mixed/Receiver/Aggregator????restHost:?${SW_CORE_REST_HOST:0.0.0.0}????restPort:?${SW_CORE_REST_PORT:12800}????restContextPath:?${SW_CORE_REST_CONTEXT_PATH:/}????gRPCHost:?${SW_CORE_GRPC_HOST:0.0.0.0}????gRPCPort:?${SW_CORE_GRPC_PORT:11800}????gRPCSslEnabled:?${SW_CORE_GRPC_SSL_ENABLED:false}????gRPCSslKeyPath:?${SW_CORE_GRPC_SSL_KEY_PATH:""}????gRPCSslCertChainPath:?${SW_CORE_GRPC_SSL_CERT_CHAIN_PATH:""}????gRPCSslTrustedCAPath:?${SW_CORE_GRPC_SSL_TRUSTED_CA_PATH:""}????downsampling:??????-?Hour??????-?Day??????-?Month????#?Set?a?timeout?on?metrics?data.?After?the?timeout?has?expired,?the?metrics?data?will?automatically?be?deleted.????enableDataKeeperExecutor:?${SW_CORE_ENABLE_DATA_KEEPER_EXECUTOR:true}?#?Turn?it?off?then?automatically?metrics?data?delete?will?be?close.????dataKeeperExecutePeriod:?${SW_CORE_DATA_KEEPER_EXECUTE_PERIOD:5}?#?How?often?the?data?keeper?executor?runs?periodically,?unit?is?minute????recordDataTTL:?${SW_CORE_RECORD_DATA_TTL:3}?#?Unit?is?day????metricsDataTTL:?${SW_CORE_RECORD_DATA_TTL:7}?#?Unit?is?day

主要是這四行

enableDataKeeperExecutor:?${SW_CORE_ENABLE_DATA_KEEPER_EXECUTOR:true}?#?Turn?it?off?then?automatically?metrics?data?delete?will?be?close.dataKeeperExecutePeriod:?${SW_CORE_DATA_KEEPER_EXECUTE_PERIOD:5}?#?How?often?the?data?keeper?executor?runs?periodically,?unit?is?minuterecordDataTTL:?${SW_CORE_RECORD_DATA_TTL:3}?#?Unit?is?daymetricsDataTTL:?${SW_CORE_RECORD_DATA_TTL:7}?#?Unit?is?day

skywalking UI 監(jiān)控視角與指標(biāo)介紹

cpm 每分鐘請求數(shù)

cpm 全稱 call per minutes,是吞吐量(Throughput)指標(biāo)。下圖是拼接的全局、服務(wù)、實(shí)例和接口的吞吐量及平均吞吐量。

第一條185cpm=185/60=3.08個(gè)請求/秒。

SLA 服務(wù)等級(jí)協(xié)議

SLA 全稱 Service-Level Agreement,直譯為 “服務(wù)等級(jí)協(xié)議”,用來表示提供服務(wù)的水平。在IT中,SLA可以衡量平臺(tái)的可用性,下面是N個(gè)9的計(jì)算:

  • 1年 = 365天 = 8760小時(shí)
  • 99 = 8760 * 1% => 3.65天
  • 99.9 = 8760 * 0.1% => 8.76小時(shí)
  • 99.99 = 8760 * 0.01% => 52.6分鐘
  • 99.999 = 8760 * 0.001% => 5.26分鐘
  • 因此,全年只要發(fā)生一次較大規(guī)模宕機(jī)事故,4個(gè)9肯定沒戲,一般平臺(tái)3個(gè)9差不多。但2個(gè)9就基本不可用了,相當(dāng)于全年有87.6小時(shí)不可用,每周(一個(gè)月按4周算)有1.825小時(shí)不可用。下圖是服務(wù)、實(shí)例、接口的SLA,一般看年度、月度即可。

    Percent Response 百分位數(shù)統(tǒng)計(jì)

    表示采集樣本中某些值的占比,Skywalking 有 p50、p75、p90、p95、p99 一些列值。其中的 “p99:390” 表示 99% 請求的響應(yīng)時(shí)間在390ms以內(nèi)。而99%一般用于拋掉一些極端值,表示絕大多數(shù)請求。

    Slow Endpoint 慢端點(diǎn)

    Endpoint 表示具體的服務(wù),例如一個(gè)接口。下面是全局Top N的數(shù)據(jù),通過這個(gè)可以觀測平臺(tái)性能情況。

    Heatmap 熱力圖

    Heapmap 可譯為熱力圖、熱度圖都可以,其中顏色越深,表示請求數(shù)越多,這和GitHub Contributions很像,commit越多,顏色越深。橫坐標(biāo)是響應(yīng)時(shí)間,鼠標(biāo)放上去,可以看到具體的數(shù)量。通過熱力圖,一方面可以直觀感受平臺(tái)的整體流量,另一方面也可以感受整體性能。

    apdex

    是一個(gè)衡量服務(wù)器性能的標(biāo)準(zhǔn)。apdex有三個(gè)指標(biāo):

    • 滿意:請求響應(yīng)時(shí)間小于等于T。
    • 可容忍:請求響應(yīng)時(shí)間大于T,小于等于4T。
    • 失望:請求響應(yīng)時(shí)間大于4T。

    T:自定義的一個(gè)時(shí)間值,比如:500ms。apdex = (滿意數(shù) + 可容忍數(shù)/2)/ 總數(shù)。例如:服務(wù)A定義T=200ms,在100個(gè)采樣中,有20個(gè)請求小于200ms,有60個(gè)請求在200ms到800ms之間,有20個(gè)請求大于800ms。計(jì)算apdex = (20 + 60/2)/100 = 0.5。

    一些很有用的點(diǎn)

    在拓?fù)鋱D中

    紅色代表當(dāng)前節(jié)點(diǎn)的請求有一段時(shí)間內(nèi)是響應(yīng)異常的。當(dāng)節(jié)點(diǎn)全部變紅的時(shí)候證明服務(wù)現(xiàn)階段內(nèi)就徹底不可用了。我們可以通過Topology迅速發(fā)現(xiàn)某一個(gè)服務(wù)潛在的問題,并進(jìn)行下一步的排查并做到預(yù)防。

    仔細(xì)看線是有流向的,有單向和雙向的,單向有從左至右的或從右至左的,這樣你就知道你的服務(wù)是誰依賴了誰。雙向的就證明你的服務(wù)有循環(huán)引用依賴問題。

    在最新版本8.1中有endpoint端口依賴的分析,可以分析出接口級(jí)別的依賴關(guān)系,可以知道某接口是被誰調(diào)用,它又調(diào)用了誰。

    關(guān)注公眾號(hào) 獲取更多精彩內(nèi)容

    參考資料

    [1]

    skywalking官方文檔: https://github.com/apache/skywalking/blob/master/docs/en/setup/README.md

    [2]

    skywalking-nginx-lua項(xiàng)目地址: https://github.com/apache/skywalking-nginx-lua/

    [3]

    skywalking-agent文檔: https://skyapm.github.io/document-cn-translation-of-skywalking/zh/8.0.0/setup/service-agent/java-agent/

    [4

    skywalking-ui 文檔: https://skyapm.github.io/document-cn-translation-of-skywalking/zh/8.0.0/ui/

    總結(jié)

    以上是生活随笔為你收集整理的skywalking 安装_如何使用skywalking 进行全链路监控的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。