ELK分佈式日誌+NLog在.NetCore中的應用

1、ELK簡介node

       ELK是Elasticsearch、Logstash和Kibana首字母的縮寫。這三者均是開源軟件,這三套開源工具組合起來造成了一套強大的集中式日誌管理平臺react

Elasticsearch是一個分佈式搜索和分析引擎,具備高可伸縮、高可靠和易管理等特色,基於Apache Lucene構建,能對大容量的數據進行接近實時的存儲、搜索和分析操做。經過簡單的配置,Elasticsearch就會幫你管理集羣、分片、故障轉移、主節點選舉等,還提供集羣狀態的監控接口。ios

       Logstash是一個用來蒐集、解析、過濾日誌的工具。支持幾乎任何類型的日誌,包括系統日誌、業務日誌和安全日誌,支持file、syslog、tcp、stdin、redis和kafka等多種接收方式。支持elasticrsearch、email、exec、nagios、tcp、hdfs等多種方式輸出git

       Kibana是一個開源的分析與可視化平臺,用於搜索、分析和可視化存儲在 Elasticsearch中的數據,而後以圖表的方式展示出來,還容許用戶自定義查詢、過濾和彙總數據。github

2、安裝(這裏以windows爲例)redis

       1. 第一步:下載Elasticsearch 下載地址:https://www.elastic.co/cn/downloads/elasticsearch 選擇你適合的平臺版本,以下圖所示:npm

      2. 下載Logstash 下載地址:https://www.elastic.co/cn/downloads/logstash,選擇你適合的平臺,以下圖所示:windows

 

       3.下載Kibana,下載地址:https://www.elastic.co/cn/downloads/kibana,選擇你適合的平臺,以下圖所示: 瀏覽器

     將壓縮包解壓到文件,如圖所示:安全

  切換到elasticsearch-7.3.2\bin,點擊elasticsearch.bat便可完成安裝,打開http://localhost:9200/以下圖所示即安裝完成

      安裝node.jsgrunt,從地址:https://nodejs.org/en/download/ 下載相應系統的msi,雙擊安裝

    打開命令提示符輸入npm install -g grunt-cli,以下圖所示則grunt安裝完成

      進入\elasticsearch-7.3.2\config,打開elasticsearch.yml,在文件末尾加上如下代碼:

   http.cors.enabled: true

   http.cors.allow-origin: "*"

  雙擊elasticsearch.bat重啓es

  下載Head,下載地址:https://github.com/mobz/elasticsearch-head,下載後將elasticsearch-head-master 解壓到elasticsearch-7.3.2文件夾下,如圖所示:

     修改elasticsearch-head-master文件夾下的Gruntfile.js,加上hostname:’*’

     \elasticsearch-7.3.2\elasticsearch-head-master文件夾下執行npm install

     安裝完成後執行grunt server 或者npm run start 運行head插件,http://瀏覽器下訪問http://localhost:9100/

     logstash安裝:解壓後啓動使用配置文件就能夠了

       Kibana安裝:kibana-7.3.2\config文件夾下修改kibana.yml, 取消server.portserver.hostserver.nameelasticsearch.hostsi18n.locale前面的#號,並將i18n.locale的值改成zh-CN,運行bin文件夾下的kibana.bat,打開localhost:5601,如圖所示則安裝成功

3、.Net Core使用Nlog調用ELK寫入日誌

        一、NuGet安裝依賴

      二、配置nlog.config

<?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"
      internalLogToConsole="true">
  <extensions>
    <add assembly="NLog.Targets.ElasticSearch"/>
  </extensions>

  <targets async="true">
    <!--https://github.com/reactive-markets/NLog.Targets.ElasticSearch/wiki-->
    <target xsi:type="ElasticSearch"
            name="ElasticSearch"
            uri="http://127.0.0.1:9200"
            index="Web"
            documentType="logevent"
            includeAllProperties="false"
            requireAuth="false">
      <field name="host" layout="${machinename}" />
      <field name="application"
                 layout="${applicationName}" />
      <field name="logged" layout="${date}" />
      <field name="level" layout="${level}" />
      <field name="message" layout="${message}" />
      <field name="logger" layout="${logger}" />
      <field name="callSite" layout="${callsite:filename=true}" />
      <field name="exception" layout="${exception:tostring}" />
      <field name="IP" layout="${aspnet-request-ip}" />
      <field name="User" layout="${aspnetcore-request-user}" />
      <field name="serverName" layout="${machinename}" />
      <field name="url" layout="${aspnetcore-request-url}" />
    </target>
    
    
  
  </targets>
  <rules>
    <logger name="*" minlevel="INFO" writeTo="ElasticSearch" />
  </rules>
</nlog>
View Code

      三、Startup.cs配置

     四、應用

      能夠看到如下數據則表示調用成功

相關文章
相關標籤/搜索