(精华)2020年10月2日 微服务 日志中心

举报
愚公搬代码 发表于 2021/10/19 00:01:05 2021/10/19
【摘要】 什么是日志中心 什么是日志 举例说明,在做的各位有没有在读小学的,都是读过小写的,我们读小学的时候,经常做一个事情,老师要求我们写日记,我们感觉非常烦,那么,日记记录的是什么,是我们每一天做的事情。专...

什么是日志中心

什么是日志

举例说明,在做的各位有没有在读小学的,都是读过小写的,我们读小学的时候,经常做一个事情,老师要求我们写日记,我们感觉非常烦,那么,日记记录的是什么,是我们每一天做的事情。专业表述,日记是不是用来记录人每一天活动的状态,

同理,在软件中,为了记录软件的运行状态,那么记录这种状态的叫做日志

日记是用来记录人的状态,那么日志是用来记录软件系统运行的状态。

日记组成:时间,地点,做了什么。(条件和结果)

日志组成:时间,类,方法信息(输入参数和输出结果)

什么是日志中心

就是统一记录多个系统的运行日志,就叫做日志中心。

为什么要使用日志中心

见图,微服务系统中使用日志中心

1、微服务系统运行正常,一切正常的情况下,不需要使用日中中心

2、微服务系统运行运行异常

​ 2.1 微服务系统内部出现了异常,无法进行排查

​ 2.2 微服务系统调用过程出现了内部异常,定位日志问题非常麻烦,一会在这个地方用,一会在那个地方用,不是非常好维护,

在这两种情况下,所以就出现了日志中心,来统一排查问题

日志中心框架

ELK:ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana ,

为什么选择ELK

比较不同的日志框架

对于目前ELK成为了微服务系统和分布式系统的主流,在市面上还没有其他的日志中心可选

这个时候需要和其他进行对比,只有对比才有效果,就是他的优势在哪里,其他日志中心框架的缺陷在哪里。

微服务中如何使用ELK

ELK组成

Logstash :日志收集,处理器

Elasticsearch :日志存储器

Kibana:日志可视化分析器(webui)

在这三个组件里面,Logstash 是核心地位

Logstash 组成

客户端:收集日志 ==== 客户端有哪些NLog,Log4j

服务端:接受客户端收集来的日志进行进行处理。

ELK集成原理图

见图进行展示

微服务中使用ELK

条件

1、微服务系统

2、Elasticsearch 6.6.0

3、Logstash 6.6.0

4、Kibana 6.6.0

5、NLog

步骤

1、微服务系统操作

​ 1.1 微服务系统已经准备好

2、 Elasticsearch 6.6.0操作

​ 2.1 Elasticsearch 6.6.0下载

​ 下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-6-6-0

​ 文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/6.6/index.html

​ 2.2 Elasticsearch 6.6.0下载

​ 解压后,在elasticsearch-6.6.0/config目录下,在elasticsearch.yml内配置

network.host: 0.0.0.0
增加
thread_pool.bulk.queue_size: 1000

  
 
  • 1
  • 2
  • 3

​ 2.3 Elasticsearch 6.6.0启动

​ 解压后,在elasticsearch-6.6.0/bin目录下,双击启动

	elasticsearch.bat

  
 
  • 1

​ 2.4 Elasticsearch 6.6.0访问

​ 浏览器输入:http://localhost:9200,显示结果,启动成功

3、Logstash 6.6.0操作

​ 3.1 Logstash 6.6.0下载

​ 下载地址:https://www.elastic.co/cn/downloads/past-releases/logstash-6-6-0

​ 文档地址:https://www.elastic.co/guide/en/logstash/6.6/index.html

​ 3.2 Logstash 6.6.0配置

​ 解压后,在logstash-6.6.0/config目录下,创建logstash.conf文件,在其中添加配置信息

input {
    tcp {
        port => "9900"
        type => "microservice-log"
    }
}
    
output {
  elasticsearch { 
        hosts => ["http://localhost:9200"]
        index => "microservice-%{+YYYY.MM.dd}"
		#user => "elastic"
		#password => "changeme"
  }
}	

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

​ 3.3 Logstash 6.6.0启动

logstash -f  ../config/logstash.conf

  
 
  • 1

​ 3.4 Logstash 6.6.0访问

​ 浏览器输入:http://localhost:9600,显示结果,启动成功

4、Kibana 6.6.0操作

​ 4.1 Kibana 6.6.0下载

​ 下载地址:https://www.elastic.co/cn/downloads/past-releases/kibana-6-6-0

​ 文档地址:https://www.elastic.co/guide/en/kibana/6.6/index.html

​ 4.2 Kibana 6.6.0配置

​ 解压后,在kibana-6.6.0-windows-x86_64/config目录下,打开kibana.yml文件,在其中添加配置信息

server.port: 5601
server.host: "localhost"
elasticsearch.hosts: ["http://localhost:9200"]

  
 
  • 1
  • 2
  • 3

​ 3.3 Kibana 6.6.0启动

在kibana-6.6.0-windows-x86_64/bin目录下,双击

kibana.bat

  
 
  • 1

​ 3.4 Logstash 6.6.0访问

​ 浏览器输入:http://localhost:5601,显示结果,启动成功

5、微服务系统操作

​ 5.1 NLog操作

​ 5.1.1 NLog下载

​ 在RuanMou.MicroService.Core微服务使用Nuegt安装NLog.Web.AspNetCore

Nuget NLog.Web.AspNetCore

  
 
  • 1

​ 5.1.2 NLog配置

​ 在RuanMou.MicroService.AggregateService微服务中创建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"
     autoReload="true"
       internalLogLevel="Warn"
       internalLogFile="internal-nlog.txt">
  <!--define various log targets-->
  <targets>
    <target name="logstash" xsi:type="Network" address="tcp://127.0.0.1:9900" layout="${message}"/>
  </targets>
  <rules>
    <logger name="*" level="Info" writeTo="logstash" />
  </rules>
</nlog>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

​ 5.1.3 NLog加载

​ 在RuanMou.MicroService.AggregateService微服务中打开Program.cs,配置内容为

 public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    // 1、添加NLog日志并加载nlog.config文件
                    webBuilder.ConfigureLogging(logbuilder => {
                        logbuilder.AddNLog("nlog.config");
                    });
                    // 2、使用NlLog
                    webBuilder.UseStartup<Startup>().UseNLog();
                });

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

​ 5.1.4 NLog使用

​ 在RuanMou.MicroService.AggregateService微服务中打开AggregateController.cs,增加内容为

// NLog日志打印类
private readonly ILogger _Logger = LogManager.GetCurrentClassLogger();

  
 
  • 1
  • 2

文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。

原文链接:codeboy.blog.csdn.net/article/details/108904949

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。