可視化監控應用性能-skywalking

這是我參與8月更文挑戰的第6天,活動詳情查看:8月更文挑戰java

微服務體系下須要對各個服務進行監控,或者在對服務進行壓測的時候都須要觀察服務性能,咱們選擇使用skywalking來完成這個功能,skywalking簡單操做就可使用,也方便監控服務運行狀況。mysql

官網:skywalking.apache.org/docs/git

中文文檔:skyapm.github.io/github

一. 概述

基於Skywalking,提供分佈式服務鏈路追蹤,服務依賴拓撲繪製,慢端點、慢SQL等面板展現能力,以及服務告警能力,同時自帶顯示面板,能夠提供先後端調用鏈整合能力。支持多種語言:如 Java, C# , Node.js , Go , PHP 以及 Nginx LUA。sql

SkyWalking 爲 服務(service) , 服務實例(service instance) , 以及 端點(endpoint) 提供了可觀測能力。apache

二. 架構

SkyWalking 邏輯上分爲四部分: 探針, 平臺後端, 存儲和用戶界面.後端

image.png

  • 探針 基於不一樣的來源多是不同的, 但做用都是收集數據, 將數據格式化爲 SkyWalking 適用的格式.
  • 平臺後端, 支持數據聚合, 數據分析以及驅動數據流從探針到用戶界面的流程。分析包括 Skywalking 原生追蹤和性能指標以及第三方來源,包括 Istio 及 Envoy telemetry , Zipkin 追蹤格式化等。
  • 存儲 經過開放的插件化的接口存放 SkyWalking 數據. 你能夠選擇一個既有的存儲系統, 如 ElasticSearch, H2 或 MySQL 集羣(Sharding-Sphere 管理),也能夠選擇本身實現一個存儲系統. 固然, 咱們很是歡迎你貢獻新的存儲系統實現。
  • UI 一個基於接口高度定製化的Web系統,用戶能夠可視化查看和管理 SkyWalking 數據。

三. 安裝-java版

1. 基本環境

須要的jdk和elasticsearch的下載安裝自行百度服務器

下載對應的apm包,skywalking下載地址:skywalking.apache.org/downloads/ 安裝:markdown

jdk1.8
elasticsearch-7.8.1
apache-skywalking-apm-es7-8.3.0
複製代碼

image.png

2. 解壓apache-skywalking-apm-es7-8.3.0.tar.gz並配置
  • 解壓後的內容
  • 修改config/application.yml中配置存儲(本次測試使用elasticsearch7)

存儲有多種方式:elasticsearch6,7/h2/mysql/tidb/influxdb網絡

配置以下

storage:
selector: ${SW_STORAGE:elasticsearch7}
elasticsearch7:
  nameSpace: ${SW_NAMESPACE:""}
  clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
  user: ${SW_ES_USER:""}
  password: ${SW_ES_PASSWORD:""}
複製代碼
3. 啓動skywalking

啓動以前確認elasticsearch已經啓動且正常運行

在bin目錄下執行 startup.sh腳本啓動

訪問localhost:8080便可打開UI界面

四,啓動應用程序

  • -Dskywalking.agent.namespace 命名空間---能夠區分不一樣的環境
  • -Dskywalking.agent.service_name 服務的名字
  • -Dskywalking.collector.backend_service skywalking的接口地址(啓動默認端口11800)

jar啓動:(包含skywalking-agent.jar完整路徑,並且不能移動jar)

java -javaagent:/developSoftware/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.namespace=ajisun-dev -Dskywalking.agent.service_name=ajisun-dev:ajisun-platform -Dskywalking.collector.backend_service=localhost:11800 -jaryourApp.jar
複製代碼

idea中啓動:(在VM options中寫入)

-javaagent:/developSoftware/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.namespace=ajisun-dev -Dskywalking.agent.service_name=ajisun-dev:ajisun-platform -Dskywalking.collector.backend_service=localhost:11800
複製代碼

如圖:

image.png

啓動後效果:

五,功能介紹

1. 儀表盤
  1. 吞吐量CPM,表示每分鐘的調用.
  2. Apdex分數:衡量服務器性能的標準
  3. 響應時間百分比,包括 p99, p95, p90, p75, p50.
  4. SLA表示成功率。對於HTTP,表示響應爲200的請求.

監控數據彙總:

image.png

服務維度的數據:

image.png

2. 拓撲圖

拓撲圖用指標顯示服務和實例之間的關係.,點擊服務顯示監控數據

image.png

  1. 拓撲顯示包含全部服務的默認全局拓撲.
  2. 服務選擇器 支持顯示直接關係,包括上游和下游.
  3. 自定義組 提供服務組的任意子拓撲功能.
  4. 服務下鑽 當單擊任何服務時打開。該圖形能夠對所選擇的服務進行度量、跟蹤和告警查詢.
  5. 服務指標的關係 提供服務RPC交互的度量以及這兩個服務的實例.
3. 跟蹤查詢

跟蹤查詢是與skywalk提供的分佈式代理同樣的典型特性.

image.png

  1. 跟蹤部分列表 不是跟蹤列表。每一個跟蹤都有幾個屬於不一樣服務的段。 若是經過全部服務或經過跟蹤id進行查詢,能夠在其中列出具備相同跟蹤id的不一樣段.
  2. 跨度 是否可單擊,每一個跨度的細節將在左側彈出.
  3. 跟蹤視圖 提供3個典型的和不一樣的使用視圖來可視化跟蹤.
  4. 關聯的服務 顯示接口調用中通過的全部服務
4. 性能剖析

一個交互特性。提供了方法級的性能診斷.

  1. 選擇特定的服務。
  2. 設置端點名稱。這個端點名一般是第一個span的操做名。在追蹤查詢上找到這個 段列表視圖。
  3. 監控時間能夠從如今開始,也能夠從將來的任什麼時候間開始。
  4. 監視持續時間定義了觀察時間窗口,以查找合適的請求進行性能分析。 即便概要文件對目標系統的性能影響很是有限,但它仍然是一個額外的負載。這個時間 使衝擊可控。
  5. 最小持續時間閾值提供了一個過濾器機制,若是給定端點響應的請求很快,它就不會異形。這能夠確保配置的數據是預期的數據。
  6. 最大抽樣計數表示agent將收集的最大數據集。它有助於減小內存和網絡負載。
  7. 一個隱式條件,在任什麼時候候,skywalk只接受一個配置文件任務的每一個服務
  8. 代理能夠有不一樣的設置來控制或限制此特性,請閱讀文檔設置以瞭解更多細節。
  9. 並非全部的SkyWalking生態系統代理都支持此特性,7.0.0中的java代理默認支持此特性。

一旦配置文件完成,配置的跟蹤段就會顯示出來。你能夠要求分析任意張成的空間。 一般,咱們分析跨度具備較長的自持續時間,若是跨度及其子跨度都具備較長的持續時間,則能夠進行選擇 「包括子跨度」或「排除子跨度」來設定分析界限。

選擇正確的跨度後,單擊「analysis」按鈕,您將看到基於堆棧的分析結果。最慢的方法 已被高亮顯示

參考:skyapm.github.io/

相關文章
相關標籤/搜索