Windows日志分析ELK環境搭建
.NetCore+NLog+ElasticSearch,+Logstash+Kibana——一個日志收集和檢索系統
一、簡介
1、ElasticSearch是一個開源分布式搜尋伺服器。特點:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多資料源,節點資料均等,自動搜尋負載等。它提供了一個分布式多使用者的全文搜尋引擎,基于RESTful web接口。設計用于雲計算中,能夠達到實時搜尋,穩定,可靠,快速,安裝使用友善。
2、Logstash是一個完全開源的工具,它可以對你的日志進行收集、過濾、分析,支援大量的資料擷取方法,并将其存儲供以後使用(如搜尋)。
3、Kibana 是一個基于浏覽器頁面的Elasticsearch前端展示工具,也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您彙總、分析和搜尋重要資料日志。
4、版本資訊:Windows10企業版,java(1.8_201),ElasticSearch(5.6.15),Logstash(5.6.15),Kibana(5.6.15),.Net Core2.2,NLog(4.5.11)
二、首先安裝java(在此聲明不要采用最新版的java,Logstash不支援已踩坑)
下載下傳完成後輕按兩下安裝,請看下你的安裝路徑,我這裡安裝到C:\Program Files\Java\jdk1.8.0_201
配置環境變量
JAVA_HOME:C:\Program Files\Java\jdk1.8.0_201
CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(注意.也要)
PATH:%JAVA_HOME%\bin
檢查版本:java -version
三、安裝。elasticsearch
點選下載下傳elasticsearch 也可以官網下載下傳
這個是msi檔案直接安裝即可,如果是你下載下傳的壓縮檔案請解壓後配置環境變量。
為了友善管理我全部裝到D盤同一個檔案夾中
建議裝成服務
不用勾選
successfully
打開任務管理器檢視服務是否已運作
檢視效果 http://localhost:9200
四、Kibana
1、下載下傳kibana 也可以官網下載下傳
2、安裝
壓縮包解壓後打開檔案夾kibana-5.6.15-windows-x86\config
3、配置
找到檔案kibana.yml
配置server.host和elasticsearch.url
浏覽:http://localhost:5601
五、Logstash
1、下載下傳logstash也可以官網下載下傳
2、安裝
解壓檔案夾後打開logstash-5.6.15\bin檔案夾
安裝目錄bin下建立檔案logstash-simple.conf
内容input {http{port=>8001}}output {elasticsearch { hosts => [“localhost:9200”] }stdout { codec => rubydebug }}
浏覽:http://localhost:9600
六、.NetCore+NLog
1、安裝
建立.netcore項目然後管理NuGet包
2、自動生成了nlog.config配置我們來更改它
<?xml version="1.0" encoding="utf-8" ?>
<extensions>
<!--enable NLog.Web for ASP.NET Core-->
<add assembly="NLog.Web.AspNetCore"/>
</extensions>
<!-- define various log targets -->
<!--定義日志檔案目錄-->
<variable name="logDirectory" value="${basedir}/logs/${shortdate}"/>
<variable name="nodeName" value="node1"/>
<targets async="true">
<!-- 全部日志target -->
<target xsi:type="File"
name="allfile"
fileName="${logDirectory}/nlog-all/${shortdate}.log"
layout="#node1#${longdate}#${logger}#${uppercase:${level}}#${callsite}#${callsite-linenumber}#${aspnet-request-url}#${aspnet-request-method}#${aspnet-mvc-controller}#${aspnet-mvc-action}#${message}#${exception:format=ToString}#"
keepFileOpen="false"
/>
<!-- 本地檔案日志target -->
<target xsi:type="File"
name="ownLog-file"
fileName="${logDirectory}/nlog-${level}/${shortdate}.log"
layout="#${longdate}#${nodeName}#${logger}#${uppercase:${level}}#${callsite}#${callsite-linenumber}#${aspnet-request-url}#${aspnet-request-method}#${aspnet-mvc-controller}#${aspnet-mvc-action}#${message}#${exception:format=ToString}#"
keepFileOpen="false"
/>
<!-- Tcp日志target -->
<target xsi:type="Network"
name="ownLog-tcp"
keepConnection="false"
address ="http://localhost:8001"
layout="${message}"
/>
<!--grok 規則-->
<!--%#{DATA:request_time}#%{DATA:node_name}#%{DATA:class_name}#%{DATA:log_level}#%{DATA:call_site}#%{DATA:line_number}#%{DATA:request_url}#%{DATA:request_method}#%{DATA:container_name}#%{DATA:action_name}#%{DATA:log_info}#%{DATA:exception_msg}#-->
<!--空白-->
<target xsi:type="Null" name="blackhole" />
</targets>
<!--日志級别 Trace -》Debug-》 Info -》Warn-》 Error-》 Fatal-->
<!--日志規則-->
<rules>
<!--全部日志, 包括Microsoft日志-->
<logger name="*" minlevel="Trace" writeTo="allfile" />
<!--自定義日志,排除Microsoft日志-->
<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
<logger name="*" minlevel="Debug" writeTo="ownLog-file" />
<logger name="*" minlevel="Info" writeTo="ownLog-tcp" />
</rules>
3、另外Startup.cs檔案也需要配置
Configure中新增
#region Nlog
app.UseStaticFiles();
//使用NLog作為日志記錄工具
loggerFactory.AddNLog();
//引入Nlog配置檔案
env.ConfigureNLog(“NLog.config”);
#endregion
七、效果圖