微服务-Skywalking监控应用性能-创新互联
Skywalking
SkyWalking开源项目由吴晟于2015年创建,同年10月在GitHub上作为个人项目开源。
创新互联是一家集网站建设,安新企业网站建设,安新品牌网站建设,网站定制,安新网站建设报价,网络营销,网络优化,安新网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。SkyWalking项目的核心目标,是针对微服务、Cloud Native、容器化架构,提供应用性能监控(APM)和分布式调用链追踪能力。
2017年11月,SkyWalking社区正式决定,寻求加入Apache基金会,希望能使项目成为更为开放、全球化和强大的APM开源产品,并加强来自社区的合作和交流。最终实现构建一款功能强大、简单易用的开源APM产品。
2017年12月8日,Apache软件基金会孵化器项目管理委员会 ASF IPMC宣布“SkyWalking全票通过,进入Apache孵化器”。
架构图
官方版:https://github.com/apache/incubator-skywalking
.Net core Agent + Skywalking
架构图Skywalking理解
当我们用很多服务时,各个服务间的调用关系是怎么样的?各个服务单调用的顺序时间性能怎么样?服务出错了,到底是哪个服务引起的?这些问题我们用什么方案解决呢,以前的方式是各个系统自己单独做日志,
出了问题从暴出问题的服务开始一个一个服务的排查,耗时耗力,有些日志不全的,还不一定查得出来。好在现在有Skywalking链路追踪系统,可以不用写任何代码,就追踪到各个服务间的调用关系和性能状态等。
什么是APM
APM = Application Performance Management,即应用性能管理,主要是针对企业级应用软件市场,对企业系统实施即时监控,以实现对应用程序性能管理和故障管理的系统化的解决方案。
APM的覆盖范围包括五个层次的实现:终端用户体验,应用架构映射,应用事务的分析,深度应用诊断,和数据分析。
过去,企业的IT部门在收集系统性能参数时,一般重点关注为最终用户提供服务的硬件组件的利用率,如CPU利用率、内存占用、网络吞吐量。虽然这种方法也提供了一些宝贵的信息,但却忽视了最重要的因素:最终用户的响应时间。
现在,通过事务处理过程监测、模拟等手段,可以真实测量用户响应时间,此外还可以报告谁正在使用某一应用、该应用的使用频率以及用户所进行的事务处理过程是否成功完成、发生错误时的参数与堆栈调用信息、数据库查询语句跟踪等。
本文将从0开始搭建两个webapi项目,使用Skywalking来追踪他们之间的调用关系及响应时间。开发环境为VisualStudio2019
1:安装Skywalking,可参考:https://www.cnblogs.com/sunyuliang/p/11422576.html,本列中搭建好后的Skywalking服务器地址为:192.168.150.134
2:打开VS创建一个demo1的webapi项目。 2.1:为项目添加NuGet程序包SkyAPM.Agent.AspNetCore的引用 2.2,在项目根目录添加skyapm.json文件,并添加下以内容,其中的Servers结点的IP地址根据实际情况换成自己的服务器IP{
"SkyWalking": {
"ServiceName": "Demo01",
"Namespace": "",
"HeaderVersions": [
"sw6"
],
"Sampling": {
"SamplePer3Secs": -1,
"Percentage": -1.0
},
"Logging": {
"Level": "Debug",
"FilePath": "logs/skyapm-{Date}.log"
},
"Transport": {
"Interval": 3000,
"ProtocolVersion": "v6",
"QueueSize": 30000,
"BatchSize": 3000,
"gRPC": {
"Servers": "192.168.150.134:11800",
"Timeout": 10000,
"ConnectTimeout": 10000,
"ReportTimeout": 600000
}
}
}
}
2.3: 将skyapm.json文件的属性”复制到输出目录“ 修改为 ”如果较新则复制”
2.4:展开项目的Properties,打开launchSettings.json文件,在其中的环境变量中加入 "SKYWALKING__SERVICENAME": "asp-net-core-frontend"
2.5:到目前skywalking就已经成功引入到系统中了。接下来我们来验证一下是否正常,直接Ctrl+F5启动项目,访问https://localhost:44313/api/values
2.6:访问Skywalking管理后台(记得替换一下IP)http://192.168.150.134:8080/trace 。手动选一下时间范围,结束时间选明天(选当时时间会搜索不到数据,不知道是时区还是skywalking的bug),点击搜索。可以看到本次访问的追踪信息已经同步到了Skywalking中。
以上单个系统的追踪就完成了,接下来我们再创建一个项目,步骤和第2步基本一样,看看多系统的追踪,这个才是Skywalking的价值所在。
3:另外再打开一个VS创建一个demo02的webapi项目。 3.1:为项目添加NuGet程序包SkyAPM.Agent.AspNetCore的引用 3.2,在项目根目录添加skyapm.json文件,并添加下以内容,其中的Servers结点的IP地址根据实际情况换成自己的服务器IP。其中ServiceName结点设置为:Demo02{
"SkyWalking": {
"ServiceName": "Demo02",
"Namespace": "",
"HeaderVersions": [
"sw6"
],
"Sampling": {
"SamplePer3Secs": -1,
"Percentage": -1.0
},
"Logging": {
"Level": "Debug",
"FilePath": "logs/skyapm-{Date}.log"
},
"Transport": {
"Interval": 3000,
"ProtocolVersion": "v6",
"QueueSize": 30000,
"BatchSize": 3000,
"gRPC": {
"Servers": "192.168.150.134:11800",
"Timeout": 10000,
"ConnectTimeout": 10000,
"ReportTimeout": 600000
}
}
}
}
3.3: 将skyapm.json文件的属性”复制到输出目录“ 修改为 ”如果较新则复制”
3.4:展开项目的Properties,打开launchSettings.json文件,在其中的环境变量中加入 "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore"
3.5:在ValuesController.cs中添加引用: System.Net.Http ,通过HttpClient依次调用Demo01的两个方法,里面的https://localhost:44313对应为我们的Demo01项目。具体Get方法代码如下:
// GET api/values [HttpGet]
public async Task Get()
{
var client = new HttpClient();
await client.GetStringAsync("https://localhost:44313/api/values/1");
returnawait client.GetStringAsync("https://localhost:44313/api/values");
}
3.6:Ctrl+F5启动项目,访问http://localhost:21143/api/values
3.7:访问Skywalking管理后台(记得替换一下IP)http://192.168.150.134:8080/trace 。手动选一下时间范围,结束时间选明天(选当时时间会搜索不到数据,不知道是时区还是skywalking的bug),点击搜索。可以看到本次访问两系统单的调用关系图已经同步到了Skywalking中
以上多个系统间的追踪也就都完成了,完全不用写代码,配置一下就好了。
文章参考地址:
https://www.jianshu.com/p/3ddd986c7581
https://www.bbsmax.com/A/kvJ3YoQpdg/
当前名称:微服务-Skywalking监控应用性能-创新互联
分享路径:http://hbruida.cn/article/cepjcc.html