前言
什么是APM?全称:Application Performance Management
可以参考这里:
现代APM体系,基本都是参考Google的Dapper(大规模分布式系统的跟踪系统)的体系来做的。通过跟踪请求的处理过程,来对应用系统在前后端处理、服务端调用的性能消耗进行跟踪,关于Dapper的介绍可以看这个链接:Dapper,大规模分布式系统的跟踪系统 by bigbully 作者:刀把五 链接:upload/201809221122124840.jpg" alt="UI" style="margin: 0px; padding: 0px; border: 0px; max-width: 700px; height: auto;" />如果有错误的话,大概率是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)
- EntityFrameworkCore
- Npgsql.EntityFrameworkCore.PostgreSQL
- Pomelo.EntityFrameworkCore.MySql
- CAP
嗯,该有的都有了.
先引入一下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了.
