一、ELK簡介 ELK是Elasticsearch、Logstash和Kibana首字母的縮寫。這三者均是開源軟體,這三套開源工具組合起來形成了一套強大的集中式日誌管理平臺 Elasticsearch是一個分散式搜索和分析引擎,具有高可伸縮、高可靠和易管理等特點,基於Apache Lucene構建, ...
一、ELK簡介
ELK是Elasticsearch、Logstash和Kibana首字母的縮寫。這三者均是開源軟體,這三套開源工具組合起來形成了一套強大的集中式日誌管理平臺
Elasticsearch是一個分散式搜索和分析引擎,具有高可伸縮、高可靠和易管理等特點,基於Apache Lucene構建,能對大容量的數據進行接近實時的存儲、搜索和分析操作。通過簡單的配置,Elasticsearch就會幫你管理集群、分片、故障轉移、主節點選舉等,還提供集群狀態的監控介面。
Logstash是一個用來搜集、解析、過濾日誌的工具。支持幾乎任何類型的日誌,包括系統日誌、業務日誌和安全日誌,支持file、syslog、tcp、stdin、redis和kafka等多種接收方式。支持elasticrsearch、email、exec、nagios、tcp、hdfs等多種方式輸出
Kibana是一個開源的分析與可視化平臺,用於搜索、分析和可視化存儲在 Elasticsearch中的數據,然後以圖表的方式展現出來,還允許用戶自定義查詢、過濾和彙總數據。
二、安裝(這裡以windows為例)
1. 第一步:下載Elasticsearch 下載地址:https://www.elastic.co/cn/downloads/elasticsearch 選擇你適合的平臺版本,如下圖所示:
2. 下載Logstash 下載地址:https://www.elastic.co/cn/downloads/logstash,選擇你適合的平臺,如下圖所示:
3.下載Kibana,下載地址:https://www.elastic.co/cn/downloads/kibana,選擇你適合的平臺,如下圖所示:
將壓縮包解壓到文件,如圖所示:
切換到elasticsearch-7.3.2\bin,點擊elasticsearch.bat即可完成安裝,打開http://localhost:9200/如下圖所示即安裝完成
安裝node.js和grunt,從地址:https://nodejs.org/en/download/ 下載相應系統的msi,雙擊安裝
打開命令提示符輸入npm install -g grunt-cli,如下圖所示則grunt安裝完成
進入\elasticsearch-7.3.2\config,打開elasticsearch.yml,在文件末尾加上以下代碼:
http.cors.enabled: true
http.cors.allow-origin: "*"
雙擊elasticsearch.bat重啟es
下載Head,下載地址:https://github.com/mobz/elasticsearch-head,下載後將elasticsearch-head-master 解壓到elasticsearch-7.3.2文件夾下,如圖所示:
修改elasticsearch-head-master文件夾下的Gruntfile.js,加上hostname:’*’
在\elasticsearch-7.3.2\elasticsearch-head-master文件夾下執行npm install
安裝完成後執行grunt server 或者npm run start 運行head插件,http://瀏覽器下訪問http://localhost:9100/
logstash安裝:解壓後啟動使用配置文件就可以了
Kibana安裝:kibana-7.3.2\config文件夾下修改kibana.yml, 取消server.port,server.host,server.name,elasticsearch.hosts,i18n.locale前面的#號,並將i18n.locale的值改為zh-CN,運行bin文件夾下的kibana.bat,打開localhost:5601,如圖所示則安裝成功
三、.Net Core使用Nlog調用ELK寫入日誌
1、NuGet安裝依賴
2、配置nlog.config
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" internalLogToConsole="true"> <extensions> <add assembly="NLog.Targets.ElasticSearch"/> </extensions> <targets async="true"> <!--https://github.com/reactive-markets/NLog.Targets.ElasticSearch/wiki--> <target xsi:type="ElasticSearch" name="ElasticSearch" uri="http://127.0.0.1:9200" index="Web" documentType="logevent" includeAllProperties="false" requireAuth="false"> <field name="host" layout="${machinename}" /> <field name="application" layout="${applicationName}" /> <field name="logged" layout="${date}" /> <field name="level" layout="${level}" /> <field name="message" layout="${message}" /> <field name="logger" layout="${logger}" /> <field name="callSite" layout="${callsite:filename=true}" /> <field name="exception" layout="${exception:tostring}" /> <field name="IP" layout="${aspnet-request-ip}" /> <field name="User" layout="${aspnetcore-request-user}" /> <field name="serverName" layout="${machinename}" /> <field name="url" layout="${aspnetcore-request-url}" /> </target> </targets> <rules> <logger name="*" minlevel="INFO" writeTo="ElasticSearch" /> </rules> </nlog>View Code
3、Startup.cs配置
4、應用
可以看到以下數據則表示調用成功