一、介绍

应用官方的说法: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. Linux常用命令type、date

    Linux命令类型: 内置命令(shell内置):cd is shell builtin 外部命令:命令 is /usr/bin/命令,在文件系统的某个路径下有一个与命令名称相应的可执行文件 type ...

  2. tbdr+mrt

    有关mrt的在tbdr的架构下的内存排布 system memory肯定是dither 我对这里把握比较大 rt0 rgba8 rt1 r8 这样像素排列是rgba8r8rgba8r8rgba8r8. ...

  3. 报表开发神器!DevExpress Reporting v19.1全平台新功能解析

    行业领先的.NET界面控件DevExpress Reporting全新发布了v19.1版本,本文主要为大家介绍.NET Reporting v19.1中发布的所有平台的新功能,欢迎下载v19.1试用, ...

  4. for 循环用了那么多次,但你真的了解它么?

    其实我们写代码的时候一直都在使用for循环,但是偶尔还是会纠结用哪一个循环. 一.基础的for循环 0.使用while也是一种循环方式,此处探究for相关的循环,就不做拓展了. 1.遍历数组的时候,初 ...

  5. 51 Nod 1092 回文字符串

    1092 回文字符串  基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串.每 ...

  6. HZOJ 20190722 visit (组合数学+数论)

    考试T2,考试时打了个$O(n^3)$dp暴力,思路还是很好想的,但细节也不少,然后滚动数组没清空,而且题又看错了,只得了10pts,真是血的教训. 题解: 其实看数据范围,给出了模数是否为质数,其实 ...

  7. PHP-异常-1

    PHP 错误处理 在 PHP 中,默认的错误处理很简单.一条消息会被发送到浏览器,这条消息带有文件名.行号以及一条描述错误的消息. 在创建脚本和 web 应用程序时,错误处理是一个重要的部分.如果您的 ...

  8. Inter IPP 处理图像数据的方法

    Inter IPP没有读取图片和保存图片的函数,需要结合opencv完成这个功能. opencv读到图片以后逐个像素点赋值给IPP显然是不可取的,方法如下: int main(int argc, ch ...

  9. Word文档怎么从第二页加页码

    1.首先将光标放到首页的最后位置 2.“页面布局”—“分隔符”—“下一页” 3.“插入”—“页码”—选一种样式的页码 4.将光标定位到第二页的页脚处,“设计”—取消“链接到前一条页眉” 5.将第二页的 ...

  10. 邻居子系统 之 更新neigh_update

    概述 neigh_update函数用来更新指定的邻居项,更新内容是硬件地址和状态,更新之后,会根据新状态设置其输出函数,CONNECTED状态则使用快速输出,否则使用慢速输出:如果是由原来的无效状态变 ...