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

来源:https://www.cnblogs.com/minghon/archive/2019/11/13/11853157.html
-Advertisement-
Play Games

一、ELK簡介 ELK是Elasticsearch、Logstash和Kibana首字母的縮寫。這三者均是開源軟體,這三套開源工具組合起來形成了一套強大的集中式日誌管理平臺 Elasticsearch是一個分散式搜索和分析引擎,具有高可伸縮、高可靠和易管理等特點,基於Apache Lucene構建, ...


一、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、應用

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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文收錄在Python從入門到精通系列文章系列 在分享本章節的內容之前,先來研究一道數學題,請說出下麵的方程有多少組正整數解。 事實上,上面的問題等同於將8個蘋果分成四組每組至少一個蘋果有多少種方案。想到這一點問題的答案就呼之欲出了。 可以用Python的程式來計算出這個值,代碼如下所示。 """ ...
  • class Solution: """ @param A: an integer array @return: nothing """ def sortIntegers(self, A): new_list = list(A) list_len = len(new_list) for i in ra... ...
  • 1. 多態 1.1 什麼是多態 多態指的是一類事物有多種形態。 動物有多種形態:人,狗,豬。 import abc class Animal(metaclass=abc.ABCMeta): #同一類事物:動物 @abc.abstractmethod def talk(self): pass clas ...
  • 多態 多態的概述 同一個對象,在不同時刻表現出來的不同形態 多態的前提和體現 有繼承/實現關係 有方法重寫關係 有父類引用指向子類對象 多態中成員訪問特點 成員變數 :編譯看左邊,執行看左邊 成員方法 :編譯看左邊,執行看右邊 為什麼成員變數和成員方法訪問不一樣呢 因為成員方法有重寫,而成員變數不一 ...
  • 本文主要記錄瞭如何將將前端的對象數組通過Json字元串傳到後端,併在後端將Json字元串轉換為對象集合。 ...
  • 最近公司在用到SpringBoot整合Mybatis時當web端頁面數據增多時需要使用分頁查詢以方便來展示數據。本人對分頁查詢進行了一些步驟的總結,希望能夠幫助到有需要的博友。如有更好的方式,也希望評論留言,本人以作更好的改進。 SpringBoot+Mybatis+PageHelper實現分頁 以 ...
  • 1. 繼承 1.1 什麼是繼承 繼承是一種創建新類的方式,在python中,新建的類可以繼承一個或多個父類,父類又可稱為基類或超類,新建的類稱為派生類或子類。 python中類的繼承分為:單繼承和多繼承。 class ParentClass1: #定義父類 pass class ParentClas ...
  • 在軟體業,AOP為Aspect Oriented Programming的縮寫,意為:面向切麵編程,通過預編譯方式和運行期動態代理實現程式功能的統一維護的一種技術。AOP是軟體開發中的一個熱點,利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程式的可重用性。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...