1. 程式人生 > >skywalking分散式鏈路追蹤監控系統部署

skywalking分散式鏈路追蹤監控系統部署

SkyWalking 是針對分散式系統的 APM 系統,也被稱為分散式追蹤系統

  • 自動監控和手動監控可以同時使用,使用手動監控彌補自動監控不支援的元件,甚至私有化元件。

  • 純 Java 後端分析程式,提供 RESTful 服務,可為其他語言探針提供分析能力。

  • 高效能純流式分析

    下載JDK1.8

    wget http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz #wget命令可能下載不了,自行想辦法下載

    解壓JDK1.8

    #解壓到指定目錄 tar -zxvf ./jdk-8u144-linux-x64.tar.gz -C /usr/local/ #最終結果/usr/local/jdk1.8.0_144


    配置環境變數

    #vim /etc/profile

    JAVA_HOME=/usr/local/jdk1.8.0_144

    JRE_HOME=/usr/local/jdk1.8.0_144/jre

    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

    export PATH=$PATH:$JAVA_HOME:$JRE_HOME:$CLASSPATH

    安裝Elasticsearch5.5.2

    #wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz

    解壓安裝包

    #解壓到指定目錄

    tar -zxvf ./elasticsearch-5.5.2.tar.gz -C /usr/local/

    #最終結果/usr/local/elasticsearch-5.5.2

    #改變許可權

    chown -R elk:elk /usr/local/elasticsearch-5.5.2/

    編輯limits.conf配置檔案, 新增類似如下內容:

    vi /etc/security/limits.conf #新增如下內容: *  soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096

    修改90-nproc.conf配置檔案

    vi /etc/security/limits.d/90-nproc.conf #修改如下內容: * soft nproc 1024 #修改為 * soft nproc 2048

    修改配置sysctl.conf

    vi /etc/sysctl.conf #新增下面配置: vm.max_map_count=655360 #並執行命令: sysctl -p

    直接執行elasticsearch

    #建立elasticsearch使用者

    useradd elk

    #切換使用者

    su elk #進入目錄 cd /usr/local/elasticsearch-5.5.2 #執行 ./bin/elasticsearch -d

    下載skywalking

    #wget http://www-eu.apache.org/dist/incubator/skywalking/5.0.0-beta2/apache-skywalking-apm-incubating-5.0.0-beta2.tar.gz

    解壓skywalking

    tar -xf apache-skywalking-apm-incubating-5.0.0-beta2.tar.gz

    mv apache-skywalking-apm-incubating skywalking 

    修改配置檔案,將以下Localhost修改成本機IP地址,如果elasticsearch是分開安裝,修改成elasticsearch本機ip

    vim /root/skywalking/config/application.yml

    naming:

      jetty:

        #OS real network IP(binding required), for agent to find collector cluster

        host: localhost

        port: 10800

        contextPath: /

    cache:

    #  guava:

      caffeine:

    remote:

      gRPC:

        # OS real network IP(binding required), for collector nodes communicate with each other in cluster. collectorN --(gRPC) --> collectorM

        host:localhost

        port: 11800

    agent_gRPC:

      gRPC:

        #OS real network IP(binding required), for agent to uplink data(trace/metrics) to collector. agent--(gRPC)--> collector

        host: localhost

        port: 11800

        # Set these two setting to open ssl

        #sslCertChainFile: $path

        #sslPrivateKeyFile: $path


        # Set your own token to active auth

        #authentication: xxxxxx

    agent_jetty:

      jetty:

        # OS real network IP(binding required), for agent to uplink data(trace/metrics) to collector through HTTP. agent--(HTTP)--> collector

        # SkyWalking native Java/.Net/node.js agents don't use this.

        # Open this for other implementor.

        host: localhost

        port: 12800

        contextPath: /

    analysis_register:

      default:

    analysis_jvm:

      default:

    analysis_segment_parser:

      default:

        bufferFilePath: ../buffer/

        bufferOffsetMaxFileSize: 10M

        bufferSegmentMaxFileSize: 500M

        bufferFileCleanWhenRestart: true

    ui:

      jetty:

        # Stay in `localhost` if UI starts up in default mode.

        # Change it to OS real network IP(binding required), if deploy collector in different machine.

        host:localhost

        port: 12800

        contextPath: /

    storage:

      elasticsearch:

        clusterName: CollectorDBCluster

        clusterTransportSniffer: true

        clusterNodes:localhost:9300

        indexShardsNumber: 2

        indexReplicasNumber: 0

        highPerformanceMode: true

    修改web控制資訊,將127.0.0.1修改成本地真實ip


    vim skywalking/webapp/webapp.yml 


    server:

      port: 8080


    collector:

      path: /graphql

      ribbon:

        ReadTimeout: 10000

        listOfServers:127.0.0.1:10800


    security:

      user:

        admin:

          password: admin

    啟動skywalking

    cd skywalking/bin

    #啟動Collector、WebUI

    ./startup.sh

    SkyWalking監控介面URL: http://127.0.0.1:8080/#/monitor/dashboard

    image.png

    部署探針

    拷貝skywalking-agent目錄到需要監控的節點伺服器上,探針包含整個目錄,請不要改變目錄結構

    +-- skywalking-agent

        +-- activations

             apm-toolkit-log4j-1.x-activation.jar

             apm-toolkit-log4j-2.x-activation.jar

             apm-toolkit-logback-1.x-activation.jar

             ...

        +-- config

             agent.config  

        +-- plugins

             apm-dubbo-plugin.jar

             apm-feign-default-http-9.x.jar

             apm-httpClient-4.x-plugin.jar

             .....

        skywalking-agent.jar

    修改agent配置檔案,將127.0.0.1修改成skywalking伺服器ip地址

    vim /usr/local/agent/config/agent.config 


    # 當前的應用編碼,最終會顯示在webui上。

    # 建議一個應用的多個例項,使用有相同的application_code。請使用英文

    agent.application_code=Your_ApplicationName


    # 每三秒取樣的Trace數量

    # 預設為負數,代表在保證不超過記憶體Buffer區的前提下,採集所有的Trace

    # agent.sample_n_per_3_secs=-1


    # 設定需要忽略的請求地址

    # 預設配置如下

    # agent.ignore_suffix=.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg


    # 探針除錯開關,如果設定為true,探針會將所有操作位元組碼的類輸出到/debugging目錄下

    # skywalking團隊可能在除錯,需要此檔案

    # agent.is_open_debugging_class = true


    # 對應Collector的config/application.yml配置檔案中 agent_server/jetty/port 配置內容

    # 例如:

    # 單節點配置:SERVERS="127.0.0.1:8080" 

    # 叢集配置:SERVERS="10.2.45.126:8080,10.2.45.127:7600" 

    collector.servers=127.0.0.1:10800


    # 日誌檔名稱字首

    logging.file_name=skywalking-agent.log


    # 日誌檔案最大大小

    # 如果超過此大小,則會生成新檔案。

    # 預設為300M

    logging.max_file_size=314572800


    # 日誌級別,預設為DEBUG。

    logging.level=DEBUG


    如果是容器用到tomcat話,新增catalina.sh如下配置

    # vim /root/test/bin/catalina.sh

    CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/agent/skywalking-agent.jar -Dskywalking.agent.application_code=test" ; export CATALINA_OPTS

    如果一臺伺服器上跑多個tomcat例項, 只需修改-Dskywalking.agent.application_code=test(將這個值修改成應用名)

    如果是jar包啟動,新增 以下資訊到啟動指令碼中

    java -javaagent:/root/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.application_code=test

    如果沒有啟動指令碼,直接在命令列中啟動

    java -javaagent:/root/skywalking/agent/skywalking-agent.jar -Dserver.port=8084 -Dskywalking.agent.application_code=test -jar test.jar &

            -Dserver.port  應用埠

            -Dskywalking.agent.application_code  監控時顯示的應用名稱,如有多個應用,根據自行應用程式修改

            test.jar jar包名稱

    監控畫面

    image.png

    image.pngimage.png