日志对大型应用系统或者平台尤其重要,系统日志采集、分析是系统运维、维护及用户分析的基础。

一、系统日志分类

  一般系统日志可分为三大类:

  1、用户行为日志:通过采集系统用户使用系统过程中,一系列的操作日志。

  2、业务变更日志:特定业务场景需要,采集某用户在某时使用某功能,对某业务(对象、数据)进行某操作,由A变成B。

  3、系统运行日志:系统运行服务器资源、网络及基础中间件的情况进行定时采集日志分析。

二、常见日志分析应用场景

  日志采集分析是由需求驱动,根据某种场景的需要日志采集,采集的日志进行针对性的分析。一般常见的日志分析结果应用场景有:

  1、分析系统或者平台哪些功能是最受欢迎:什么时候使用最多用户使用,某个区域、某类用户使用最多。有利于功能推广;有利于提升服务器资源从而提高用户体验。

  2、内容推荐:根据用户平常阅读内容,采集相关日志,并通过分析后,将用户感兴趣的内容系统自动推荐给用户,从而提升用户站粘性。

  3、系统审计:对于应用系统,采集操作日志、业务变更日志,有利于备查及提供相关安全审计功能。

  4、自动化运维:场景微服务架构的系统或者平台,对运维投入的要求高,自动化部署和运维,可以减少运维的工作量和压力。系统运行环境日志采集、分析,可实现预警、服务器资源动态调配,有利于快速定位排查故障。

  不同系统的运行环境、功能应用场景及需要采集分析日志的需求也各不相同。日志内容、采集方式存在多样性,日志数据量大,所以需要设计一套日志采集系统,满足日志采集需求,支持便捷将分析结果反捕于应用功能。

三、日志采集系统总体设计

  基于以上日志采集的初步分析,尤其微服务架构中,微服务治理能力、服务负载需要依赖服务日志的采集分析,所以日志采集子系统是微服务架构的基础支持功能。日志采集系统总体设计如下:

图1- 日志采集系统总体框架示意图

  如上图所示,根据日志整个过程,系统由三部分组成:日志采集、日志存储&分析及结果应用。日志采集主要负责提供多种方式进行采集日志;日志存储&分析主要实现分析统一存储和定制的场景分析日志;结果应用实现将日志分析结果提供服务接口或者默认的管理功能,供应用功能使用。

  日志采集整体过程:日志采集后,通过在线或者离线传输到消息队列,由日志消费应用拉取后进行存储。根据分析需要定制自动作业任务实现日志数据抽取、转换、统计后,将结果数据写入关系型数据库。提供服务接口或者日志查询默认管理功能进行使用。

1、日志采集

  日志采集实现三种方式进行采集日志:

  (1)WebAPI方式:实现基于http协议 restful方式采集日志数据,并发送至消息队列。主要用于提供移动端、微信公众号及小量日志采集使用,在NET分布式系统上可结合“API网关”使用。

  (2)Service Proxy方式:基于log4.net优秀的日志组件和消息队列客户端驱动,进行封装为日志记录服务代理,提供便捷、统一的接口供应用进行使用。支持将日志记录到应用本地和在线实时发送至消息队列,其中记录到应用本地,可结合第三种方式完成应用功能日志采集的功能。

  (3)LCClient方式:实现客户端批量抓取日志数据,发送至LCServer。LCClient客户端基于TCP协议与LCServer服务端进行通信,基于NIO框架构建,可支持高并发处理能力。LCServer再将日志数据写入消息队列。

  日志采集通过提供三种方式,满足不同的业务应用场景使用采集日志。

2、日志存储&分析

  日志存储及分析由五部分构成:消息队列(MQ)、日志接收服务端(LCServer)、日志存储(Elasticsearch)、任务作业(Quartz.net)及关系型数据库(MySQL)。

  (1)消息队列(MQ):日志通过消息队列实现消息统一接收,做一道缓冲,满足日志数据并发接收能力。

  (2)日志接收服务端(LCServer):接收LCClient客户端批量发送日志数据,并将其发送至消息队列。

  (3)日志存储(Elasticsearch):选用ES做日志存储,主要考虑ES是一种文档化分布式搜索服务,支持PB级的数据存储,支持上百个节点的分布式集群能力,并且提供丰富的API使用,数据查询方面有着优越的性能。

  (4)任务作业(Quartz.net):通过定制化开发作业任务实现对ES日志数据抽取、转换、分析后,将结果存储于关系型数据库。Quartz.net中间件是业界公认的作业任务组件。

  (5)关系型数据库(MySQL):实现日志结果数据存储,供日志应用查询使用。MySQL有着优越的主从复制机制,可解决单节点查询性能瓶颈,同时提供传统SQL脚本操作数据的能力,提供开发效率。

  日志数据存储和分析后,最终目的就是提供与应用功能使用。

3、分析结果应用

  分析结果应用主要提供服务接口和管理功能两种方式。

  (1)服务接口方式:基于http协议以restful方式提供接口,支持应用功能方便调用。

  (2)管理模块方式:默认提供一套日志查询管理功能,方便于应用直接集成使用。

