日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Logging with ElasticSearch, Kibana, ASP.NET Core and Docker

發(fā)布時(shí)間:2023/12/4 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Logging with ElasticSearch, Kibana, ASP.NET Core and Docker 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

好久不見,前兩周經(jīng)歷了人生第一次"偽牛市",基金和股市大起大落,更加堅(jiān)信“你永遠(yuǎn)賺不到超出你認(rèn)知范圍之外的錢,除非靠著運(yùn)氣”,老韭菜誠不欺我也。
當(dāng)能力與野心不匹配,只能多看書,收割那些不求甚解的韭菜。

言歸正傳,本文聊一聊在ASP.NET Core3.1中集成ElasticSearch、Kibana日志查詢系統(tǒng)。

我們?yōu)槭裁葱枰狤lasticSearch、Kibana?

成熟的應(yīng)用程序,會(huì)在各個(gè)階段以各種姿勢記錄日志,這些日志包括(但不限于)nginx日志、pod/Container、業(yè)務(wù)日志。
ElasticSearch是一個(gè)高度可擴(kuò)展的全文搜索和分析引擎,使任何類型的日志記錄變得容易,可訪問和可搜索。ElasticSearch令人難以置信的速度和簡單的查詢語言,再加上Kibana的界面和圖形,構(gòu)成了功能強(qiáng)大的日志存儲(chǔ)和查詢搭檔。

1.在Docker中啟動(dòng)ElasticSearch、Kibana

docker中啟動(dòng)Elastcisearch、kibana最簡單的方式是創(chuàng)建docker-compose文件,將原服務(wù)偵聽端口映射到宿主機(jī)端口。

version:?'3.1'services:elasticsearch:container_name:?elasticsearchimage:?elasticsearch:7.6.2ports:-?9200:9200volumes:-?elasticsearch-data:/usr/share/elasticsearch/dataenvironment:-?xpack.monitoring.enabled=true-?xpack.watcher.enabled=false-?"ES_JAVA_OPTS=-Xms1g?-Xmx1g"-?discovery.type=single-nodenetworks:-?elastickibana:container_name:?kibanaimage:?kibana:7.6.2ports:-?5601:5601depends_on:-?elasticsearchenvironment:-?ELASTICSEARCH_URL=http://localhost:9200networks:-?elasticnetworks:elastic:driver:?bridgevolumes:elasticsearch-data:

在后臺(tái)拉取鏡像,啟動(dòng)容器:

docker-compose??up?-d

確認(rèn)ElasticSearch,kibana啟動(dòng)成功:

2. 使用ASP.NET Core和NLog向ES發(fā)送日志

VS Code創(chuàng)建.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發(fā)送日志的核心配置。

<?xml?version="1.0"?encoding="utf-8"??> <nlog?xmlns="http://www.nlog-project.org/schemas/NLog.xsd"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"autoReload="true"internalLogLevel="Info"internalLogFile="internal-nlog.txt"><!--?enable?asp.net?core?layout?renderers?--><extensions><add?assembly="NLog.Web.AspNetCore"/></extensions><!--?the?targets?to?write?to?--><targets><!--?write?logs?to?file??--><target?xsi:type="File"?name="allfile"?fileName="/home/root/nlog-all-${shortdate}.log"layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message}?${exception:format=tostring}"?/><!--?another?file?log,?only?own?logs.?Uses?some?ASP.NET?core?renderers?--><target?xsi:type="File"?name="ownFile-web"?fileName="/home/root/nlog-own-${shortdate}.log"layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message}?${exception:format=tostring}|url:?${aspnet-request-url}|action:?${aspnet-mvc-action}"?/><target?name="elastic"?xsi:type="BufferingWrapper"?flushTimeout="5000"><target?xsi:type="ElasticSearch"?uri="http://localhost:9200/"?/></target></targets><!--?rules?to?map?from?logger?name?to?target?--><rules><!--All?logs,?including?from?Microsoft--><logger?name="*"?minlevel="Trace"?writeTo="allfile"?/><!--Skip?non-critical?Microsoft?logs?and?so?log?only?own?logs--><logger?name="Microsoft.*"?maxlevel="Info"?final="true"?/><!--?BlackHole?without?writeTo?--><logger?name="*"?minlevel="Trace"?writeTo="ownFile-web"?/><logger?name="*"?minlevel="Info"?writeTo="elastic"?/></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().UseStartup<Startup>().Build();webHost.Run();}}

Controller自定義日志:

public?class?HomeController?:?Controller{private?readonly?ILogger<HomeController>?_logger;public?HomeController(ILogger<HomeController>?logger){_logger?=?logger;}public?IActionResult?Index(){_logger.LogInformation("HomeController?Index?executed?at?{date}",?DateTime.UtcNow);return?View();}}

3.在kibana中創(chuàng)建Index Pattern

dotnet run啟動(dòng)ASP.NET Core程序,現(xiàn)在開始產(chǎn)生日志。
Kibana使用index pattern從ElasticSearch indices中獲取數(shù)據(jù)。要在Kibana中顯示日志,需要先定義index pattern:之后選擇@timestamp時(shí)間過濾。

回到Discovery界面,可以看到所有日志。

ok, 上面便是ASP.NET Core+NLog集成ES、Kibana的基本操作流程。
看起來很簡單,其實(shí)只是九牛一毛,Elastic Stack的內(nèi)功博大精深,關(guān)注我,解鎖各種實(shí)戰(zhàn)姿勢。

  • ASP.NET Core端點(diǎn)路由 作用原理

  • [溫故知新] 編程原則和模式

  • ASP.NET?Core結(jié)合Redis實(shí)踐消息隊(duì)列

  • Quartz.net在集群環(huán)境下部署任務(wù)的姿勢

  • 分享我在前后端分離項(xiàng)目中Gitlab-CI的經(jīng)驗(yàn)

總結(jié)

以上是生活随笔為你收集整理的Logging with ElasticSearch, Kibana, ASP.NET Core and Docker的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。