什么是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吧