什么是ELK
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。
Elasticsearch
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
Kibana
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
如何使用ELK
ELK环境快速搭建
这里推荐使用docker-compose
一键搭建 地址:https://github.com/deviantony/docker-elk.git
使用方法:
git clone https://github.com/deviantony/docker-elk.git
cd docker-elk
docker-compose up -d
安装完之后,浏览器上访问安装服务器的ip:5601 (注意端口号)可以打开kibana
管理后台
注意:在logstash/pipeline/logstash.conf``您的logstash
input
配置是 tcp
5000
后面我们会用到。
net core项目中使用
代码项目中添加
项目引用Nlog
的nuget
包NLog.Extensions.Logging
在Startup.cs
中添加nlog
启动
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddNLog();//添加NLog
……
在项目的 nlog.config
文件中targets
节点
添加子target
<!-- Tcp日志target -->
<target xsi:type="Network"
name="ownLog-tcp"
keepConnection="false"
address ="tcp://ELK服务器ip:5000"
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}#"
/>
rules节点添加配置
<logger name="*" minlevel="Trace" writeTo="ownLog-tcp" />
启动项目,生成日志
配置kibana
添加index pattern
进入刚刚搭建好的kibana
后台,按照指引创建一个index pattern
然后 discover你的log吧