联合测试
我们重新打开Kibana——http://localhost:5601/,然后点击AddIntegrations。
然后点击ElasticAPM。
然后选择Windows。
然后页面向下拉,点击Check APM Server status——检测APM Server的状态。
如下图,提示了已经正确安装了APM Server。
APMAgent使用
首先创建一个NETCore的Web项目,然后引入Elastic相关DLL。
可以单独引用独立的DLL。
- Elastic.Apm
- Elastic.Apm.AspNetCore
- Elastic.Apm.EntityFrameworkCore
也可以直接就引用一个整合的DLL,推荐就引用一个Elastic.Apm.NetCoreAll。
- Elastic.Apm.NetCoreAll
然后在Startup的Configure方法中使用 app.UseElasticApm(Configuration)。
代码如下:
using ... using Elastic; using Elastic.Apm; using Elastic.Apm.AspNetCore; using Elastic.Apm.EntityFrameworkCore; namespaceElasticAPMTest { publicclassStartup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.AddControllers(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseElasticApm(Configuration); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); } } }
然后appsettings.json修改如下:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*", "ElasticApm": { "Environment": "production", // Set the service environment "SecretToken": "", "ServerUrl": "http://192.168.50.28:8200/", //设置前面安装好的APM Server URL,默认端口号是8200 "LogLevel": "Error", // Log级别, "ServiceName": "TEST1", //应用的名字 //"CaptureBody": "all", //"CaptureBodyContentTypes": "application/x-www-form-urlencoded*, text/*, application/json*, application/xml*", "ServiceVersion": "1.0.0.0" //"Environment": "staging", //"CaptureHeaders": "false", //"TransactionSampleRate": 0.456, //"TransactionMaxSpans": 375, //"CaptureBody": "all", //"CaptureBodyContentTypes": "application/x-www-form-urlencoded*, text/*, application/json*, application/xml*" } }
然后运行网站,如下图:
项目运行后,第一行提示我们ElasticAPM收集数据是30000毫秒的间隔,即每30秒采集一次数据。
Github参考网站,可以下载源代码了解更多详情。
查看检测的数据
我们回到刚才Kibana的页面,继续向下拉,如下图(截图已经是中文 了,因为我已经汉化了)。
点击【检测代理状态】,提示尚未从代理收到任何数据,但我的项目运行正常,所以直接点击加载Kibana对象,然后启动APM,进入服务管理界面。
点击Test1,这是配置ApmAgent的项目,界面如下。
可以看到,他已经在检测我的网站的访问和吞吐量等等信息了。
点击【指标】,还有CPU和内存的统计。
点击【事务】,这里的【时间线】就有我们请求的链路跟踪,即微服务所需的链路跟踪功能。
结语
如果一个公司存在Java团队和C#团队,我们在使用APM的时候,强烈建议使用ELK,因为大家都统一使用一个工具交流很方便,可以避免非常非常非常多不必要的麻烦。
本文作者:net架构师,全栈.Net软件工程师
声明:本文为 脚本之家专栏作者 投稿,未经允许请勿转载。