zoukankan      html  css  js  c++  java
  • 话说ELK使用安装,结合.NET Core、ABP框架Nlog日志

    介绍ELK

    它是一个解决方案,是Logstash、Elastaicsearch、Kibana的缩写,为什么使用:想想你是很多系统,出了问题还要登录到服务器查看日志、或者系统部署在客户的机器上,你甚至没有权限登录到别人服务器,作为开发人员又要修复bug!!再者,我们日志可以根据日志级别做分析,Kibana提供很多图形展示,很好的分析日志,从而检测系统健康。

    • 数据源:可以来自Redis、Nginx、Docker、Rabbitmq、Consul、系统日志等等各式各样的日志文件。
    • Logstash:开源的服务器数据处理管道,能够同时从多个来源采集数据、转换数据、然后将数据存到数据库中。
    • Elastaicsearch:搜索、分析、存储数据。
    • Kibana:数据可视化Web。
    • Beats: 轻量型采集器的平台。从边缘机器想Logstash和Elasticsearch发送数据。
    • Filebeat:轻量型日志采集器。

    安装ELK

    这里采用懒人安装,Docker容器化安装,安装前先保证自己已经安装Docker-compose,安装地址:https://github.com/deviantony/docker-elk.git,安装完访问服务地址:http://localhost:5601http://localhost:9200.


    ELK中文官方文档
    Elasticsearch 权威指南中文版(2.x)
    Kibana 中文手册(6.0)
    好了,ELK内容到这里把!建议、最好看一首文档,就不要去看博客了,因为都是抄来抄去,想骂人。分割线

    ABP集成ELK

    • ABP开始是Log4,一开始以为Log4这里可以支持集成ELK,后续发现比较坑。因为没有Log4支持的Nuget包,后续转到Nlog。ABP很多文档说转换日志管理很简单,很多博客都是一笔带过,知其然不知其所以然,我看到这些博客心里早已是万马奔腾,mmp,最后在github找到一个开源的abp的nlog包Abp.Castle.NLog,另外还需要安装另外两个包NLog.Web.AspNetCore,NLog.Extensions.Logging,如果你不安装,在nlog.config中的一些参数你将不可用。
      .net core 配置nlog

      nlog配置文件:
    <?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"
          autoReload="true"
          internalLogLevel="Warn"
          internalLogFile="internal-nlog.txt">
    
      <extensions>
        <add  assembly="NLog.Web.AspNetCore"/>
      </extensions >
    
      <variable name="logDirectory" value="${basedir}logs"/>
    
      <!--define various log targets-->
      <targets>
    
        <!--write logs to file-->
        <target xsi:type="File" name="allfile" fileName="${logDirectory}
    log-all-${shortdate}.log"
                layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
    
        <target xsi:type="Network"
                name="elastic"
                keepConnection="false"
                address ="tcp://ip地址:5000"
                index="msglog-${shortdate}"
                layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
        />
    
        <target xsi:type="Null" name="blackhole" />
    
      </targets>
    
      <rules>
        <!--All logs, including from Microsoft-->
        <logger name="*" minlevel="Trace" writeTo="allfile" />
    
        <!--Skip Microsoft logs and so log only own logs-->
        <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
        <logger name="*" minlevel="Trace" writeTo="elastic" />
    
      </rules>
    </nlog>
    
    

    注意:ip地址哪里的端口为你配置logstash的input地址:

    ABP日志写入

    ABP日志通过属性注入,直接看代码了

  • 相关阅读:
    C#
    C#
    ssh学习笔记
    (已解决)Could not open '/var/lib/nova/mnt/*/volume-*': Permission denied
    RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in major version and less than or equal in minor version as the specified version cap 4.11.
    如何在linux下安装idea
    The system has no LUN copy license
    调整mysql数据库最大连接数
    mysql数据库编码问题
    cinder支持nfs快照
  • 原文地址:https://www.cnblogs.com/moyhui/p/9358164.html
Copyright © 2011-2022 走看看