Skywalking部署+NetCore客户端
一、介绍
应用官方的说法:Apache SkyWalking是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案
GitHub地址:https://github.com/apache/skywalking
二、准备工作
Skywalking的架构分成三大块:
- agent:探针,主要与我们的api或者app之类的集成在一起,用于收集上传客户端信息,然后发送到collector。
- oap: 主要用于收集agent发送过来的信息,并持久化到相应存储中
- ui:展示收集在存储中的信息
这次主要会使用docker去部署oap
和ui
这2个模块(查看skywalking的github库会发现官方已经为我们准备好了相关的docker部署文件)。
我们需要准备2样东西即可:
- skywalking为我们准备的Docker相关文件:打开skywalking的github,下载master分之下的Docker文件夹。
- skywalking对应系统的压缩包:【点击这里下载】,下载完成后将压缩包名称改成
apache-skywalking-apm-bin
,因为在skywaking为我们准备的Docker配置文件中使用的是这个名称ENV DIST_NAME=apache-skywalking-apm-bin \
,COPY "$DIST_NAME.tar.gz" /
,后面没有带版本号。 - 将
apache-skywalking-apm-bin.tar.gz
分别拷贝到docker
文件夹的oap
、ui
中。
三、部署
这里我们使用docker文件夹中的docker-compose.yml
文件进行部署。查看其中内容,会看到需要我们先准备好2个docker镜像,一个是skywalking/oap
,一个是skywalking/ui
。
...
oap:
image: skywalking/oap
...
ui:
image: skywalking/ui
...
上一步中我们已经准备好了所有的东西,那这里其实只需要使用docker的builder命令来创建这2个镜像即可
- 这里需要注意下,需要修改一下
Dockerfile.oap
和Dockerfile.ui
文件里的内容
...
RUN set -ex; \
...
mv "$DIST_NAME" skywalking; \
# 修改时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone
WORKDIR skywalking
...
生成oap
和ui
镜像
# 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项目作为测试。
- 新建webapi项目
dotnet new webapi -n skywalkingdemo --no-https
- 添加探针程序包:
dotnet add package SkyAPM.Agent.AspNetCore
- 添加环境变量(直接修改
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"
}
}
}
- 添加
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所在服务器的地址
# 执行命令之后会自动生成与上面配置文件内容一样的文件
- 这里需要将文件设置成如果较新则复制(修改项目的
- F5或者
dotnet run
运行项目即可看到在skywalking的管理页面里看到多了一个service
- 访问
localhost:10009/api/values
和localhost:10009/api/values/1
就会看到相关访问的记录以及统计信息。
Skywalking部署+NetCore客户端的更多相关文章
- Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践(二)
Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践(一) 接上一篇 3. Nginx配置反向代理 3.1 cnetos 安装nginx 首先,我们需要在服务器上安装N ...
- Skywalking部署常见问题以及注意事项
Skywalking部署常见问题以及注意事项 Intro SkyWalking 创建与2015年,提供分布式追踪功能.从5.x开始,项目进化为一个完成功能的Application Performanc ...
- 高性能微服务网关.NETCore客户端Kong.Net开源发布
前言 项目地址:https://github.com/lianggx/Kong.Net 你的支持使我们更加强大,请单击 star 让更多的 .NETCore 认识它. 拥抱开源的脚步,我们从来都是一直 ...
- Office 365 系列二 ------- 如何批量部署Office 客户端
针对于第一篇文章所讲的,我们最用使用用户可以单个点击进行安装,但是如果我们终端用户太多的情况,不可能大家都点击单个文件进行安装了,这样子既耗费时间也耗费 公司的网络带宽,那么我们可以采取离线下载的方式 ...
- 使用saltstack批量部署服务器运行环境事例——批量部署nagios客户端
之前关于搭建web服务器集群实验的这篇文章http://www.cnblogs.com/cjyfff/p/3553579.html中,关于如何用saltstack批量部署服务器这一点当时没有记录到文章 ...
- 在net安装程序中部署oracle客户端全攻略
在net安装程序中部署oracle客户端全攻略 主要的是要做三件工作: 打包文件,写注册表,注册环境变量说明:我的oracle版本为9, 在2000 advanced server 上测试通过,可以正 ...
- ubuntu16.04-x64系统中Jexus web server部署.NetCore和端口分析引发的猜想!
您有这样的牢骚么? 有一周没更新博客了,简单说下在干什么吧:主要是公司安排对接某旅游大公司的接口,接口数量倒也就10个左右,对接完后还需要加入到业务系统中和App端,因此还是需要花点时间的:时间上来说 ...
- Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践(一)
环境 本地 win7 服务器:Virtual Box 上的Centos ssh工具: Xshell 文件传输: xftp 1.在本地创建asp.net core应用发布 1.1 使用Vs2017 新建 ...
- Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践
原文:Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践 环境 本地 win7 服务器:Virtual Box 上的Centos ssh工具: Xshell 文件传输 ...
随机推荐
- Cobbler——无人值守安装多种版本多种配置操作系统
Cobbler Web 图形界面也能实现类似的导入功能,可以参见下一节举了一个Cobbler Web的用法: cobbler 添加网络同步仓库(Reposync用法)
- $y=\sin(\omega x)$平移到$y=\sin (\omega x+\varphi)$动态过程(交互式)
可以拖动滑动条的\(\omega\)和\(\varphi\)看动态效果
- vue-cli中模拟数据的两种方法
我所使用的是新版vue-cli 首先进行所需插件的安装,vue-resource,json-server,proxyTable. 目录结构如图 在main.js中引入vue-resource模块,Vu ...
- Java-Dom4jHelper工具类
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import ja ...
- ML paper 导图笔记.md
<Learning Structured Representation for Text Classification via Reinforcement Learning> <基于 ...
- The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online(2018 青岛网络预选赛)
A题 A Live Love 原题链接:https://pintia.cn/problem-sets/1036903825309761536/problems/1041155943483625472 ...
- 【CUDA 基础】3.3 并行性表现
title: [CUDA 基础]3.3 并行性表现 categories: - CUDA - Freshman tags: - nvprof toc: true date: 2018-04-15 21 ...
- less命令:查看文件内容
less 命令的作用和 more 十分类似,都用来浏览文本文件中的内容,不同之处在于,使用 more 命令浏览文件内容时,只能不断向后翻看,而使用 less 命令浏览,既可以向后翻看,也可以向前翻看. ...
- Unity3D面试问题
注意,是问题,不是笔试题哦.这些是我最近面试北京各公司总结的一些被问到的还算典型的问题.跟大家分享一下.答案是我自己的,不保证标准和完整. 哎,公司年底开人,又校招一群便宜的小鬼……桑死心了……好在找 ...
- vue-cli 4.0.5 配置环境变量样例
在项目根目录下建 .env 文件,环境变量无论运行何种模式均可获取其设置值. vue 中主要有三种模式: development.test.production,在 package.json 中目前三 ...