話說ELK使用安裝,結合.NET Core、ABP框架Nlog日誌

介紹ELK

它是一個解決方案,是Logstash、Elastaicsearch、Kibana的縮寫,爲何使用:想一想你是不少系統,出了問題還要登陸到服務器查看日誌、或者系統部署在客戶的機器上,你甚至沒有權限登陸到別人服務器,做爲開發人員又要修復bug!!再者,咱們日誌能夠根據日誌級別作分析,Kibana提供不少圖形展現,很好的分析日誌,從而檢測系統健康。

  • 數據源:能夠來自Redis、Nginx、Docker、Rabbitmq、Consul、系統日誌等等各式各樣的日誌文件。
  • Logstash:開源的服務器數據處理管道,可以同時從多個來源採集數據、轉換數據、而後將數據存到數據庫中。
  • Elastaicsearch:搜索、分析、存儲數據。
  • Kibana:數據可視化Web。
  • Beats: 輕量型採集器的平臺。從邊緣機器想Logstash和Elasticsearch發送數據。
  • Filebeat:輕量型日誌採集器。
    html

    安裝ELK

    這裏採用懶人安裝,Docker容器化安裝,安裝前先保證本身已經安裝Docker-compose,安裝地址:https://github.com/deviantony/docker-elk.git,安裝完訪問服務地址:http://localhost:5601,http://localhost:9200.


    ELK中文官方文檔
    Elasticsearch 權威指南中文版(2.x)
    Kibana 中文手冊(6.0)
    好了,ELK內容到這裏把!建議、最好看一首文檔,就不要去看博客了,由於都是抄來抄去,想罵人。分割線
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------git

    ABP集成ELK

  • ABP開始是Log4,一開始覺得Log4這裏能夠支持集成ELK,後續發現比較坑。由於沒有Log4支持的Nuget包,後續轉到Nlog。ABP不少文檔說轉換日誌管理很簡單,不少博客都是一筆帶過,知其然不知其因此然,我看到這些博客內心早已經是萬馬奔騰,mmp,最後在github找到一個開源的abp的nlog包Abp.Castle.NLog,另外還須要安裝另外兩個包NLog.Web.AspNetCore,NLog.Extensions.Logging,若是你不安裝,在nlog.config中的一些參數你將不可用。
    .net core 配置nlog

    nlog配置文件:
<?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="Warn"
      internalLogFile="internal-nlog.txt">

  <extensions>
    <add  assembly="NLog.Web.AspNetCore"/>
  </extensions >

  <variable name="logDirectory" value="${basedir}\logs\"/>

  <!--define various log targets-->
  <targets>

    <!--write logs to file-->
    <target xsi:type="File" name="allfile" fileName="${logDirectory}\nlog-all-${shortdate}.log"
            layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />

    <target xsi:type="Network"
            name="elastic"
            keepConnection="false"
            address ="tcp://ip地址:5000"
            index="msglog-${shortdate}"
            layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
    />

    <target xsi:type="Null" name="blackhole" />

  </targets>

  <rules>
    <!--All logs, including from Microsoft-->
    <logger name="*" minlevel="Trace" writeTo="allfile" />

    <!--Skip Microsoft logs and so log only own logs-->
    <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
    <logger name="*" minlevel="Trace" writeTo="elastic" />

  </rules>
</nlog>

注意:ip地址哪裏的端口爲你配置logstash的input地址:
github

ABP日誌寫入

ABP日誌經過屬性注入,直接看代碼了

docker

相關文章
相關標籤/搜索