asp.net core結合NLog搭建ELK實時日志分析平臺

0、整體架構


?

整體架構目錄:ASP.NET Core分布式項目實戰-目錄

一、介紹ELK


?

1、說明(此篇ELK采用rpm的方式安裝在服務器上)-牛刀小試

承接上一篇文章的內容準備部署ELK來展示asp.net core 的數據。目前此篇文章只用到單臺服務器,等下一篇將會介紹如何做到集群部署ELK+filebeat+MQ,因為這個集群部署才是真正體現大項目的價值。當然如果是小項目或者是內部項目單臺足以。

當然ELK只是在業界用的比較多,但是里面所用的工具是可以替換的,比如說 如下:

體現價值的解決方案就是:es+kibana+filebeat/logstash+MQ(RabbitMQ/Kfaka) 來實現日志記錄等。

?

多介紹一下吧:

Beats包含四種工具:

  Packetbeat(搜集網絡流量數據)
  Topbeat(搜集系統、進程和文件系統級別的 CPU 和內存使用情況等數據)
  Filebeat(搜集文件數據)
  Winlogbeat(搜集 Windows 事件日志數據)
  它是一個輕量級的日志收集處理工具(Agent)

?

自此,解決方案很多,關鍵在于不同的項目用不同的解決方案,關鍵看大家的選擇啦。當然如果大家有興趣可以加一下QQ群,可以互相探討技術。

?

如果大家對NLog不會部署,請看上一篇文章:asp.net core添加全局異常處理及log4net、Nlog應用

好了接下來就要開始部署啦,請準備你們的服務器和VS吧。

?

2、環境說明

軟件版本
CentOS7.4
Dockerce-18.06
Elasticsearch5.5.0
Logstash5.5.0
Kibana5.5.0
VS20172017

?

介紹一下ELK實時日志分析平臺。

Elasticsearch:是個開源分布式搜索引擎,提供收集、分析、存儲數據三大功能,它的特點:分布式、零配置、自動發現、索引自動分片、索引副本機制、restful風格接口、多數據源、自動搜索負載等。

Logstash:主要是用來日志的搜集、分析、過濾日志的工具,支持大量的數據獲取方式。一般工作方式為c/s架構,client端安裝在需要收集日志的主機上,server端負責將收到的各節點日志進行過濾、修改等操作在一并發往elasticsearch上去。

Kibana:Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助匯總、分析和搜索重要數據日志。

?

二、部署ELK


?

目前由于我在公司部署的ELK,在使用docker下載官方的ELK鏡像時,無法下載。因此我在家里的時候就把ELK所需要的鏡像下載好后放在阿里云的鏡像倉庫中,然后在公司的電腦里面直接下載,速度比較快。

如果有碰到以上下載鏡像問題的同學,可以嘗試我這中辦法。

0、前提需要安裝JAVA環境

命令:
wget --no-check-certificate --no-cookie --header "Cookie: oraclelicense=accept-securebackup-cookie;" http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.rpm

?

如果發現 下載地址失效請登錄:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 這個鏈接找尋下載地址

?

安裝JDK8:
rpm -ivh jdk-8u181-linux-x64.rpm

檢查 JDK是否安裝成功:
java -version

?

1、部署Elasticsearch

安裝
官方文檔:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
官方網站有很多安裝方式,這里采用rpm安裝。

//進入local目錄
cd /usr/local


//創建elasticsearch文件夾

mkdir elasticsearch


//進入elasticsearch文件夾
cd elasticsearch


//開始下載
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.rpm


//開始安裝
rpm -ivh elasticsearch-5.5.0.rpm

?

配置

//查找安裝目錄
whereis elasticsearch


//進入安裝目錄
cd /etc/elasticsearch


//編輯配置文件
vi elasticsearch.yml

?

主要配置Network.host(本機ip)和http.port(默認9200)(目前單節點模式,其他參數請參考官方文檔)

?

?

啟動服務

//開啟端口9200
firewall-cmd --add-port=9200/tcp --permanent


//重新加載配置
firewall-cmd --reload

//設置服務開機啟動
systemctl enable elasticsearch


//啟動服務
systemctl start elasticsearch

?

在瀏覽器打開http://192.168.161.191:9200/,如下圖所示表示啟動成功了

?

2、部署kibana

官網文檔:https://www.elastic.co/guide/en/kibana/current/index.html

安裝

