Skywalking部署+NetCore客戶端

1、介紹

應用官方的說法:Apache SkyWalking是觀察性分析平臺和應用性能管理系統。提供分佈式追蹤、服務網格遙測分析、度量聚合和可視化一體化解決方案git

GitHub地址:https://github.com/apache/skywalkinggithub

2、準備工做

Skywalking的架構分紅三大塊:web

  1. agent:探針,主要與咱們的api或者app之類的集成在一塊兒,用於收集上傳客戶端信息,而後發送到collector。
  2. oap: 主要用於收集agent發送過來的信息,並持久化到相應存儲中
  3. ui:展現收集在存儲中的信息

此次主要會使用docker去部署oapui這2個模塊(查看skywalking的github庫會發現官方已經爲咱們準備好了相關的docker部署文件)。docker

咱們須要準備2樣東西便可:apache

  1. skywalking爲咱們準備的Docker相關文件:打開skywalking的github,下載master分之下的Docker文件夾。
  2. skywalking對應系統的壓縮包:【點擊這裏下載】,下載完成後將壓縮包名稱改爲apache-skywalking-apm-bin,由於在skywaking爲咱們準備的Docker配置文件中使用的是這個名稱ENV DIST_NAME=apache-skywalking-apm-bin \COPY "$DIST_NAME.tar.gz" /,後面沒有帶版本號。
  3. apache-skywalking-apm-bin.tar.gz分別拷貝到docker文件夾的oapui中。

3、部署

這裏咱們使用docker文件夾中的docker-compose.yml文件進行部署。查看其中內容,會看到須要咱們先準備好2個docker鏡像,一個是skywalking/oap,一個是skywalking/uijson

...
  oap:
    image: skywalking/oap
...
  ui:
    image: skywalking/ui
...

上一步中咱們已經準備好了全部的東西,那這裏其實只須要使用docker的builder命令來建立這2個鏡像便可api

  • 這裏須要注意下,須要修改一下Dockerfile.oapDockerfile.ui文件裏的內容
...
RUN set -ex; \
    ...
    mv "$DIST_NAME" skywalking; \
    # 修改時區
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone

WORKDIR skywalking
...

生成oapui鏡像瀏覽器

# oap
cd oap文件夾
docker build -t skywalking/oap -f Dockerfile.oap .

# ui
cd ui文件夾
docker build -t skywalking/ui -f Dockerfile.ui .
  • 官方推薦使用elasticsearch做爲存儲,並且細心的同窗可能在查看docker-compose.yml的時候也發現了構建的時候確實使用的是elasticsearch。可是在Dockerfile.oap文件中定義的確實h2做爲存儲,生成的鏡像會不會有問題?其實不會的,在docker-compose.yml中已經將鏡像的環境變量申明爲使用elasticsearch了。
...
    environment:
      SW_STORAGE: elasticsearch
      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
...

執行完上面的命令以後,使用docker images會看到已經生成了對應的鏡像。bash

REPOSITORY                    TAG                      IMAGE ID            CREATED             SIZE
skywalking/ui                 latest                   d2a316c65e4b        18 seconds ago      787MB
skywalking/oap                latest                   4a5995eacbe8        49 seconds ago      839MB

接下來就很簡單了,直接使用docker-compose將全部容器啓動起來就能夠了服務器

cd `docker-compose.yml所在文件夾`

docker-compose up -d

# 看到下面內容
Creating elasticsearch ... done
Creating oap           ... done
Creating ui            ... done

# 查看容器運行狀況
docker-compose ps
    Name                   Command               State                      Ports                   
----------------------------------------------------------------------------------------------------
elasticsearch   /usr/local/bin/docker-entr ...   Up      0.0.0.0:9200->9200/tcp,                    
                                                         0.0.0.0:9300->9300/tcp                     
oap             bash docker-entrypoint.sh        Up      0.0.0.0:11800->11800/tcp, 1234/tcp,        
                                                         0.0.0.0:12800->12800/tcp                   
ui              bash docker-entrypoint.sh        Up      0.0.0.0:8080->8080/tcp

使用瀏覽器打開127.0.0.1:8080,默認帳號密碼都是admin

到這裏,服務端相關的已經部署完畢。接下來就是客戶端引入skywalking探針了。

4、客戶端引入探針

這裏我用NetCore的webapi項目做爲測試。

  1. 新建webapi項目
    bash dotnet new webapi -n skywalkingdemo --no-https
  2. 添加探針程序包:
    bash dotnet add package SkyAPM.Agent.AspNetCore
  3. 添加環境變量(直接修改Properties/launchSettings.json):
    json { ... "skywalkingdemo": { "commandName": "Project", "launchBrowser": true, "launchUrl": "api/values", "applicationUrl": "http://localhost:10009", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", // 添加下面2個環境變量 "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore", "SKYWALKING__SERVICENAME": "hello" } } }
  4. 添加skywalking的配置文件(skyapm.json),內容以下:
    json { "SkyWalking": { "ServiceName": "hello", "Namespace": "", "HeaderVersions": [ "sw6" ], "Sampling": { "SamplePer3Secs": -1, "Percentage": -1.0 }, "Logging": { "Level": "Information", "FilePath": "logs/skyapm-{Date}.log" }, "Transport": { "Interval": 3000, "ProtocolVersion": "v6", "QueueSize": 30000, "BatchSize": 3000, "gRPC": { "Servers": "localhost:11800", "Timeout": 10000, "ConnectTimeout": 10000, "ReportTimeout": 600000 } } } }
    • 這裏須要將文件設置成若是較新則複製(修改項目的.csproj文件),添加以下配置
    <ItemGroup>
        <None Include="skyapm.json" CopyToOutputDirectory="PreserveNewest" />
    </ItemGroup>
    • 配置文件也能夠經過安裝skywalking的客戶端工具生成配置文件
    # 全局安裝工具
    dotnet tool install -g SkyAPM.DotNet.CLI
    # 生成skyapm配置文件
    dotnet skyapm config hello 172.16.102.111:11800
    # 這裏的地址填的是skywalking的oap所在服務器的地址
    # 執行命令以後會自動生成與上面配置文件內容同樣的文件
  5. F5或者dotnet run運行項目便可看到在skywalking的管理頁面裏看到多了一個service
  6. 訪問localhost:10009/api/valueslocalhost:10009/api/values/1就會看到相關訪問的記錄以及統計信息。
相關文章
相關標籤/搜索