四、总结

  日志采集本身也是一个分布式系统,服务端每个节点都支持分布式集群部署,可实现高并发、高可用性。本文只是一种抛砖引玉,系统每个组件还需要深化详细,同时也包括实施部署。

作者:刘蔡涛
出处:http://www.cnblogs.com/Andon_liu 
关于作者:专注于微软平台项目架构、管理。熟悉设计模式、领域驱动、架构设计、敏捷开发和项目管理。现主要从事ASP.NET MVC、WCF/Web API、SOA、MSSQL、redis方面的项目开发、架构、管理工作。 如有问题或建议,请一起学习讨论! 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。 
如有问题,可以邮件:568773262@qq.com 联系我,谢谢。

微信号: 

转载于:https://www.cnblogs.com/Andon_liu/p/7508107.html

Net分布式系统之七:日志采集系统(1)相关推荐

  1. Logstash 实践: 分布式系统的日志监控

    回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的Logstash! 来源:赵杰 http://www.cnblogs.com/yiwenshengmei/p/4956033.html ...

  2. 轻量级日志采集系统Loki+grafana搭建

    轻量级日志采集系统Loki+grafana搭建 一.Loki介绍 整体架构 Loki的架构非常简单,使用了和prometheus一样的标签来作为索引,也就是说,你通过这些标签既可以查询日志的内容也可以 ...

  3. logstash接收多台服务器日志_Logstash实践: 分布式系统的日志监控

    1. 前言 服务端日志你有多重视? 我们没有日志 有日志,但基本不去控制需要输出的内容 经常微调日志,只输出我们想看和有用的 经常监控日志,一方面帮助日志微调,一方面及早发现程序的问题 只做到第1点的 ...

  4. Logstash实践: 分布式系统的日志监控

    转自:http://www.jianshu.com/p/6575041b597d 1. 前言 服务端日志你有多重视? 我们没有日志 有日志,但基本不去控制需要输出的内容 经常微调日志,只输出我们想看和 ...

  5. 华为OD机试 - 日志采集系统(Python)| 真题

    日志采集系统 题目 日志采集是运维系统的的核心组件.日志是按行生成,每行记做一条,由采集系统分批上报. 如果上报太频繁,会对服务端造成压力: 如果上报太晚,会降低用户的体验: 如果一次上报的条数太多, ...

  6. 【满分】【华为OD机试真题2023 JAVAJS】日志采集系统

    华为OD机试真题,2023年度机试题库全覆盖,刷题指南点这里 日志采集系统 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 日志采集是运维系统的的核心组件.日志是按行生成,每行记做一 ...

  7. 在滴滴云 DC2 云服务器上搭建 ELK 日志采集系统

    前段时间大学同学聚会,一个在读的博士同学谈到他们实验室做实验时,物理服务器需要向老师申请且组内同学都共用那些机器.由于运行一些大数据和人工智能的项目比较耗费资源,且对资源环境的隔离要求比较高,因而很多 ...

  8. 如何设计日志采集系统?不妨看看这篇文章

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:r6d.cn/9K3Q 概述 日志从最初面向人类演变 ...

  9. 大数据flume日志采集系统详解

    一.flume介绍 flume 是一个cloudera提供的 高可用高可靠,分布式的海量日志收集聚合传输系统.Flume支持日志系统中定制各类数据发送方,用于收集数据.同时flume提供对数据进行简单 ...

最新文章

  1. mysql 最大并发连接数
  2. 《操作系统》实验报告——熟悉Linux基础命令及进程管理
  3. boost::units::conversion_factor相关的测试程序
  4. 如何用Python从数据库里面获取数据?4个步骤就能轻松实现
  5. java高级类_Java高级类特性(一)
  6. PCL1.8.0+Windows+VS2013配置
  7. 从编写到上线带你搞定springboot博客之编辑博客时新增标签02
  8. Python已经超过了JAVA?
  9. 定时器cron表达式详解
  10. 20行代码实现(UartLogger)串口监控记录器
  11. win10系统定时自动切换深色模式
  12. vue中的混入mix
  13. 计算机主机的系统安装方法,电脑安装系统的最全教程,系统安装教程详解
  14. Python自学(三)
  15. HMC510LP5ETR资料
  16. gcc -m32报错解决
  17. DataV平面地图组件全新升级_新功能带你抢先看
  18. freemarker导出excel时office报错而wps不会
  19. 如果更好的做好MES系统运维
  20. bilibili 2021 技术对抗赛 算法与安全答题 答案

热门文章

  1. android+面试题
  2. “12306”的架构到底有多牛逼?
  3. JQuery插件之-----Datatables(三)Datatables实现多选框与AJAX返回数据
  4. Twitter CEO自曝成长经历:生活充满了偶然
  5. Java基础之泛型简单讲解(通俗易懂)
  6. 智慧交通:地铁站 3D 可视化,车路协同赋能科学出行
  7. HTML怎么把按钮往下移,css按钮固定在底部
  8. 利用java计算长方形的面积
  9. 【10月最新】必问的25道mybatis面试题,都会的话你也可以去大厂
  10. JavaScript实现购物车计算价格功能