开发网站建设设计公司,南宁码科网站建设,seo研究中心学员案例,网站开源系统“好久不见#xff0c;前两周经历了人生第一次伪牛市#xff0c;基金和股市大起大落#xff0c;更加坚信“你永远赚不到超出你认知范围之外的钱,除非靠着运气”#xff0c;老韭菜诚不欺我也。当能力与野心不匹配#xff0c;只能多看书#xff0c;收割那些不求… “好久不见前两周经历了人生第一次伪牛市基金和股市大起大落更加坚信“你永远赚不到超出你认知范围之外的钱,除非靠着运气”老韭菜诚不欺我也。当能力与野心不匹配只能多看书收割那些不求甚解的韭菜。言归正传本文聊一聊在ASP.NET Core3.1中集成ElasticSearch、Kibana日志查询系统。我们为什么需要ElasticSearch、Kibana成熟的应用程序会在各个阶段以各种姿势记录日志这些日志包括(但不限于)nginx日志、pod/Container、业务日志。ElasticSearch是一个高度可扩展的全文搜索和分析引擎使任何类型的日志记录变得容易可访问和可搜索。ElasticSearch令人难以置信的速度和简单的查询语言再加上Kibana的界面和图形构成了功能强大的日志存储和查询搭档。1.在Docker中启动ElasticSearch、Kibanadocker中启动Elastcisearch、kibana最简单的方式是创建docker-compose文件将原服务侦听端口映射到宿主机端口。version: 3.1services:elasticsearch:container_name: elasticsearchimage: elasticsearch:7.6.2ports:- 9200:9200volumes:- elasticsearch-data:/usr/share/elasticsearch/dataenvironment:- xpack.monitoring.enabledtrue- xpack.watcher.enabledfalse- ES_JAVA_OPTS-Xms1g -Xmx1g- discovery.typesingle-nodenetworks:- elastickibana:container_name: kibanaimage: kibana:7.6.2ports:- 5601:5601depends_on:- elasticsearchenvironment:- ELASTICSEARCH_URLhttp://localhost:9200networks:- elasticnetworks:elastic:driver: bridgevolumes:elasticsearch-data:
在后台拉取镜像启动容器docker-compose up -d
确认ElasticSearch,kibana启动成功2. 使用ASP.NET Core和NLog向ES发送日志VS Code创建.NetCore程序dotnet new mvc --no-https -o Elastic.Kibana.NLog
cd Elastic.Kibana.NLog
添加NLog依赖包dotnet add package NLog
dotnet add package NLog.Web.AspNetCore
dotnet add package NLog.Targets.ElasticSearch
添加nlog.config文件黄色背景行是NLog直接向ES发送日志的核心配置。?xml version1.0 encodingutf-8 ?
nlog xmlnshttp://www.nlog-project.org/schemas/NLog.xsdxmlns:xsihttp://www.w3.org/2001/XMLSchema-instanceautoReloadtrueinternalLogLevelInfointernalLogFileinternal-nlog.txt!-- enable asp.net core layout renderers --extensionsadd assemblyNLog.Web.AspNetCore//extensions!-- the targets to write to --targets!-- write logs to file --target xsi:typeFile nameallfile fileName/home/root/nlog-all-${shortdate}.loglayout${longdate}|${event-properties:itemEventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:formattostring} /!-- another file log, only own logs. Uses some ASP.NET core renderers --target xsi:typeFile nameownFile-web fileName/home/root/nlog-own-${shortdate}.loglayout${longdate}|${event-properties:itemEventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:formattostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action} /target nameelastic xsi:typeBufferingWrapper flushTimeout5000target xsi:typeElasticSearch urihttp://localhost:9200/ //target/targets!-- rules to map from logger name to target --rules!--All logs, including from Microsoft--logger name* minlevelTrace writeToallfile /!--Skip non-critical Microsoft logs and so log only own logs--logger nameMicrosoft.* maxlevelInfo finaltrue /!-- BlackHole without writeTo --logger name* minlevelTrace writeToownFile-web /logger name* minlevelInfo writeToelastic //rules
/nlog
ASP.NET Core添加Nlog并输出日志 public class Program{public static void Main(string[] args){var webHost WebHost.CreateDefaultBuilder(args).ConfigureLogging((hostingContext, loggingBuilder) {loggingBuilder.AddConsole(x x.IncludeScopes true).AddDebug();}).UseNLog().UseStartupStartup().Build();webHost.Run();}}
Controller自定义日志public class HomeController : Controller{private readonly ILoggerHomeController _logger;public HomeController(ILoggerHomeController logger){_logger logger;}public IActionResult Index(){_logger.LogInformation(HomeController Index executed at {date}, DateTime.UtcNow);return View();}}
3.在kibana中创建Index Patterndotnet run启动ASP.NET Core程序现在开始产生日志。Kibana使用index pattern从ElasticSearch indices中获取数据。要在Kibana中显示日志需要先定义index pattern:之后选择timestamp时间过滤。回到Discovery界面可以看到所有日志。ok, 上面便是ASP.NET CoreNLog集成ES、Kibana的基本操作流程。看起来很简单其实只是九牛一毛Elastic Stack的内功博大精深关注我解锁各种实战姿势。ASP.NET Core端点路由 作用原理[温故知新] 编程原则和模式ASP.NET Core结合Redis实践消息队列Quartz.net在集群环境下部署任务的姿势分享我在前后端分离项目中Gitlab-CI的经验