1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 2804字,需瀏覽 6分鐘

         ·

        2020-07-28 17:18

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

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

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

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

        1.在Docker中啟動ElasticSearch、Kibana

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

        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

        確認(rèn)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的內(nèi)功博大精深,關(guān)注我,解鎖各種實戰(zhàn)姿勢。

        瀏覽 67
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            在线播放中文字幕 | 日韩一二区 | 潘金莲裸体一级淫片 | 国产老女人操逼 | 邻居公与我做爰 | 97pao| 日韩视频免费在线观看 | 白丝校花扒开双腿让我进羞羞兔特辑 | 一级片视频网站 | 精品伦一区二区三区妓女 |