zoukankan      html  css  js  c++  java
  • Skywalking部署+NetCore客户端

    一、介绍

    应用官方的说法:Apache SkyWalking是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案

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

    二、准备工作

    Skywalking的架构分成三大块:

    1. agent:探针,主要与我们的api或者app之类的集成在一起,用于收集上传客户端信息,然后发送到collector。
    2. oap: 主要用于收集agent发送过来的信息,并持久化到相应存储中
    3. ui:展示收集在存储中的信息

    这次主要会使用docker去部署oapui这2个模块(查看skywalking的github库会发现官方已经为我们准备好了相关的docker部署文件)。

    我们需要准备2样东西即可:

    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中。

    三、部署

    这里我们使用docker文件夹中的docker-compose.yml文件进行部署。查看其中内容,会看到需要我们先准备好2个docker镜像,一个是skywalking/oap,一个是skywalking/ui

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

    上一步中我们已经准备好了所有的东西,那这里其实只需要使用docker的builder命令来创建这2个镜像即可

    • 这里需要注意下,需要修改一下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会看到已经生成了对应的镜像。

    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探针了。

    四、客户端引入探针

    这里我用NetCore的webapi项目作为测试。

    1. 新建webapi项目
      dotnet new webapi -n skywalkingdemo --no-https
      
    2. 添加探针程序包:
      dotnet add package SkyAPM.Agent.AspNetCore
      
    3. 添加环境变量(直接修改Properties/launchSettings.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),内容如下:
      {
        "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就会看到相关访问的记录以及统计信息。
  • 相关阅读:
    windows 10 上源码编译opengv | compile opengv on windows 10 from source
    ubuntu 16.04上源码编译libjpeg-turbo和使用教程 | compile and use libjpeg-turbo on ubuntu 16.04
    c 时间 学习
    cap文件的格式说明
    C#调用C++
    c/c++基础 const
    tomcat 简单安装配置说明
    言论
    近期任务
    解决mysql从windows迁移到centos出现乱码问题
  • 原文地址:https://www.cnblogs.com/hzgod/p/10895248.html
Copyright © 2011-2022 走看看