咨询热线:13680957231 联系人:刘伯堂 地址:郑州市南阳路北段
手把手教你搭APM之Skywalking搭建指南(支持Java/C#/Node.js)
来源:沙皇国际官方网址 发布时间:2019-07-01 点击量:285
前言
什么是APM?全称:Application Performance Management
可以参考这里:
现代APM体系,基本都是参考Google的Dapper(大规模分布式系统的跟踪系统)的体系来做的。通过跟踪请求的处理过程,来对应用系统在前后端处理、服务端调用的性能消耗进行跟踪,关于Dapper的介绍可以看这个链接:Dapper,大规模分布式系统的跟踪系统 by bigbully作者:刀把五链接:https://www.zhihu.com/question/27994350/answer/118821214来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
最早使用APM还是在携程里面搬砖的时候,当时使用的是大宗点评网开源的dianping/cat框架.
后来到了新公司,因为历史包袱有点多,追踪性能问题太麻烦,用过收费的New Relic | Real-time insights for modern software ,newrelic按照CPU核数和内存来收费,实在太贵了我们就放弃了.
再后来我们调研一下市面的其他方案,看到了这个知乎讨论给了不少的东西.
有什么知名的开源apm(Application Performance Management)工具吗?
当时看到naver/pinpoint 和apache/incubator-skywalking 都很不错.
一个是韩国搜索团队开源的,一个是国内个人用户开源,已经到了apache孵化器了.
于是两个都试用了一下, 最后由于那时候马上考虑上分表分库组件 sharding-jdbc-dangdang, skywalking也要对应的支持,所以决定用skywalking试试.
再后来又跑路了,不好意思给那边留下坑就没继续搭建看. 到了新公司PHP/Python/Java什么都写,开始两三个月也没管这个.
最近不是太忙了,新公司这边服务端API暂时被我带成了dotnet core技术栈,233...
同时发现当前用的EF框架偶尔会因为不小心就写出了性能很差的SQL,测试环境基本看不出来,到了生产可能就炸.
前阵子看到dalao 倾竹 把dotnet core agent写出来了, 于是爽歪歪就开始gang了.
开始搭建skywalking
github:incubator-skywalking
当前release版本为5.0RC2,最新版本6.X正在开发中.
所以当前我这里是基于5.0 RC2来搭建的.
官方向导方案在这里:incubator-skywalking/blob/5.x/docs/README.md
中文文档在这里:incubator-skywalking/blob/5.x/docs/README_ZH.md
我这里今天还是全程docker部署.
以下操作来自JaredTan95/skywalking-docker dalao准备的docker部署.
预备条件:
docker
elasticsearch
启动Elasticsearch
# Elasticsearch版本要求5.xdocker run -p 9200:9200 -p 9300:9300 -e cluster.name=elasticsearch -e xpack.security.enabled=false --name=elasticsearch --restart=always -d wutang/elasticsearch-shanghai-zone
启动好了访问一下 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": "You Know, for Search"}
接着使用 docker inspect elasticsearch |grep IPAddress 查看一下 elasticsearch 当前IP.
➜ ✗ docker inspect elasticsearch |grep IPAddress "SecondaryIPAddresses": null, "IPAddress": "", "IPAddress": "172.27.0.2",
启动 Skywalking UI + Skywalking collector
dalao wutang的wutang/skywalking-docker已经把UI和collector打包到一个镜像里面了,完全可以独立安装.
所以我这里采用的也是这个方案.
docker run -p 8080:8080 -p 10800:10800 -p 11800:11800 -p 12800:12800 -e ES_CLUSTER_NAME=elasticsearch -e ES_ADDRESSES=上一步拿到的elasticsearchIP:9300 -d wutang/skywalking-docker:5.x
启动好了之后打开 localhost:8080,如果UI页面没有500/404错误,说明整个系统已经正常启动了.
PS:默认账号密码是:admin admin,可以在docker run指定 UI_ADMIN_PASSWORD环境变量自定义密码.
如果有错误的话,大概率是ES没有连上,检查一下ES是不是还活着,再不行就进到容器里面看日志.日志默认路径:/apache-skywalking-apm-incubating/logs
Agent接入
当前已经有Java/C#(dotnet core)/Node.js的Agent了.
对应的话Java支持是最多的,其他两个我看下来基本就是主流比较多的一些框架都基本有了.
对应agent框架链接:
dotnet core: OpenSkywalking/skywalking-netcore
node.js:OpenSkywalking/skywalking-nodejs
理论上应该遵循http://opentracing.io/ API标准的.
Java agent 主仓库就有,直接去看release即可.
今天我们肯定是用dotnet core 啦.
dotnet core当前支持的库和中间件有下面这些:
ASP.NET Core.NET Core BCL types (HttpClient and SqlClient)EntityFrameworkCoreNpgsql.EntityFrameworkCore.PostgreSQLPomelo.EntityFrameworkCore.MySqlCAP嗯,该有的都有了.
先引入一下SkyWalking.AspNetCore的Package.
dotnet add package SkyWalking.AspNetCore --version 0.3.0
酌情新增 SkyWalking.Diagnostics.EntityFrameworkCore, SkyWalking.Diagnostics.HttpClient, SkyWalking.Diagnostics.EntityFrameworkCore.Npgsql,SkyWalking.Diagnostics.EntityFrameworkCore.Pomelo.MySql 等等...
或者直接在xxx.csproj 新增下面这些包.
<PackageReference Include="SkyWalking.AspNetCore" Version="0.3.0"/> <PackageReference Include="SkyWalking.Diagnostics.EntityFrameworkCore" Version="0.3.0"/> <PackageReference Include="SkyWalking.Diagnostics.HttpClient" Version="0.3.0"/> <PackageReference Include="SkyWalking.Diagnostics.EntityFrameworkCore.Npgsql" Version="0.3.0"/> <PackageReference Include="SkyWalking.Diagnostics.EntityFrameworkCore.Pomelo.MySql" Version="0.3.0"/>
然后在 Startup.cs的ConfigureServices 方法中添加引用
// using SkyWalking.AspNetCore;// using SkyWalking.Diagnostics.EntityFrameworkCore;// using SkyWalking.Diagnostics.HttpClient;// using SkyWalking.Diagnostics.SqlClient; services.AddSkyWalking(option => { option.ApplicationCode = "my-first-api"; option.DirectServers = "127.0.0.1:11800"; // 每三秒采样的Trace数量,-1 为全部采集 option.SamplePer3Secs = -1; }).AddEntityFrameworkCore(c => { c.AddPomeloMysql(); }) .AddHttpClient();
接着启动应用.
看到有类似的日志输入,说明已经应用已经正常连接到SkyWalking了.
info: SkyWalking.Remote.GrpcApplicationService[0] Register application instance success. [applicationInstanceId] = 31SkyWalking.Remote.GrpcApplicationService:Information: Register application instance success. [applicationInstanceId] = 31info: SkyWalking.Remote.GrpcApplicationService[0] Register application instance success. [applicationInstanceId] = 31
这时候我们打开http://localhost:8080/#/monitor/dashboard
可以看到APP已经有数量了.
接着我们访问一下已有的API/Web页面,就能看到对应的信息了.
点一下对应的URL.
http client请求(其实是查询ES):
Topology Map
其他的一些功能就看自己玩了.
本期结束...
相关产品
-
【环球网报道 记者 张骜】据马来西亚亚洲新闻台5月12日消息,马来西亚交通部长廖中莱表示,在南非和罗得里格斯岛(毛里求斯岛屿)发现的残骸与马航波音777客机相符,几乎可以肯定来自于失联的马航370客机。廖中莱称:“这一结果对3月份的调查作了补充,当时调查人员表示莫桑比克残骸几乎可以肯定来自于马航370客机。”
-
“我们将持续致力于提高成本效益及设施利用率,从而驱动收入与利润的提升,同时,我们也依旧相信利润率所面临的压力将在接下来的时间里逐渐减轻。随着我们继续推进扩张战略,我们将愈发受益于规模效应,并为我们的客户及股东创造长远的价值。”杨志辉说。
-
加拿大的月嫂更火。由于华人社区里对月嫂的需求愈来愈大,有社福机构看准市场需求,开办了许多短期陪月课程。完成课程的人士绝不愁没有工作。
-
据国外媒体报道,IBM的科学家们今天推出采用宇宙中最小元素之一原子制成的世界最小电影。这部电影使用数千个精确排布的原子来创造近250帧定格动画动作,名为《A Boy and His Atom》(男孩和他的原子),并且通过了《吉尼斯世界纪录》的验证。
-
台湾“财政部”官员说,虽然每月可扣的金额不多,但累积下来也不少。如果苗栗十一月能提出具可行性的偿债计划并能彻底执行,就可一次拿回2亿多,明年年关可以笑呵呵。官员乐观表示,苗栗已缩减明年预算支出,有信心可顺利把扣下的统筹款及补助款都发回。
-
加拿大、墨西哥、巴西、欧盟与日本都是对美国钢铁出口量名列前茅的贸易伙伴。中国对美国输出钢铁虽然在去年只排名第11名,却被特朗普直接点名涉嫌操纵钢铁价格,因此也被认为是特朗普政府锁定审查的主要对象。
-
女演员方面,杨幂、Angelababy、赵丽颖、郑爽、关晓彤、王子文等纷纷加盟多部IP剧拍摄,就连周迅也确认主演《如懿传》。男演员方面,霍建华、钟汉良、刘恺威依然是男主角热门人选,但有了李易峰、鹿晗、王凯、黄轩的加盟,加上因《余罪》人气急升的张一山,明星之间CP搭配的可能性也越来越多。
-
“中式台球如此迅速的发展,与民众的观念转变不无关系。”现任山西省太原市台球协会秘书长的李世森经历了台球从“地下到地上”的20年,自丁俊晖“横空出世”后,越来越多的人把台球放在阳光下。而随着中式台球在中国市场的良性发展,当年那些试图复制“丁俊晖奇迹”的年轻人,也都有了更为广阔的天地。
热点资讯
- 时代中国广州队篮板球不力遗憾不敌新世纪2019-07-01
- [18MBC배]건국대제압한성균관대,결선진출유력.2019-07-01
- JavaScript之深拷贝和浅拷贝2019-07-01
- 中国银行私募发行批准增股计划“十连问”|中国银行新浪财经2019-07-01
- 经过多年的发展,惠尔普不得不在洗碗机上押注,甚至违约来挽救自己?新浪财经2019-07-01
- 华为问鼎之路2019-07-01
- 高通:2019年小米/一加/OPPO/vivo等都用我家5G基带2019-07-01
- 应急管理部向云南调拨救灾物资支持做好墨江抗震救灾工作2019-07-01