当前位置: 移动技术网 > IT编程>开发语言>.net > ELK分布式日志+NLog在.NetCore中的应用

ELK分布式日志+NLog在.NetCore中的应用

2019年11月14日  | 移动技术网IT编程  | 我要评论

锈水财阀军需官,韩文翻译在线,irene keng

一、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 下载地址: 选择你适合的平台版本,如下图所示:

      2. 下载logstash 下载地址:,选择你适合的平台,如下图所示:

 

       3.下载kibana,下载地址:https://www.elastic.co/cn/downloads/kibana,选择你适合的平台,如下图所示: 

     将压缩包解压到文件,如图所示:

  切换到elasticsearch-7.3.2\bin,点击elasticsearch.bat即可完成安装,打开http://www.lhsxpumps.com/_localhost:9200/如下图所示即安装完成

      安装node.jsgrunt,从地址: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://www.lhsxpumps.com/_浏览器下访问http://localhost:9100/

     logstash安装:解压后启动使用配置文件就可以了

       kibana安装:kibana-7.3.2\config文件夹下修改kibana.yml, 取消server.portserver.hostserver.nameelasticsearch.hostsi18n.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、应用

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

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网