教你用APM搭建Skywalking前言什么是APM?全称:ApplicationPerformanceManagement可以参考这里:ModernAPMsystem,基本上是指Google的Dapper(一个大型分布式系统的跟踪系统)的系统。通过跟踪请求的处理过程,应用系统可以跟踪前后端处理和服务器端调用的性能消耗。关于Dapper的介绍可以看这个链接:dapper,bigbully的大型分布式系统跟踪系统作者:刀五链接:https://www.zhihu.com/question/27994350/answer/118821214来源:知道版权属于作者。商业转载请联系作者授权,非商业转载请注明出处。最早使用APM是我在携程搬砖的时候。当时用的是大众点评开源的dianping/cat框架。后来又来了一家新公司,因为历史包袱有点大,跟踪性能问题太麻烦。我用了NewRelic|现代软件的实时洞察,newrelic是按照CPU核心数和内存数收费的,太贵了,我们放弃了。后来我们调查了市场上其他的解决方案,看到这个知乎上的讨论给了很多东西。有没有什么知名的开源apm(ApplicationPerformanceManagement)工具?当时看到naver/pinpoint和apache/incubator-skywalking都很好。一个是韩国搜索团队开源的,一个是国内个人用户开源的。考虑到表分库组件sharding-jdbc-dangdang,skywalking也需要相应的支持,所以决定使用skywalking来试试。然后我又跑了。不好意思在那里留了一个坑,没有继续建。到了新公司什么都用PHP/Python/Java写,刚开始的两三个月也没在意。最近没太忙,新公司的服务器API被我临时拉进了dotnet核心技术栈,233...同时发现现在的EF框架偶尔会写SQL,性能很差由于粗心大意,在测试环境中基本看不到,在生产中可能会爆炸。前段时间看到dalao青竹写了dotnetcoreagent,爽歪歪开始拉帮结派了。开始搭建skywalkinggithub:incubator-skywalking当前release版本为5.0RC2,最新版本6.X正在开发中。所以我目前正在基于5.0RC2构建它。官方精灵解决方案在这里:incubator-skywalking/blob/5.x/docs/README.md的中文文档在这里:incubator-skywalking/blob/5.x/docs/README_ZH.md我还是整个部署码头工人今天在这里。以下操作是从JaredTan95/skywalking-dockerdalao准备的docker部署。前提条件:dockerelasticsearch启动Elasticsearch#Elasticsearch版本需要5.xdockerrun-p9200:9200-p9300:9300-ecluster.name=elasticsearch-expack.security.enabled=false--name=elasticsearch--restart=always-dwutang/elasticsearch-上海专区启动。访问http://localhost:9200看看。内容显示ES已经正常启动。{"name":"_PNUyiW","cluster_name":"elasticsearch","cluster_uuid":"","version":{"number":"5.6.10","build_hash":"b727a60","build_date":"2018-06-06T15:48:34.860Z","build_snapshot":false,"lucene_version":"6.6.1"},"tagline":"YouKnow,forSearch"}然后使用dockerinspectelasticsearch|grepIPAddress查看当前elasticsearch的IP。??dockerinspectelasticsearch|grepIPAddress"SecondaryIPAddresses":null,"IPAddress":"","IPAddress":"172.27.0.2",启动SkywalkingUI+Skywalkingcollectordalaowutang的wutang/skywalking-docker已经将UI和collector打包成一面镜子,可以独立安装。所以我这里也是用这个方案dockerrun-p8080:8080-p10800:10800-p11800:11800-p12800:12800-eES_CLUSTER_NAME=elasticsearch-eES_ADDRESSES=elasticsearchIP上一步得到:9300-dwutang/skywalking-docker:5.x启动后打开localhost:8080,如果UI页面没有500/404错误,说明整个系统已经正常启动了。PS:默认账号密码为:adminadmin,可以在dockerrun中指定UI_ADMIN_PASSWORD环境变量自定义密码。如果有错误,大概率是ES没有连接上。On,查看ES是否还活着,如果没有,进入容器查看日志。日志的默认路径:/apache-skywalking-apm-incubating/logsAgent访问目前有Java/C#(dotnetcore)/Node.js对应的,Java支持最多,其他两个基本都是一些框架更主流。对应代理框架链接:dotnetcore:OpenSkywalking/skywalking-netcorenode.js:OpenSkywalking/skywalking-nodejs理论上应该遵循http://opentracing.io/API标准。Java代理主仓库都有,去发布就行了。今天我们必须使用dotnetcore。目前dotnetcore支持的库和中间件有以下几种:ASP.NETCore.NETCoreBCL类型(HttpClient和SqlClient)EntityFrameworkCoreNpgsql.EntityFrameworkCore.PostgreSQLPomelo.EntityFrameworkCore.MySqlCAP嗯,该有的都有。先介绍SkyWalking.AspNetCore的Package.dotnet添加包SkyWalking。AspNetCore--version0.3.0酌情添加SkyWalking.Diagnostics.EntityFrameworkCore,SkyWalking.Diagnostics.HttpClient,SkyWalking.Diagnostics.EntityFrameworkCore.Npgsql,SkyWalking.Diagnostics.EntityFrameworkCore.Pomelo.MySql等...或者直接在xxx.csproj新增下面这些包。
