安徽元鼎建设工程网站自助建站系统官方版
news/
2025/9/22 22:27:47/
文章来源:
安徽元鼎建设工程网站,自助建站系统官方版,站长工具seo下载,上海网络推广公司网站什么是Elastic AMPElastic APM 是一个应用程序性能监控系统。它可以请求的响应时间、数据库查询、对缓存的调用、外部 HTTP 请求等的详细性能信息#xff0c;可以实时监控软件服务和应用程序。这可以帮助我们快速查明和修复性能问题。Elastic APM 还会自动收集未处理的错误和异… 什么是Elastic AMPElastic APM 是一个应用程序性能监控系统。它可以请求的响应时间、数据库查询、对缓存的调用、外部 HTTP 请求等的详细性能信息可以实时监控软件服务和应用程序。这可以帮助我们快速查明和修复性能问题。Elastic APM 还会自动收集未处理的错误和异常。因此我们可以在出现新错误时识别它们并密切关注特定错误发生的次数。服务器指标是另一个重要的信息来源。Elastic APM 代理会自动获取基本的主机级别指标和特定于代理的指标。Elastic APM 目前支持 Node.js, Python, Ruby, PHP, Java, Go, RUM (JS), 和.NET.工作原理Elastic AMP 通过Agent收集应用程序的指标信息Agent将收集的信息上传至AMP ServerAMP Server对数据进行聚合后存储至Elasticsearch通过Kibana查看指标信息环境安装我们通过Docker搭建一个单机的环境来演示Elastic APM的功能。 1.安装ElasticSearchdocker network create elastic
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.2
docker run -d --name es01-test --net elastic -p 9200:9200 -p 9300:9300 -e discovery.typesingle-node docker.elastic.co/elasticsearch/elasticsearch:7.15.22.安装Kibanadocker pull docker.elastic.co/kibana/kibana:7.15.2
docker run -d --name kib01-test --net elastic -p 5601:5601 -e ELASTICSEARCH_HOSTShttp://es01-test:9200 docker.elastic.co/kibana/kibana:7.15.23.安装ElasticAPMdocker run -d -p 8200:8200 --nameapm-server --net elastic --userapm-server docker.elastic.co/apm/apm-server:7.15.2 --strict.permsfalse -e -E output.elasticsearch.hosts[es01-test:9200]代码演示Elastic AMP支持.NET Framwork4.6.1和.NET Core2.1支持的组件有GRPCHttpClientEF6EFCoreElasticSearchMysqlMongoRedisKafkaRabbitMQ等具体详见https://www.elastic.co/guide/en/apm/agent/dotnet/master/supported-technologies.html。我们这次使用.NET Framwork新建一个Web项目来演示1.新增Web项目 2.新增Nuget包package idElastic.Apm version1.12.1 targetFrameworknet472 /package idElastic.Apm.AspNetFullFramework version1.12.1 targetFrameworknet472 /package idElastic.Apm.SqlClient version1.12.1 targetFrameworknet472 /package idElastic.Apm.StackExchange.Redis version1.12.1 targetFrameworknet472 /package idStackExchange.Redis version2.2.88 targetFrameworknet472 /3.配置HttpModuleweb.config中的system.webServer中新增以下节点modulesadd nameElasticApmModule typeElastic.Apm.AspNetFullFramework.ElasticApmModule, Elastic.Apm.AspNetFullFramework /
/modules4.配置Agent我们可以通过环境变量配置Agent的信息protected void Application_Start()
{Environment.SetEnvironmentVariable(ELASTIC_APM_SERVICE_NAME, TestFromworkSite); //服务名Environment.SetEnvironmentVariable(ELASTIC_APM_ENVIRONMENT, Dev); //环境Environment.SetEnvironmentVariable(ELASTIC_APM_SERVER_URL, http://localhost:8200); // APM serverEnvironment.SetEnvironmentVariable(ELASTIC_APM_FLUSH_INTERVAL, 5s); //上传数据的周期Environment.SetEnvironmentVariable(ELASTIC_APM_LOG_LEVEL, Trace);//..........
}5.启动网站直接启动网站即可在Kibana中看到对应的ServiceTestFromworkSiteElastic APM核心模块1.Transaction我们通过Transaction可以看其中Api的调用信息 2. Dependencies通过Dependencies看到服务依赖关系3. Error: 能通过Error看到程序中的错误信息 4. Matrics: 可以通过Matrics看到服务气的内存与CPU信息Elastic监控MSSql与Redis等组件新增MSSqlHelperpublic class MSSqlHelper
{public static DataSet SqlExecuteReader(string _sql, SqlParameter[] _parameters, CommandType _type CommandType.Text, string _constring Data Source.\SQLEXPRESS;Initial Catalogdev;Integrated SecurityTrue;){DataSet ds new DataSet();try{using (SqlConnection conn new SqlConnection(_constring)){SqlCommand cmd new SqlCommand(_sql, conn);if (_parameters ! null){foreach (SqlParameter p in _parameters){ cmd.Parameters.Add(p); }}cmd.CommandType _type;cmd.CommandTimeout 10;//超时时间单位Sconn.Open();using (SqlDataAdapter sda new SqlDataAdapter()){sda.SelectCommand cmd;sda.Fill(ds);//填充dataset}}return ds;}catch (Exception ex){throw;}}
}新增RedisHelperpublic class RedisHelper
{private static IDatabase database;public static void UseApmForRedis(){var connection ConnectionMultiplexer.Connect(127.0.0.1:6379);connection.UseElasticApm();database connection.GetDatabase();}public static void StringSet(string key,string value){database.StringSet(key,value);}
}在Application_Start()中开启SqlServer与Redis的监控Agent.Subscribe(new SqlClientDiagnosticSubscriber());
RedisHelper.UseApmForRedis();HomeController.Index接口中新增sqlserver与Redis的调用public ActionResult Index()
{MSSqlHelper.SqlExecuteReader(select * from S_dev.UserObject, null);RedisHelper.StringSet(a, a);
}启动程序即可看到MSSql与Redis的相关数据Elastic APM Api的深入使用1.StartTransaction与StartSpan开启自定义transaction与span一些定时任务同样可以使用Elastic APM的Agent.Tracer.StartTransaction和来监控并且我们可以通过StartSpan来新增一个自定义节点这种方式需要我们自己处理异常信息。我们新增一个Jobpublic class TestJob
{public void Run(){while (true){var trans Agent.Tracer.StartTransaction(TestJob, ApiConstants.TypeRequest);try{MSSqlHelper.SqlExecuteReader(select * from S_dev.UserObject, null);RedisHelper.StringSet(a, a);trans.SetLabel(name, chester);var span trans.StartSpan(自定义Span, ApiConstants.TypeExternal, ApiConstants.SubtypeHttp, ApiConstants.ActionQuery);try{//Http request}catch (Exception e){span.CaptureException(e);}finally{span.End();}Thread.Sleep(1000);}catch (Exception ex){trans.CaptureException(ex);throw;}finally{trans.End();}}}
}Application_start中启动TestjobTask.Run(() new TestJob().Run());启动程序即可看到对应的TestJob监控 2.CaptureTransaction与CaptureSpan开启自定义transaction与spanCaptureTransaction与CaptureSpan相对于StartTransaction与StartSpan可以帮助我们结束Transaction与Span也可以自动捕获异常新增一个TestJob2public class TestJob2
{public void Run(){while (true){Agent.Tracer.CaptureTransaction(TestJob2, ApiConstants.TypeRequest, (trans) {MSSqlHelper.SqlExecuteReader(select * from S_dev.UserObject, null);RedisHelper.StringSet(a, a);trans.SetLabel(name, chester);trans.CaptureSpan(自定义Span2, ApiConstants.TypeDb, (s) {//execute db query}, ApiConstants.SubtypeMssql, ApiConstants.ActionQuery);Thread.Sleep(1000);});}}
}Application_start中启动Testjob2Task.Run(() new TestJob2().Run());启动程序即可看到对应的TestJob2监控 3.Agent全局拦截我们可以通过过滤器拦截Transaction与Span并为其添加例如label等附加内容Agent.AddFilter((ITransaction t)
{//t.SetLabel(foo, bar);return t;
});
Agent.AddFilter((ISpan span)
{// ..return span;
});
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910584.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!