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
七、效果图