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

https://www.cnblogs.com/diwu0510/p/11161246.html

posted @ 2023-05-29 20:56  Raymon*码记  阅读(157)  评论(0)    收藏  举报