一、介绍

应用官方的说法: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就会看到相关访问的记录以及统计信息。

Skywalking部署+NetCore客户端的更多相关文章

  1. Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践(二)

    Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践(一) 接上一篇 3. Nginx配置反向代理 3.1 cnetos 安装nginx 首先,我们需要在服务器上安装N ...

  2. Skywalking部署常见问题以及注意事项

    Skywalking部署常见问题以及注意事项 Intro SkyWalking 创建与2015年,提供分布式追踪功能.从5.x开始,项目进化为一个完成功能的Application Performanc ...

  3. 高性能微服务网关.NETCore客户端Kong.Net开源发布

    前言 项目地址:https://github.com/lianggx/Kong.Net 你的支持使我们更加强大,请单击 star 让更多的 .NETCore 认识它. 拥抱开源的脚步,我们从来都是一直 ...

  4. Office 365 系列二 ------- 如何批量部署Office 客户端

    针对于第一篇文章所讲的,我们最用使用用户可以单个点击进行安装,但是如果我们终端用户太多的情况,不可能大家都点击单个文件进行安装了,这样子既耗费时间也耗费 公司的网络带宽,那么我们可以采取离线下载的方式 ...

  5. 使用saltstack批量部署服务器运行环境事例——批量部署nagios客户端

    之前关于搭建web服务器集群实验的这篇文章http://www.cnblogs.com/cjyfff/p/3553579.html中,关于如何用saltstack批量部署服务器这一点当时没有记录到文章 ...

  6. 在net安装程序中部署oracle客户端全攻略

    在net安装程序中部署oracle客户端全攻略 主要的是要做三件工作: 打包文件,写注册表,注册环境变量说明:我的oracle版本为9, 在2000 advanced server 上测试通过,可以正 ...

  7. ubuntu16.04-x64系统中Jexus web server部署.NetCore和端口分析引发的猜想!

    您有这样的牢骚么? 有一周没更新博客了,简单说下在干什么吧:主要是公司安排对接某旅游大公司的接口,接口数量倒也就10个左右,对接完后还需要加入到业务系统中和App端,因此还是需要花点时间的:时间上来说 ...

  8. Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践(一)

    环境 本地 win7 服务器:Virtual Box 上的Centos ssh工具: Xshell 文件传输: xftp 1.在本地创建asp.net core应用发布 1.1 使用Vs2017 新建 ...

  9. Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践

    原文:Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践 环境 本地 win7 服务器:Virtual Box 上的Centos ssh工具: Xshell 文件传输 ...

随机推荐

  1. pycharm 安装 tensorflow

    1. 安装python 3.5  链接:https://www.python.org/downloads/release/python-352/ 1.1如果之前安装了其他版本的,可以在你需要的项目中, ...

  2. Javascript设计模式之发布-订阅模式

    简介 发布-订阅模式又叫做观察者模式,他定义了一种一对多的依赖关系,即当一个对象的状态发生改变的时候,所有依赖他的对象都会得到通知. 回忆曾经 作为一名前端开发人员,给DOM节点绑定事件可是再频繁不过 ...

  3. MongoDB——增删改查

    文档结构: { "_id": ObjectId("5d5e5de597eb2f0b70005d1a"), , "word_records": ...

  4. 【Winform-自定义控件】可以使用2种半透明的颜色来填充Button

    制作一个自定义按钮,使用2种半透明的颜色来填充Button 1.添加一个自定义控件类,并改变基类,继承自Button public partial class CustomControl1 : But ...

  5. TensorFlow使用记录 (八): 梯度修剪 和 Max-Norm Regularization

    梯度修剪 梯度修剪主要避免训练梯度爆炸的问题,一般来说使用了 Batch Normalization 就不必要使用梯度修剪了,但还是有必要理解下实现的 In TensorFlow, the optim ...

  6. Android_(控件)使用ListView显示Android系统中SD卡的文件列表

    使用ListView显示Android SD卡中的文件列表 父类布局activity_main.xml,子类布局line.xml(一个文件的单独存放) 运行截图: 程序结构: <?xml ver ...

  7. 对象中 new this

    构造函数 new后面调用函数,我们称为构造函数(首字母大写) Object() 我们把他视为一个构造函数,构造函数的本质就是一个函数,只不过构造函数的目的是为了创建新对象,为新对象进行初始化(设置对象 ...

  8. PHP-配置MySQL

    安装mysql 修改PHP配置文件 修改php安装路径下 php.ini extension=php_mysqli.dll 在代码路径下添加php文件,在里面编辑 <?php phpinfo() ...

  9. Partial Dependence Plot

    Partial Dependence就是用来解释某个特征和目标值y的关系的,一般是通过画出Partial Dependence Plot(PDP)来体现. PDP是依赖于模型本身的,所以我们需要先训练 ...

  10. Spring Boot注入RestTemplate ,出现空指针解决办法

    SpringBoot 注入RestTemplate 我看了一下大都是让我们在启动类里面加一个Bean配置代码如下 @Autowired private RestTemplateBuilder buil ...