Apache Skywalking操作指南

Apache Skywalking操作指南

一、簡介

SkyWalking 是針對分布式系統(tǒng)的APM(應用性能監(jiān)控)系統(tǒng),特別針對微服務、cloud native 和容器化(Docker, Kubernetes, Mesos)架構, 其核心是個分布式追蹤系統(tǒng)。它通過探針自動收集所需的指標,且基于探針技術對應用零侵入零耦合。主要提供以下功能:

  • 服務、服務實例和端點(如:單個HTTP URI)的性能指標分析
  • 根本原因分析
  • 服務拓撲圖分析
  • 服務和端點依賴分析
  • 慢服務和慢端點檢測
  • 分布式追蹤和上下文傳播
  • 告警

總體架構

  1. collector:鏈路數(shù)據(jù)歸集器,數(shù)據(jù)可以落地MySQL、ElasticSearch、TiDB、H2等
  2. agent:探針,使用Javaagent做字節(jié)碼植入,無侵入式的收集,并通過HTTP或者gRPC方式發(fā)送數(shù)據(jù)collector
  3. web:web可視化平臺,用來展示落地的數(shù)據(jù)

二、安裝與配置

SkyWalking官網(wǎng)下載 (安裝教程很簡單,自行度娘,不贅述)

SkyWalking 項目集成指南

  1. 將skywalking 的agent包拷貝到任意目錄(如:/data)
  2. 啟動java進程時增加-javaagent:/data/agent/skywalking-agent.jar -Dskywalking.agent.service_name=項目名稱加載agent
  3. 可以修改配置忽略對eureka、redisson等的心跳檢查鏈路追蹤
    a.從 /agent/optional-plugins/apm-trace-ignore-plugin-7.0.0.jar 復制到 /agent/plugins
    b.在agent/config目錄添加文件 apm-trace-ignore-plugin.config
    trace.ignore_path=Redisson/CLUSTER, /eureka/apps/**, Mysql/JDBI/PreparedStatement/**
    

agent目錄結構

image

三、概念說明

skywalking各項指標說明

全局指標

  • all_p99, 所有服務響應時間的 p99 值
  • all_p95
  • all_p90
  • all_p75
  • all_p70
  • all_heatmap, 所有服務響應時間的熱點圖

服務指標

  • service_resp_time, 服務的平均響應時間
  • service_sla, 服務的成功率
  • service_cpm, 服務每分鐘調(diào)用次數(shù)
  • service_p99, 服務響應時間的 p99 值
  • service_p95
  • service_p90
  • service_p75
  • service_p50

服務實例指標

  • service_instance_sla, 服務實例的成功率
  • service_instance_resp_time, 服務實例的平均響應時間
  • service_instance_cpm, 服務實例每分鐘調(diào)用次數(shù)

端點指標

  • endpoint_cpm, 端點每分鐘調(diào)用次數(shù)
  • endpoint_avg, 端點平均響應時間
  • endpoint_sla, 端點成功率
  • endpoint_p99, 端點響應時間的 p99 值
  • endpoint_p95
  • endpoint_p90
  • endpoint_p75
  • endpoint_p50

JVM指標

  • instance_jvm_cpu
  • instance_jvm_memory_heap
  • instance_jvm_memory_noheap
  • instance_jvm_memory_heap_max
  • instance_jvm_memory_noheap_max
  • instance_jvm_young_gc_time
  • instance_jvm_old_gc_time
  • instance_jvm_young_gc_count
  • instance_jvm_old_gc_count

服務關系指標

  • service_relation_client_cpm, 在客戶端每分鐘檢測到的調(diào)用次數(shù)
  • service_relation_server_cpm, 在服務端每分鐘檢測到的調(diào)用次數(shù)
  • service_relation_client_call_sla, 在客戶端檢測到的成功率
  • service_relation_server_call_sla, 在服務端檢測到的成功率
  • service_relation_client_resp_time, 在客戶端檢測到的平均響應時間
  • service_relation_server_resp_time, 在服務端檢測到的平均響應時間

端點關系指標

  • endpoint_relation_cpm
  • endpoint_relation_resp_time

其他關鍵指標

CPM:每分鐘請求調(diào)用的次數(shù)

SLA:網(wǎng)站服務可用性(主要是通過請求成功與失敗次數(shù)來計算),9越多代表全年服務可用時間越長服務更可靠,停機時間越短
1年 = 365天 = 8760小時
99.9 = 8760 * 0.1% = 8760 * 0.001 = 8.76小時
99.99 = 8760 * 0.0001 = 0.876小時 = 0.876 * 60 = 52.6分鐘
99.999 = 8760 * 0.00001 = 0.0876小時 = 0.0876 * 60 = 5.26分鐘
從以上看來,全年停機5.26分鐘才能做到99.999%,即5個9

CLR:(公共語言運行庫)在運行期管理程序的執(zhí)行:主要包含:內(nèi)存管理、代碼安全驗證、代碼執(zhí)行、垃圾收集。CLR有一項服務稱為GC(Garbage Collector,垃圾收集),它能為你自動管理內(nèi)存。GC自動從內(nèi)存中刪除程序不再訪問的對象,GC是程序員不再操心許多以前必須執(zhí)行的任務,比如釋放內(nèi)存和檢查內(nèi)存泄漏。

百分位數(shù):skywalking中有P50,P90,P95這種統(tǒng)計口徑,就是百分位數(shù)的概念。

如下圖,表示7月22日,14:56分這個時間點探針反饋的統(tǒng)計結果來看,有50%的請求響應時間低于60ms,有75%的請求響應時間低于60ms,有90%的請求響應時間低于550ms,有95%的請求響應時間低于550ms,有99%的請求響應時間低于550ms
image.png

四、儀表盤說明

  • Global(全局)


    image.png
  • Service(服務)


    image.png
  • Endpoint(端點)


    image.png
  • Instance(實例)


    image.png
  • Database(數(shù)據(jù)庫)


    image.png

五、鏈路追蹤

image.png

六、告警配置

  • 告警規(guī)則參數(shù)說明


    告警規(guī)則配置
  • 告警通知

告警消息將按通過HTTP按application/json內(nèi)容類型推送。JSON格式基于List<org.apache.skywalking.oap.server.core.alarm.AlarmMessage>
消息格式
  • 動態(tài)配置與組件告警接入

skywalking使用的是動態(tài)配置(如apollo),如果需要變動的話,直接修改apollo的相關配置就行。同時通過webhooks自定義提示方式等等個性化功能。
自定義服務實現(xiàn)告警方式等配置

告警日志
企微告警通知示例

七、插件

Java Agent是插件化、可插拔的。Skywalking的插件分為三種:

  1. 引導插件:在agent的 bootstrap-plugins 目錄下
  2. 內(nèi)置插件:在agent的 plugins 目錄下
  3. 可選插件:在agent的 optional-plugins 目錄下

Java Agent只會啟用 plugins 目錄下的所有插件,bootstrap-plugins 目錄以及 optional-plugins 目錄下的插件不會啟用。如需啟用引導插件或可選插件,只需將JAR包移到 plugins 目錄下,如需禁用某款插件,只需從 plugins 目錄中移除即可。

  • 引導插件

目前只有兩款引導插件:
apm-jdk-http-plugin 用來是監(jiān)測HttpURLConnection;
apm-jdk-threading-plugin 用來監(jiān)測Callable以及Runnable;

有關引導插件的功能描述,可詳見:
[https://github.com/apache/skywalking/blob/v6.6.0/docs/en/setup/service-agent/java-agent/README.md#bootstrap-class-plugins]{.underline}

例如:項目中不少功能都用到了線程池來提高執(zhí)行效率,因此就引入了apm-jdk-threading-plugin 用來實現(xiàn)跨線程鏈路監(jiān)控。

使用方法:

修改 skywalking-agent.jar所在目錄的 config/agent.config文件,在里面修改/添加配置
plugin.jdkthreading.threading_class_prefixes=cn.com.mybackage
然后在plugins文件夾里加入插件apm-jdk-threading-plugin.jar即可。

實現(xiàn)效果:
多線程鏈路監(jiān)控
  • 內(nèi)置插件

內(nèi)置插件主要用來為業(yè)界主流的技術與框架提供支持。所支持的技術&框架,詳見:

https://github.com/apache/skywalking/blob/v6.6.0/docs/en/setup/service-agent/java-agent/Supported-list.md

  • 可選插件

關于可選插件的功能描述,可詳見:

https://github.com/apache/skywalking/blob/v6.6.0/docs/en/setup/service-agent/java-agent/README.md

  • 插件開發(fā)

插件開發(fā)指南,可詳見:

Plugin Development Guide
SkyWalking插件開發(fā)指南

場景示例:我們項目中采用了xxljob分布式任務調(diào)度,且都是采用ben模式開發(fā)方式(Skywalking官方并沒有對xxljob做相關支持),所以開發(fā)xxljob監(jiān)控插件。


切入點

攔截器的實現(xiàn):org.apache.skywalking.apm.plugin.xxljob.XxlJobHandlerInterceptor


攔截器

將插件定義添加到skywalking-plugin.def文件中
skywalking-plugin.def

org.apache.skywalking.apm.network.trace.component.ComponentsDefine中定義變量:


定義變量

插件效果:
插件效果

插件效果
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,995評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內(nèi)容