//進入elasticsearch目錄
cd /usr/local/elasticsearch


//下載Kibana rpm 64位包
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.5.0-x86_64.rpm


//安裝Kibana
rpm -ivh kibana-5.5.0-x86_64.rpm

?

配置

//進入安裝目錄
cd /etc/kibana


//編輯配置文件
vi kibana.yml

?

設置端口號:5601,Host地址:"192.168.161.191" ,elasticsearch服務地址為:"http://192.168.161.191:9200"

?

啟動服務

//開啟端口5601
firewall-cmd --add-port=5601/tcp --permanent


//重新加載配置
firewall-cmd --reload

//設置服務開機啟動
systemctl enable kibana


//啟動服務
systemctl start kibana

?

在瀏覽器打開http://192.168.161.191:5601,將進入到Kibana管理界面

?

3、部署logstash

官方文檔:https://www.elastic.co/guide/en/logstash/current/index.html

安裝

//進入elasticsearch目錄
cd /usr/local/elasticsearch


//下載logstash rpm包
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.5.0.rpm


//安裝rpm包
rpm -ivh logstash-5.5.0.rpm

?

配置

//進入安裝目錄
cd /etc/logstash


//進入conf.d目錄
cd conf.d


//新增配置信息
vi nlog.conf

?

?

直接在logstash.conf配置即可。

input{tcp{host=>"192.168.161.191"port=>8001}
}
filter{grok{match=>{"message"=>"#%{DATA:request_time}#%{DATA:log_level}#%{DATA:log_info}#"}}
}
output{elasticsearch{hosts=>["192.168.161.191:9200"]index=>"default"document_type=>"logs"}
}

  


input:采用TCP監控本機8001端口的消息
filter:使用grok 插件,自定義消息格式,推薦使用grokdebug在線進行調試
output:使用elasticsearch作為數據存儲

?

5、重啟修改配置后的logstash

如果是上面的第二種方式,采用tcp端口,則重啟需要配置 8001端口
即: -p 8001:8001

docker run -d --restart always?-p 8001:8001 --name logstash -v /home/logstashdata/config:/usr/share/logstash/config -v /home/logstashdata/pipeline:/usr/share/logstash/pipeline logstash:6.3.0

?

啟動服務

//開啟端口8001
firewall-cmd --add-port=8001/tcp --permanent


//重載配置
firewall-cmd --reload

//設置開機啟動
systemctl enable logstash


//啟動logstash
systemctl start logstash

三、asp.net core 結合NLog


?

1、在項目中的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"autoReload="true"><!-- the targets to write to --><targets><!-- 輸出到文件,這個文件記錄所有的日志 --><target xsi:type="File" name="allfile" fileName="Log\LogAll\${shortdate}.htm"layout="<HR COLOR=red>${longdate}<BR>${logger}<BR>${uppercase:${level}}<BR>${message} ${exception}<HR Size=1>" /><!-- 輸出到文件,這個文件記錄錯誤日志 --><target xsi:type="File" name="logError" fileName="Log\LogError\${shortdate}.htm"layout="<HR COLOR=red>【異常時間】:${date} <BR>【異常級別】:${level:uppercase=true} <BR>${message}<HR Size=1>" /><!-- 輸出到文件,這個文件記錄操作日志 --><target xsi:type="File" name="logInfo" fileName="Log\LogInfo\${shortdate}.htm"layout="<HR COLOR=red>【操作時間】:${date} <BR>【操作級別】:${level:uppercase=true} <BR>${message}<HR Size=1>"  /> <target xsi:type="Network" name="ownLog-tcp-Info" keepConnection="false" address ="tcp://192.168.161.191:8001"layout="#【操作時間】:${date} #【操作級別】:${level:uppercase=true} #${message}#"/><target xsi:type="Network" name="ownLog-tcp-Error" keepConnection="false" address ="tcp://192.168.161.191:8001"layout="#【異常時間】:${date} #【異常級別】:${level:uppercase=true} #${message}#"/></targets><!-- rules to map from logger name to target --><rules><!--All logs, including from Microsoft--><logger name="*" minlevel="Trace" writeTo="allfile" /><logger name="*" minlevel="Error" writeTo="logError" /><logger name="*" minlevel="Info" writeTo="logInfo" />
    <logger name="*" minlevel="Info" writeTo="ownLog-tcp-Info" /><logger name="*" minlevel="Error" writeTo="ownLog-tcp-Error" /><!--Skip non-critical Microsoft logs and so log only own logs--><logger name="Microsoft.*" maxLevel="Trace" final="true" /><!--<logger name="DotNetCore.CAP.*" maxLevel="Info" final="true" /><logger name="IdentityServer4.*" maxLevel="Info" final="true" />--></rules>
