天天看點

Windows日志分析ELK環境搭建

Windows日志分析ELK環境搭建

.NetCore+NLog+ElasticSearch,+Logstash+Kibana——一個日志收集和檢索系統

一、簡介

1、ElasticSearch是一個開源分布式搜尋伺服器。特點:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多資料源,節點資料均等,自動搜尋負載等。它提供了一個分布式多使用者的全文搜尋引擎,基于RESTful web接口。設計用于雲計算中,能夠達到實時搜尋,穩定,可靠,快速,安裝使用友善。

2、Logstash是一個完全開源的工具,它可以對你的日志進行收集、過濾、分析,支援大量的資料擷取方法,并将其存儲供以後使用(如搜尋)。

3、Kibana 是一個基于浏覽器頁面的Elasticsearch前端展示工具,也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您彙總、分析和搜尋重要資料日志。

Windows日志分析ELK環境搭建

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不支援已踩坑)

Windows日志分析ELK環境搭建

下載下傳完成後輕按兩下安裝,請看下你的安裝路徑,我這裡安裝到C:\Program Files\Java\jdk1.8.0_201

Windows日志分析ELK環境搭建
Windows日志分析ELK環境搭建

配置環境變量

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
           
Windows日志分析ELK環境搭建
Windows日志分析ELK環境搭建

檢查版本:java -version

Windows日志分析ELK環境搭建

三、安裝。elasticsearch

點選下載下傳elasticsearch 也可以官網下載下傳

這個是msi檔案直接安裝即可,如果是你下載下傳的壓縮檔案請解壓後配置環境變量。

為了友善管理我全部裝到D盤同一個檔案夾中

Windows日志分析ELK環境搭建

建議裝成服務

Windows日志分析ELK環境搭建
Windows日志分析ELK環境搭建

不用勾選

Windows日志分析ELK環境搭建
Windows日志分析ELK環境搭建

successfully

打開任務管理器檢視服務是否已運作

Windows日志分析ELK環境搭建

檢視效果 http://localhost:9200

Windows日志分析ELK環境搭建

四、Kibana

1、下載下傳kibana 也可以官網下載下傳

2、安裝

壓縮包解壓後打開檔案夾kibana-5.6.15-windows-x86\config

Windows日志分析ELK環境搭建

3、配置

找到檔案kibana.yml

配置server.host和elasticsearch.url

Windows日志分析ELK環境搭建

浏覽:http://localhost:5601

五、Logstash

1、下載下傳logstash也可以官網下載下傳

2、安裝

解壓檔案夾後打開logstash-5.6.15\bin檔案夾

Windows日志分析ELK環境搭建

安裝目錄bin下建立檔案logstash-simple.conf

内容input {http{port=>8001}}output {elasticsearch { hosts => [“localhost:9200”] }stdout { codec => rubydebug }}

浏覽:http://localhost:9600

六、.NetCore+NLog

1、安裝

建立.netcore項目然後管理NuGet包

Windows日志分析ELK環境搭建

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

七、效果圖

Windows日志分析ELK環境搭建
Windows日志分析ELK環境搭建

繼續閱讀