SkyWalking鏈路監控(一):SkyWalking快速搭建

 

簡介

當分佈式系統服務比較多,特別是微服務,出現故障就很難排查。因此須要藉助APM 系統進行排查(Application Performance Management,即應用性能管理),SkyWalking是APM 系統的一種,相似的產品還有CAT、Zipkin、Pinpoint。java

SkyWalking和Pinpoint相比其餘系統,作到了無侵入性。Pinpoint出現的時間長,文檔也較爲豐富,爲多數公司使用。mysql

國人開源的APM產品SkyWalking,探針採集數據粒度相較於 Pinpoint 來講略粗,但性能表現優秀。於2019年進入到Apache 基金會的孵化器畢業成爲頂級項目;實屬後起之秀,本文推薦使用SkyWalking。linux

搭建SkyWalking

下載SkyWalking

官網下載SkyWalking APM,選擇對應的版本。web

下載以後解壓便可。spring

配置數據庫

Skywalking支持h二、mysql、ElasticSearch做爲數據存儲,官方推薦使用ElasticSearch。sql

根據具體業務,這裏使用最方便的h2數據庫作數據存儲。h2是Skywalking自帶的,爲一種內存數據庫。內存數據會由於服務故障、重啓而丟失,並不適合長時間監控的場景,因此須要將其更改成文件數據庫。數據庫

打開apache-skywalking-apm-es7-8.4.0\apache-skywalking-apm-bin-es7\config\application.yml文件,修改h2節點的url地址。apache

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

url: ${SW_STORAGE_H2_URL:jdbc:h2:tcp://127.0.0.1/~/skywalking-oap-db;AUTO_SERVER=TRUE}windows

啓動 h2 TCP

h2文件數據庫須要啓動 h2 TCP,不然Skywalking會由於監聽不到9092端口而啓動失敗。後端

  1. linux啓動 h2 TCP 的方式:

    新建啓動腳本,運行便可,啓動後就會在用戶目錄下(如administrator或root或home/user等用戶目錄)自動建立數據庫文件skywalking-oap-db。

    linux腳本以下

    #!/usr/bin/env sh
     
    PRG="$0"
    PRGDIR=`dirname "$PRG"`
    [ -z "$OAP_HOME" ] && OAP_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
     
    OAP_LOG_DIR="${OAP_HOME}/logs"
    JAVA_OPTS=" -Xms64M -Xmx256M"
     
    if [ ! -d "${OAP_HOME}/logs" ]; then
        mkdir -p "${OAP_LOG_DIR}"
    fi
     
    _RUNJAVA=${JAVA_HOME}/bin/java
    [ -z "$JAVA_HOME" ] && _RUNJAVA=java
     
    CLASSPATH="$OAP_HOME/config:$CLASSPATH"
    for i in "$OAP_HOME"/oap-libs/h2*.jar
    do
        CLASSPATH="$i:$CLASSPATH"
    done
     
    OAP_OPTIONS=" -Doap.logDir=${OAP_LOG_DIR}"
     
    # 若是須要遠程鏈接h2數據庫,需將-tcp改成-tcpAllowOthers
    eval exec "\\"$_RUNJAVA\\" ${JAVA_OPTS} ${OAP_OPTIONS} -classpath $CLASSPATH org.h2.tools.Server -tcp \\
            2>${OAP_LOG_DIR}/h2Tcp.log 1> /dev/null &"
     
    if [ $? -eq 0 ]; then
        sleep 1
    	echo "SkyWalking h2Tcp started successfully!"
    else
    	echo "SkyWalking h2Tcp started failure!"
    	exit 1
    fi
  2. windows啓動 h2 TCP 的方式:

    新建啓動腳本,運行便可。windows腳本以下

    @REM  若是須要遠程查看h2數據庫(tcp端口9092,頁面訪問端口8082),需將-tcp改成-tcpAllowOthers
     
    @echo off
     
    setlocal
    set OAP_PROCESS_TITLE=Skywalking-H2TcpServer
    set OAP_HOME=%~dp0%..
    set OAP_OPTS="-Xms64M -Xmx256M -Doap.logDir=%OAP_HOME%\\logs"
     
    set CLASSPATH=%OAP_HOME%\\config;.;
    set CLASSPATH=%OAP_HOME%\\oap-libs\\*;%CLASSPATH%
     
    if defined JAVA_HOME (
     set _EXECJAVA="%JAVA_HOME%\\bin\\java"
    )
     
    if not defined JAVA_HOME (
     echo "JAVA_HOME not set."
     set _EXECJAVA=java
    )
     
    start "%OAP_PROCESS_TITLE%" %_EXECJAVA% "%OAP_OPTS%" -cp "%CLASSPATH%" org.h2.tools.Server -tcp
    endlocal

設置Java Agent

Java Agent爲Java探針,是java命令的一個參數。虛擬機啓動的時候,在執行main方法前,會先找到javaagent 命令指定 jar 包,執行premain-class中的preman()方法。

設置方式以下:

複製apache-skywalking-apm-es7-8.4.0\apache-skywalking-apm-bin-es7\agent文件到監控目標服務器上,而後在啓動命令中添加參數:

  1. windows參數以下:

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    set SW_AGENT_NAME=eda-app-base-service
    set SW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.0.24:11800
    set JAVA_TOOL_OPTIONS=-javaagent:E:\\tech\\agent\\skywalking-agent.jar
    • SW_AGENT_NAME:設置服務名稱
    • SW_AGENT_COLLECTOR_BACKEND_SERVICES:後端的 collector 端口及地址,設置爲SkyWalking服務器IP:11800(默認端口)
    • JAVA_TOOL_OPTIONS:agent文件夾下skywalking-agent.jar位置
  2. Linux參數以下:

# SkyWalking Agent 配置
export SW_AGENT_NAME=demo-application # 配置 Agent 名字。通常來講,咱們直接使用 Spring Boot 項目的 `spring.application.name` 。
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 # 配置 Collector 地址。
export SW_AGENT_SPAN_LIMIT=2000 # 配置鏈路的最大 Span 數量。通常狀況下,不須要配置,默認爲 300 。主要考慮,有些新上 SkyWalking Agent 的項目,代碼可能比較糟糕。
export JAVA_AGENT=-javaagent:/Users/yunai/skywalking/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar # SkyWalking Agent jar 地址。

# Jar 啓動
java -jar $JAVA_AGENT -jar lab-39-demo-2.2.2.RELEASE.jar

具體變量可能因版本有所變化(本文版本爲8.4.0),更多變量可在agent\config\agent.config查看。

啓動運行

  1. 首先啓動 h2 TCP

  2. 啓動apache-skywalking-apm-es7-8.4.0\apache-skywalking-apm-bin-es7\bin\startup.bat,它會同時啓動Skywalking-Webapp、Skywalking-Collector兩個服務。

  3. 啓動業務服務

  4. 訪問http://127.0.0.1:8080,便可看到SkyWalking界面

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    若是8080端口被佔用,能夠經過apache-skywalking-apm-es7-8.4.0\apache-skywalking-apm-bin-es7\webapp\webapp.yml文件修改端口。

相關文章
相關標籤/搜索