</nlog>

  

配置結束,運行項目。

打開kibana,添加一下索引,當然這個索引名稱需要和上面在logstash中的es索引一樣,因為是要根據索引名稱來查找數據的。

?

?

?添加索引完后,就可以查看數據啦。

?

等下一篇部署在Docker上。拭目以待吧。

?

?參考文檔:https://www.cnblogs.com/piscesLoveCc/p/7230426.html

?

asp.net?core 交流群:787464275?歡迎加群交流
如果您認為這篇文章還不錯或者有所收獲,您可以點擊右下角的【推薦】按鈕精神支持,因為這種支持是我繼續寫作,分享的最大動力!

作者:LouieGuo
聲明:原創博客請在轉載時保留原文鏈接或者在文章開頭加上本人博客地址,如發現錯誤,歡迎批評指正。凡是轉載于本人的文章,不能設置打賞功能,如有特殊需求請與本人聯系!

微信公眾號:歡迎關注? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?QQ技術交流群:?歡迎加群

? ? ? ? ? ? ? ??

轉載于:https://www.cnblogs.com/guolianyu/p/9600659.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279437.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279437.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279437.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Rhel7 設置目錄權限,acl權限

Rhel7 設置目錄權限&#xff0c;acl權限 改變用戶和組的所屬 Getfacl 取得 Setfacl設置 [rootdesktop0 tmp]# setfacl -m u:natasha:rw fstab [rootdesktop0 tmp]# setfacl -m u:harry:- fstab [rootdesktop0 tmp]# setfacl -m o::r fstab [rootdesktop0 tmp]# getfacl fstab #…

IT兄弟連 JavaWeb教程 AJAX定義以及解決的問題

