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目錄結(jié)構

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)計結(jié)果來看状勤,有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中定義變量:


定義變量

插件效果:
插件效果

插件效果
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市灌侣,隨后出現(xiàn)的幾起案子推捐,更是在濱河造成了極大的恐慌,老刑警劉巖侧啼,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牛柒,死亡現(xiàn)場離奇詭異,居然都是意外死亡痊乾,警方通過查閱死者的電腦和手機皮壁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來符喝,“玉大人,你說我怎么就攤上這事甜孤⌒牵” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵缴川,是天一觀的道長茉稠。 經(jīng)常有香客問我,道長把夸,這世上最難降的妖魔是什么而线? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上膀篮,老公的妹妹穿的比我還像新娘嘹狞。我一直安慰自己,他們只是感情好誓竿,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布磅网。 她就那樣靜靜地躺著,像睡著了一般筷屡。 火紅的嫁衣襯著肌膚如雪涧偷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天毙死,我揣著相機與錄音燎潮,去河邊找鬼。 笑死扼倘,一個胖子當著我的面吹牛确封,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播唉锌,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼隅肥,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了袄简?” 一聲冷哼從身側(cè)響起腥放,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绿语,沒想到半個月后秃症,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡吕粹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年种柑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匹耕。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡聚请,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稳其,到底是詐尸還是另有隱情驶赏,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布既鞠,位于F島的核電站煤傍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嘱蛋。R本人自食惡果不足惜蚯姆,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一五续、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧龄恋,春花似錦疙驾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至铣卡,卻和暖如春链韭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背煮落。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工敞峭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蝉仇。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓旋讹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親轿衔。 傳聞我的和親對象是個殘疾皇子沉迹,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

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