Windows日志分析ELK环境搭建.NetCore+NLog+ElasticSearch,+Logstash+Kibana——一个日志收集和检索系统

一、简介

1、ElasticSearch是一个开源分布式搜索服务器。特点:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,节点数据均等,自动搜索负载等。它提供了一个分布式多用户的全文搜索引擎,基于RESTful web接口。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

2、Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。

3、Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

配置ELK收集nginx日志 elk收集windows日志_JAVA

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

配置ELK收集nginx日志 elk收集windows日志_配置ELK收集nginx日志_02

下载完成后双击安装,请看下你的安装路径,我这里安装到C:\Program Files\Java\jdk1.8.0_201

配置ELK收集nginx日志 elk收集windows日志_搜索_03

配置ELK收集nginx日志 elk收集windows日志_ELK_04

配置环境变量

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

配置ELK收集nginx日志 elk收集windows日志_搜索_05

配置ELK收集nginx日志 elk收集windows日志_elasticsearch_06

检查版本:java -version

配置ELK收集nginx日志 elk收集windows日志_ELK_07

三、安装。elasticsearch

点击下载elasticsearch 也可以官网下载

这个是msi文件直接安装即可,如果是你下载的压缩文件请解压后配置环境变量。

为了方便管理我全部装到D盘同一个文件夹中

配置ELK收集nginx日志 elk收集windows日志_JAVA_08

建议装成服务

配置ELK收集nginx日志 elk收集windows日志_JAVA_09

配置ELK收集nginx日志 elk收集windows日志_配置ELK收集nginx日志_10

不用勾选

配置ELK收集nginx日志 elk收集windows日志_配置ELK收集nginx日志_11

配置ELK收集nginx日志 elk收集windows日志_JAVA_12

successfully

打开任务管理器查看服务是否已运行

配置ELK收集nginx日志 elk收集windows日志_配置ELK收集nginx日志_13

查看效果 http://localhost:9200

配置ELK收集nginx日志 elk收集windows日志_elasticsearch_14

四、Kibana

1、下载kibana 也可以官网下载

2、安装

压缩包解压后打开文件夹kibana-5.6.15-windows-x86\config

配置ELK收集nginx日志 elk收集windows日志_JAVA_15

3、配置

找到文件kibana.yml

配置server.host和elasticsearch.url

配置ELK收集nginx日志 elk收集windows日志_配置ELK收集nginx日志_16

浏览:http://localhost:5601五、Logstash

1、下载logstash也可以官网下载

2、安装

解压文件夹后打开logstash-5.6.15\bin文件夹

配置ELK收集nginx日志 elk收集windows日志_ELK_17

安装目录bin下创建文件logstash-simple.conf

内容input {http{port=>8001}}output {elasticsearch { hosts => [“localhost:9200”] }stdout { codec => rubydebug }}
 浏览:http://localhost:9600六、.NetCore+NLog

1、安装

创建.netcore项目然后管理NuGet包

配置ELK收集nginx日志 elk收集windows日志_JAVA_18

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

七、效果图

配置ELK收集nginx日志 elk收集windows日志_ELK_19

配置ELK收集nginx日志 elk收集windows日志_搜索_20