一、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

<?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>

3、Startup.cs配置

4、应用

可以看到以下数据则表示调用成功

最新文章

  1. c语言实现的协程
  2. [leetcode 35] Search Insert Position
  3. 卸载金山猎豹免费WIfi后,上不了网的解决办法
  4. 转MYSQL学习(三) 函数
  5. 用mtrace检查内存泄漏
  6. 步步入佳境---UI入门(4) --简单练习
  7. Android- assent和raw的区别
  8. 2017级C语言教学总结
  9. plsql和tsql常用函数比较
  10. How to Collect Bne Log Files for GL Integrators
  11. VS2012添加数据库连接时报错,未能加载文件或程序集microsoft.sqlserver.management.sdk.sfc
  12. Business talking in English
  13. js 获取属性名称
  14. C语言复习---用筛选法求100之内的素数
  15. html可用于跨域的三个标签
  16. format ZKFC失败
  17. XCode - vmware虚拟机安装XCode进行iPhone真机调试
  18. How to update Ionic cli and libraries
  19. 每日一句英语:怎样回答美国人的How is it going问候语?
  20. new BigDecimal(0.01) 与 new BigDecimal(String.valueOf(0.01))的区别 (转)

热门文章

  1. 02-19 k近邻算法(鸢尾花分类)
  2. LeetCode_682-Baseball Game
  3. 安装、卸载 cocoapods
  4. mac下编译openjdk8?so easy!
  5. Numpy中的一点小知识
  6. thinkphp5框架笔记(ing)
  7. go-select
  8. python学习-文件I/O
  9. ESP8266开发之旅 网络篇⑨ HttpClient——ESP8266HTTPClient库的使用
  10. LaTeX常用篇(三)---矩阵与表格