<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 2804字,需瀏覽 6分鐘

           ·

          2020-07-28 17:18

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

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

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

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

          1.在Docker中啟動ElasticSearch、Kibana

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

          version:?'3.1'

          services:

          ??elasticsearch:
          ???container_name:?elasticsearch
          ???image:?elasticsearch:7.6.2
          ???ports:
          ????-?9200:9200
          ???volumes:
          ????-?elasticsearch-data:/usr/share/elasticsearch/data
          ???environment:
          ????-?xpack.monitoring.enabled=true
          ????-?xpack.watcher.enabled=false
          ????-?"ES_JAVA_OPTS=-Xms1g?-Xmx1g"
          ????-?discovery.type=single-node
          ???networks:
          ????-?elastic

          ??kibana:
          ???container_name:?kibana
          ???image:?kibana:7.6.2
          ???ports:
          ????-?5601:5601
          ???depends_on:
          ????-?elasticsearch
          ???environment:
          ????-?ELASTICSEARCH_URL=http://localhost:9200
          ???networks:
          ????-?elastic
          ??
          networks:
          ??elastic:
          ????driver:?bridge

          volumes:
          ??elasticsearch-data:

          在后臺拉取鏡像,啟動容器:

          docker-compose??up?-d

          確認ElasticSearch,kibana啟動成功:

          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ā)送日志的核心配置。

          "1.0"?encoding="utf-8"??>
          "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">

          ??
          ??
          ????"NLog.Web.AspNetCore"/>
          ??


          ??
          ??
          ????
          ????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}"?/>

          ????
          ????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}"?/>

          ????"elastic"?xsi:type="BufferingWrapper"?flushTimeout="5000">
          ??????type="ElasticSearch"?uri="http://localhost:9200/"?/>
          ????

          ??


          ??
          ??
          ????
          ????"*"?minlevel="Trace"?writeTo="allfile"?/>

          ????
          ????"Microsoft.*"?maxlevel="Info"?final="true"?/>
          ????
          ????"*"?minlevel="Trace"?writeTo="ownFile-web"?/>

          ????"*"?minlevel="Info"?writeTo="elastic"?/>
          ??


          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()
          ?????????????????????.Build();
          ????????????webHost.Run();
          ????????}
          ????}

          Controller自定義日志:

          public?class?HomeController?:?Controller
          ????{
          ????????private?readonly?ILogger?_logger;

          ????????public?HomeController(ILogger?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啟動ASP.NET Core程序,現(xiàn)在開始產(chǎn)生日志。
          Kibana使用index patternElasticSearch indices中獲取數(shù)據(jù)。要在Kibana中顯示日志,需要先定義index pattern:之后選擇@timestamp時間過濾。

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

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

          瀏覽 67
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青草热视频 | 青青草草草在线视频资源站 | 黑人大粗鸡巴肏白人老骚 逼 | 人人射人人干 | 中日韩无码 |