利用 Skywalking 搭建 APM(應用性能管理)— 安裝與配置

1.什麼是 Skywalking

Skywalking 是一個APM系統,即應用性能監控系統,爲微服務架構和雲原生架構系統設計。它經過探針自動收集所需的指標,並進行分佈式追蹤。經過這些調用鏈路以及指標,Skywalking APM會感知應用間關係和服務間關係,並進行相應的指標統計。目前支持鏈路追蹤和監控應用組件以下,基本涵蓋主流框架和容器,如國產PRC Dubbo和motan等,國際化的spring boot,spring cloud都支持了java

skywalaking 分爲三部分: web

  • skywalking-collector:鏈路數據歸集器,數據能夠落地 Elasticsearch,單機也能夠落地H2,不推薦,H2僅做爲臨時演示用
  • skywalking-web:web可視化平臺,用來展現落地的數據
  • skywalking-agent:探針,用來收集和發送數據到歸集器

3.Skywalking 的版本選擇spring

Skywalking 目前的支持版本有 5.0.0-GA 、6.0.0-GA 和 6.1.0 版本,各個版本支持的 Elasticsearch 版本不一樣,對應的版本以下: apache

Skywalking 版本後端

JDK 版本瀏覽器

Elasticsearch 版本架構

下載地址併發

5.0.0-GAapp

jdk8+框架

5.x

zip tar

6.0.0-GA

jdk8+

6.x

zip tar

6.1.0

jdk8+

6.x

zip tar

若是下載地址無效,能夠到 Skywalking 的官網地址下載,http://skywalking.apache.org/

4.Skywalking 的下載安裝

因爲我本地系統是 Centos 7 ,本地環境安裝的 Elasticsearch 是 6.7.2 版本,所以我能夠選擇 6.0.0-GA 或 6.1.0 版本,我這裏選擇的是 6.1.0 版本,下載 Skywalking 很簡單,只須要執行 wget 命令,以下:

$> wget http://mirror.bit.edu.cn/apache/skywalking/6.1.0/apache-skywalking-apm-6.1.0.tar.gz

下載完成後,咱們進行解壓到 /opt 目錄下

$> tar -xvf apache-skywalking-apm-6.1.0.tar.gz -C /opt

解壓完成後,接下來須要進行 Skywalking 的相關配置

4.1 Skywalking collector 配置

collector 鏈路數據歸集器,主要用於數據落地,我這裏須要配置落地數據爲 Elasticsearch 6.7.2,collector 配置文件爲 /opt/apache-skywalking-apm-6.1.0/config/application.yml,配置單點的 collector 配置以下:

cluster:

standalone:

core:

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

# rest 服務地址和端口

restHost: ${SW_CORE_REST_HOST:localhost}

restPort: ${SW_CORE_REST_PORT:12800}

restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/}

# gRPC 服務地址和端口

gRPCHost: ${SW_CORE_GRPC_HOST:localhost}

gRPCPort: ${SW_CORE_GRPC_PORT:11800}

downsampling:

- Hour

- Day

- Month

# 設置度量數據的超時。超時過時後,度量數據將自動刪除.

# 單位分鐘

recordDataTTL: ${SW_CORE_RECORD_DATA_TTL:90}

# 單位分鐘

minuteMetricsDataTTL: ${SW_CORE_MINUTE_METRIC_DATA_TTL:90}

# 單位小時

hourMetricsDataTTL: ${SW_CORE_HOUR_METRIC_DATA_TTL:36}

# 單位天

dayMetricsDataTTL: ${SW_CORE_DAY_METRIC_DATA_TTL:45}

# 單位月

monthMetricsDataTTL: ${SW_CORE_MONTH_METRIC_DATA_TTL:18}

storage:

elasticsearch:

# elasticsearch 的集羣名稱

nameSpace: ${SW_NAMESPACE:"local-ES"}

# elasticsearch 集羣節點的地址及端口

clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.2.10:9200}

# elasticsearch 的用戶名和密碼

user: ${SW_ES_USER:""}

password: ${SW_ES_PASSWORD:""}

# 設置 elasticsearch 索引分片數量

indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}

# 設置 elasticsearch 索引副本數

indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}

# 批量處理配置

# 2000個請求執行一次批量

bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:2000}

# 20mb 刷新一次內存塊

bulkSize: ${SW_STORAGE_ES_BULK_SIZE:20}

# 不管請求的數量如何,每10秒刷新一次堆

flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10}

# 併發請求的數量

concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2}

# elasticsearch 查詢的最大數量

metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}

# elasticsearch 查詢段最大數量

segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}

   

4.2 Skywalking webApp 配置

Skywalking 的 WebApp 主要是用來展現落地的數據,所以只須要配置 Web 的端口及獲取數據的 collector 的IP和端口,webApp 配置文件地址爲 /opt/apache-skywalking-apm-6.1.0/webapp/webapp.yml 配置以下:

server:

port: 9000

collector:

path: /graphql

ribbon:

ReadTimeout: 10000

# 指向全部後端collector 的 restHost:restPort 配置,多個使用 , 分隔

listOfServers: localhost:12800

security:

user:

# username

admin:

# password

password: admin

4.3 Skywalking Agent 配置

Skywalking 的 Agent 主要用於收集和發送數據到 collector ,所以須要進行配置 Skywalking collector 的地址,Agent 的配置文件地址爲 /opt/apache-skywalking-apm-6.1.0/agent/config/agent.config,配置以下:

# 設置Agent命名空間

agent.namespace=${SW_AGENT_NAMESPACE:default-namespace}

# 設置服務名稱,會在 Skywalking UI 上顯示的名稱

agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}

# 每 3秒採集的樣本跟蹤比例,若是是負數則表示 100%採集

agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:-1}

# 啓用 Debug ,若是爲 true 則將把全部檢測到的類文件保存在"/debug"文件夾中

# agent.is_open_debugging_class = ${SW_AGENT_OPEN_DEBUG:true}

# 後端的 collector 端口及地址

collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.2.215:11800}

# 日誌級別

logging.level=${SW_LOGGING_LEVEL:DEBUG}

   

5 示例項目

建立一個 spring boot 項目,增長一個簡單的 RestConstroller 控制器,提供一個 rest 服務,代碼以下:

@RestController

public class HelloWorldController{

   

@RequestMapping(path={"/","/index"},produces=MediaType.APPLICATION_JSON_UTF8_VALUE)

public Map<String,Object> index(){

Map<String,Object> map=new LinkedHashMap<>();

map.put("A","a");

map.put("b",newBigDecimal("1.2"));

return map;

}

}

複製 /opt/apache-skywalking-apm-6.1.0/agent 目錄到項目的 target 目錄中,增長 VM options 參數 -javaagent 並指向到 agent\skywalking-agent.jar ,以下圖:

 

         啓動項目進行測試,請經過瀏覽器訪問 rest 服務,而後訪問 skywalking web 能夠查詢到剛纔的訪問。

 

相關文章
相關標籤/搜索