ASP.NET Core WebAPI 如何接入 Elastic APM
Elastic APM
lastic APM 是一款免费开源的应用程序性能监控组件。它底层依赖 Elasticsearch 来存储跟查询数据,使用 Kibana 来展示分析数据。它支持多种程序语音的探针,包括 JAVA,.NET, Nodejs 等语音。对于 .NET 的集成非常方便,只要简单的配置就可以采集 .NET 程序的信息,对代码几乎是零入侵
Elastic APM 的架构由4个部分组成。
1. Elasticsearch 负责数据的持久化,查询等能力
2. Kibana APM数据的分析展示界面
3. APM Agent 每个服务集成对应的 sdk 后就是一个个 agent,负责采集程序的各种指标数据
4. APM Server ,agent 采集到数据后会上报给 APM Server ,由APM Server汇集数据后存储到 Elasticsearch 。
使用 docker-compose 安装:
点击查看代码
version: '3.9'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.13.2
restart: always
container_name: elasticsearch
hostname: elasticsearch
environment:
- discovery.type=single-node
ports:
- 9200:9200
- 9300:9300
kibana:
image: docker.elastic.co/kibana/kibana:7.13.2
restart: always
container_name: kibana
hostname: kibana
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
ports:
- 5601:5601
depends_on:
- elasticsearch
apm_server:
image: docker.elastic.co/apm/apm-server:7.13.2
restart: always
container_name: apm_server
hostname: apm_server
command: --strict.perms=false -e
environment:
- output.elasticsearch.hosts=["elasticsearch:9200"]
ports:
- 8200:8200
depends_on:
- kibana
- elasticsearch
如何在webApi项目中接入Elastic APM 呢?
步骤 1:安装Elastic APM包
使用NuGet包管理器或者.NET CLI来安装Elastic APM的相关包(Elastic.Apm.AspNetCore)
步骤 2:配置APM代理:
在你的应用程序的appsettings.json文件中添加以下配置:
点击查看代码
"ElasticApm": {
"ServerUrls": "http://localhost:8200",
"ServiceName": "YourServiceName"
}
如下截图所示:
步骤 3:在Startup.cs中添加APM中间件
在你的ASP.NET Core应用程序的Startup.cs文件的Configure方法中,添加以下代码:
app.UseAllElasticApm(builder.Configuration);
这会将Elastic APM中间件添加到你的应用程序管道中。
步骤 4:启动你的应用程序
现在你可以启动你的.NET Core 6应用程序,并让它开始使用Elastic APM来监控性能。应用程序的性能数据将被发送到配置的Elastic APM服务器。
YML在线语法检查:https://www.bejson.com/validators/yaml_editor/
参考资料:https://www.cnblogs.com/zhizhengzhaoxi/p/netcore-with-microservices-06.html
ELK官网:https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html
封装参考资料:https://github.com/wulaiwei/WorkData.Core/tree/master/WorkData/WorkData.ElasticSearch
本文来自博客园,作者:Raymon*码记,转载请注明原文链接:https://www.cnblogs.com/RaymonGoGo/p/17441651.html