2019獨角獸企業重金招聘Python工程師標準>>> Ajax是"Asynchronous JavaScript And XML"的縮寫(即&#xff1a;異步的JavaScript和XML)&#xff0c;是一種實現無頁面刷新獲取服務器數據的混合技術,Ajax這個概念的最早提出者是Jesse James Garrett。我們知道…

echo和@echo_如何在Echo Show和Echo Spot上切換到24小時時鐘

echo和echoIf you prefer the 24-hour clock format instead of the usual 12-hour format, Amazon recently (and quietly) added the ability to switch between the two on the Echo Show and Echo Spot. 如果您希望使用24小時制而不是通常的12小時制&#xff0c;那么Amazon…

springMVC--XML解析

一 springMVC 入口 web.xml; DispatcherServlet二 初始化過程 1.尋找init(); 查看DispatcherServlet時候時&#xff0c;繼承自servlet&#xff0c;肯定有初始化方法,DispatcherServlet繼承自FrameworkServlet FrameworkServlet繼承自HttpServletBean HttpServletBean繼承自Http…

Vim 4 常用插件

Vim 系列教程目錄: Vim 1 基本使用Vim 2 高級用法Vim 3 vimrcVim 4 常用插件Vim 5 其他編輯器的 Vim 插件Vim 插件網站 Vim 之所以強大, 有個很大的原因就是他有豐富的插件. 插件可以極大地增強 Vim 的功能. 那么去哪里下載插件呢? 插件怎么安裝和管理呢, 聽我慢慢道來. 先說到…

[Windows編程] 通過GetModuleHandleEx 得到函數調用者所在的DLL/EXE 原創陳本峰2009-02

在有些情況下需要得到函數調用者的模塊名字。比如你想限制你的某個函數只能被自己某個特定的DLL調用。 或者比如在異常處理中你想了解是那個DLL/EXE拋出了異常。API函數_ReturnAddress 和GetModuleHandleEx 函數可以幫助我們達到這個目的。以下代碼演示它們的用法&#xff1a;v…

生信入門-愛課程上的華中農業大學

1.生物大分子序列分析 2.主要技術 3.生物信息學的應用 4.應用2 轉載于:https://www.cnblogs.com/BlueBlueSea/p/9610313.html

pc端文本_使用即將推出的Windows功能從PC發送文本

pc端文本Windows/Android/iPhone: Send and receive SMS messages on your PC, and access all the files on your phone without taking it out of your pocket. Windows / Android / iPhone&#xff1a;在PC上發送和接收SMS消息&#xff0c;并訪問手機上的所有文件&#xff0…

日常工作用到的正則

1、手機號碼加*"13422222222".replace(/(\d{3})\d{4}(\d{4})/, $1****$2);2、隱藏銀行卡號"1111111111111111111".replace(/^(\d{4})\d(\d{4})$/, **** **** **** $2); 1111111111111111.replace(/.(?.)/g, *);3、遇見大寫字母改為"_"component…

非常詳細的Exchange 功能路線圖

非常詳細的Exchange 功能路線圖 此路線圖可幫助您熟悉 Microsoft Exchange Server 2010 中的所有功能。第一部分列出了可通過 Exchange 管理控制臺 (EMC) 或 Exchange 命令行管理程序管理的所有功能。該部分還說明如何在 EMC 中導航至功能&#xff0c;并提供指向相應管理主題的…

String類常用方法

定義方法類型描述public String(char[] value)構造直接將一個字符數組變為一個字符串public String(char[] value,int offset,int count)構造將一個指定范圍的字符數組變為字符串public String(byte[] bytes)構造將一個byte數組全部變為字符串public String(byte[],bytes,int o…

python基礎一 day6 文件操作

讀寫只會進行兩步&#xff0c; r模式下寫讀 seek是按字節去找的 for line in f: for循環是一行一行的讀取出來 strip默認去空格和換行符 空格、制表符、換行符、回車、換頁垂直制表符和換行符稱為 “空白字符” for in 一個不可變數據類型&#xff0c;比如字符串&#xff0c;先…

靜態路由默認路由的配置

靜態路由實驗 負載均衡的一點是個人理解&#xff0c;有不正確之處歡迎批評指正。 R1配置: s0/0/0口&#xff1a;193.1.1.9/30(本地) next-hop 193.1.1.10/30 point-to-point link F0/0設置子接口&#xff1a;F0/0.1 172.17.115.1/24 VLAN1 F0/0.5 172.17.110…

r中匯率市場_如何在Word 2013表中匯總行和列

r中匯率市場If you’re working in Word and you need to total values in a table, you can do so without having to enter the data into Excel and then copy and paste it into Word. Word can do simple calculations such as summing, multiplying, and averaging. 如果…

solidity事件詳解

很多同學對Solidity 中的Event有疑問&#xff0c;這篇文章就來詳細的看看Solidity 中Event到底有什么用&#xff1f; 寫在前面 Solidity 是以太坊智能合約編程語言&#xff0c;閱讀本文前&#xff0c;你應該對以太坊、智能合約有所了解&#xff0c;如果你還不了解&#xff0c;建…

敏捷開發

敏捷開發是1990年逐漸引起人們廣泛關注的新型軟件開發方式,它是具有應對快速變化需求的軟件開發能力。相對于非敏捷開發&#xff0c;它是一種以客戶需求為核心&#xff0c;持續迭代&#xff0c;循序漸進的開發方式&#xff0c;敏捷絕非是一種特定的開發方式&#xff0c;而是一種…

MpAndroidChart源碼修改之餅狀圖添加標志線

由于項目需要,需要改MpandroidChart源碼,下面,先看下效果圖:效果圖效果很簡單,但是由于所選依賴庫沒提供相關方法,所以就需要重寫源碼了.這條紅色的標志線其實就是那個影廳的均值嘛,這條線看著是不是和圖表中的連接線很像呢,那把連接線稍加改造不就可以了嗎?下面,先看下此依賴…

數據同步云端本地_如何從云端刪除Windows 8的同步數據

數據同步云端本地The ability to sync data and settings between computers running Windows 8 is great, but it does mean that your information – possibly personal – is stored in the cloud. If you have changed your mind about syncing and want to remove your d…

前端roadmap

轉載于:https://www.cnblogs.com/cleverle/p/9615061.html

mysql 8+ 忘記root密碼 解決方案

在安裝完數據庫后&#xff0c;由于自己不小心直接關閉了安裝窗口&#xff0c;或者長時間沒有使用root用戶登錄系統&#xff0c;導致忘記了root密碼&#xff0c;這時就需要重置MySQL的root密碼。當然&#xff0c;最簡單方式自然是刪除數據庫的data目錄&#xff0c;然后重新安裝數…