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就会看到相关访问的记录以及统计信息。
相关文章
相关标签/搜索