ELK分布式日志+NLog在.NetCore中的應用


一、ELK簡介

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

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

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

       Kibana是一個開源的分析與可視化平台,用於搜索、分析和可視化存儲在 Elasticsearch中的數據,然后以圖表的方式展現出來,還允許用戶自定義查詢、過濾和匯總數據。

二、安裝(這里以windows為例)

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

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

 

       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,如圖所示則安裝成功

三、.Net Core使用Nlog調用ELK寫入日志

        1、NuGet安裝依賴

      2、配置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

      3、Startup.cs配置

     4、應用

      可以看到以下數據則表示調用成功

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM