码迷,mamicode.com
首页 > Web开发 > 详细

.Net Core 商城微服务项目系列(四):ELK

时间:2018-10-28 22:08:02      阅读:571      评论:0      收藏:0      [点我收藏+]

标签:span   选择   kafka   uppercase   json   set   xsd   ash   color   

毫无疑问,项目里日志是必不可少的,在众多日志框架里ELK可以说是最好的选择之一,对于微服务项目来说也是一样。

之前写过关于ELK搭建的文章,所以这篇也就不再介绍了,本篇将会使用NLog搭配ElasticSearch和Kibana构建日志框架,本来是有Logstash的,但是接入Logstash后日志总是发送不成功,所以本篇将暂时不使用Logstash,等后面找到具体什么问题后再进行修改,最终整体的日志架构会是NLog+ELK+Kafka。

运行ELK有两种方式,一种是分别单独运行ElasticSearch和Kibana,另外一种是通过Docker,本次我们使用Docker:

docker run -d -p 5044:5044 -p 127.0.0.1:5601:5601 -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -v /var/data/elk:/var/lib/elasticsearch --name=elk sebp/elk

运行完成后分别访问ES和Kibana:http://IP:9200     http://IP:5601

技术分享图片

技术分享图片

然后在我们的每个项目里分别加入下面部分,通过Nuget引用如下包:

技术分享图片

 

添加NLog的配置文件ES.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">
    <!--ElasticSearch保存日志信息-->
    <target name="ElasticSearch" xsi:type="ElasticSearch" ConnectionStringName="ElasticSearchServerAddress"
            index="MI-Web-${date:format=yyyy.MM.dd}" documentType="doc" includeAllProperties="true"
                 layout="[${date:format=yyyy-MM-dd HH\:mm\:ss}][${level}] ${logger} ${message} ${exception:format=toString}">
      <field name="MachineName" layout="${machinename}" />
      <field name="Time" layout="${longdate}" />
      <field name="level" layout="${level:uppercase=true}" />
      <field name="logger" layout=" ${logger}" />
      <field name="message" layout=" ${message}" />
      <field name="exception" layout=" ${exception:format=toString}" />
      <field name="processid" layout=" ${processid}" />
      <field name="threadname" layout=" ${threadname}" />
      <field name="stacktrace" layout=" ${stacktrace}" />
      <!--<field name="Properties" layout="${machinename} ${longdate} ${level:uppercase=true} ${logger} ${message} ${exception}|${processid}|${stacktrace}|${threadname}" />-->
    </target>

    <target xsi:type="Null" name="blackhole" />
  </targets>
  <rules>
    <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
    <logger name="*" minlevel="Info" writeTo="ElasticSearch" />
  </rules>
</nlog>

其中标蓝色的部分是当前ElasticSearch运行的地址,在appsettings.json中配置:

技术分享图片

然后再Program.cs中添加如下部分:

技术分享图片

在Startup.cs中添加如下代码:

技术分享图片

到此,配置就算完成,在微服务项目里我们不可能每个地方都这样配置,而是封装成dll来引用,然后我们在需要的地方使用如下:

技术分享图片

技术分享图片

然后我们访问对应的方法,通过Kibana界面进行查看,我们首先需要在Management中配置下索引字段:

 

技术分享图片

配置完成后通过Discover查看:

技术分享图片

 

好了,完成,后面Logstash什么的会再进行修改的!!!

.Net Core 商城微服务项目系列(四):ELK

标签:span   选择   kafka   uppercase   json   set   xsd   ash   color   

原文地址:https://www.cnblogs.com/weiBlog/p/9867070.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!