• 话说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日志通过属性注入,直接看代码了

  • 相关阅读:
    字符串函数使用与 Culture
    学习 Monitor使用
    Extjs的ajax实现
    linux下tomcat的安装及部署
    使用jquery插件实现打印指定区域功能
    hibernate的各种保存方式的区别 (save,persist,update,saveOrUpdte,merge,flush,lock)等
    html 树形菜单
    Ext4 修复对话框按钮翻译
    spring aop expression简单说明
    tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:)
  • 原文地址:https://www.cnblogs.com/moyhui/p/9358164.html
Copyright © 2020-2023  润新知