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

毫无疑问,项目里日志是必不可少的,在众多日志框架里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什么的会再进行修改的!!!

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

时间: 2024-10-11 04:42:18

.Net Core 商城微服务项目系列(四):ELK的相关文章

.Net Core 商城微服务项目系列(一):使用IdentityServer4构建基础登录验证

这里第一次搭建,所以IdentityServer端比较简单,后期再进行完善. 1.新建API项目MI.Service.Identity,NuGet引用IdentityServer4,添加类InMemoryConfiguration用于配置api和客户端资源: public class InMemoryConfiguration { public static IConfiguration Configuration { get; set; } /// <summary> /// Define

.Net Core 商城微服务项目系列(七):使用消息队列(RabbitMQ)实现服务异步通信

RabbitMQ是什么,怎么使用我就不介绍了,大家可以到园子里搜一下教程.本篇的重点在于实现服务与服务之间的异步通信. 首先说一下为什么要使用消息队列来实现服务通信:1.提高接口并发能力.  2.保证服务各方数据最终一致.  3.解耦. 使用消息队列通信的有点就是直接调用的缺点,比如在直接调用过程中发生未知错误,很可能就会出现数据不一致的问题,这个时候就需要人工修补数据,如果有过这个经历的同学一定是可怜的,人工修补数据简直痛苦!!再比如高并发情况下接口直接挂点,这就更直白了,接口挂了,功能就挂了

.Net Core 商城微服务项目系列(八):购物车

最近加班有点多,一周五天,四天加班到11点+,心很累.原因是我当前在的这个组比较特殊,相当于业务的架构组,要为其它的开发组提供服务和监控.所以最近更新的也少,不过这个元旦三天假应该会更新三篇. 这篇是介绍一下商城的购物车,代码就不详细介绍了,因为技术点都已经再前面几篇介绍过了,无非就是产品的增删该查,当然,数据的更新交互这一块使用的是我们上一篇介绍的消息队列,比如购车的添加.修改.删除. 商城到这块功能方面就不打算继续往下写了,因为后面的功能都是围绕业务展开,技术方面千篇一律,而我们的关注点在于

.Net Core 商城微服务项目系列(十):使用SkyWalking构建调用链监控(2019-02-13 13:25)

SkyWalking的安装和简单使用已经在前面一篇介绍过了,本篇我们将在商城中添加SkyWalking构建调用链监控. 顺带一下怎么把ES设置为Windows服务,cd到ES的bin文件夹,运行elasticsearch-service.bat install. 首先我们需要在每个服务里通过NuGet引用SkyAPM.Agent.AspNetCore,完成之后我们添加配置文件skyapm.json,可以通过SkyWalking的脚本命令自动生成,也可以手动新建,这里贴一下: { "SkyWalk

.Net Core 商城微服务项目系列(十五): 构建定时任务调度和消息队列管理系统

一.系统描述 嗨,好久不见各位老哥,最近有点懒,技术博客写的太少了,因为最近在写小说,写的顺利的话说不定就转行了,哈哈哈哈哈哈哈哈哈. 今天要介绍的是基于.Net Core的定时任务调度和消息队列管理系统.相信大家对这两个肯定都已经很熟悉了,在开发过程中,这两个组件扮演了不可或缺的角色: 消息队列帮助我们进行 ”解耦“.”异步“.”削峰“ 定时任务帮助我们进行 "后台".”监控".“补偿" 定时任务调度系统大家都介绍过很多次了,园子里的很多文章我也都拜读过,我相信大

.Net Core 商城微服务项目系列(二):使用Ocelot + Consul构建具备服务注册和发现功能的网关

1.服务注册 在上一篇的鉴权和登录服务中分别通过NuGet引用Consul这个包,同时新增AppBuilderExtensions类: public static class AppBuilderExtensions { public static IApplicationBuilder RegisterConsul(this IApplicationBuilder app,IApplicationLifetime lifetime,ServiceEntity serviceEntity) {

.Net Core 商城微服务项目系列(三):Ocelot网关接入Grafana监控

使用网关之后我们面临的一个问题就是监控,我们需要知道网关的实时状态,比如当前的请求吞吐量.请求耗费的时间.请求峰值甚至需要知道具体哪个服务的哪个方法花费了多少时间.网关作为请求的中转点是监控品牌的要塞. 本篇将针对Ocelot添加Metrics+InfluxDB+Grafana架构的监控. 1.下载安装InfluxDB和Grafana 在使用前需要先下载InfluxDB和Grafana这两个工具,下载安装方式大家可以先看下Edison Zhou大神的这篇:https://www.cnblogs.

.Net Core 微服务容器系列基础目录篇

1.开场白 HI,各位老铁,大家端午好,之前写了些关于.net core商城系列的文章,有点乱,今天心血来潮想着整理一下(今天只是先把目录列出来,后面的每篇文章这两天会进行重新修改的,目前先将就看下). 简单介绍一下,博主目前就职于某电商公司,目前工作用的是.net core,业余时间也会看下Java,公司内部目前也是多语言并存,毕竟很多工具和技术对于这两种语言都是相通的,所以多了解下哈. 本系列项目将会以.net core+Docker+K8s来搭建,当然你用java来改写一下也是没问题的,因

.NET平台微服务项目汇集

最近博客园出现了一篇文章<微服务时代之2017年五军之战:Net PHP谁先死>,掀起了一波撕逼,作者只是从一个使用者的角度来指点江山,这个姿势是不对的..NET Core就是专门针对模块化的微服务架构而设计,在微服务架构这方面Java的Spring Cloud具有非常高的人气,这个正是这篇文章作者的立脚点.然后他没有看到蓬勃发展的.NET 社区的微服务的相关框架,本文主要梳理下当前.NET社区微服务的相关项目的汇集. 1. Service Fabric 微软作为.NET的主战场,自然在当前的