微服务实践04--DevOps05--日志管理01--1.业务日志

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 微服务实践04--DevOps05--日志管理01--1.业务日志

微服务实践目录,可以参见连接。

日志的目标是进行行为跟踪,将用户行为、系统行为记录下来用于之后的分析的过程都可以称之为日志。在业界逐渐向微服务迁移的过程中,很多的行为记录手段都逐渐的成为业界热门。例如:调用链跟踪,度量指标(metrics),日志收集系统,日志分析系统,应用性能监控(APM)等。

随着微服务概念在业界不断的发展与演进,我也针对微服务中行为跟踪进行了一些研究。在针对不同的环境下需要使用不同的方式去完成行为的跟踪与记录:

  • 调用链跟踪,应用性能监控(APM)

    在分布式系统中可以主体架构会采用事件驱动架构模式,或者知识库架构模式完成系统整体流程的设计。在这种情况下从用户界面不可能直观的判断系统中的问题具体出现在哪里,为什么出现。所以调用链跟踪营运而生。具体原理可以参见Google论文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》。它解决了系统瞬时状态信息的采集工作。限制在于不管是那个开源实现,商业实现都会以为加入调用链跟踪的功能造成系统整体性能下降。所以,一般情况下在生产环境不建议打开,打开也只运行10分钟以内以防止影响业务。

  • 度量指标

    度量指标也是一项内容较多的技术,并且也可以在其他地方看到的名词。从技术角度说明在不同的技术栈的不同实现范围内都会有不同的度量指标,可以从不同的角度了解系统的各个方面。方便之后作为企业业务方向、系统运维方向的优化、调整、重构计划的指导。从业务角度讲可以为运营人员提供更加明确的系统运行情况,帮助运营人员从感性的认知系统到理性认知的转变,跳出大概是多少的猜测。现阶段度量指标没有标准规范与通用实现。在Spring Cloud中有部分实现,但也不是很全。

  • 日志收集系统

    日志收集系统大家都比较熟悉,如:ELK系列的FileBate、Logstash,Apache旗下的Flume,FaceBook的Scribe等等。这些实现各有千秋,但整体思想没有太大的差异。最主要的目标都为从宿主机将日志收集到日志系统中。下面会详细的说明。

  • 日志分析系统

    如下图中的日志处理技术全景中说明的一样,日志分析将日志建立索引,进行全文检索,日志聚合等操作。

日志处理技术全景

系统设计

以上的内容会在之后的文章中做介绍。现在我们拉回来,开始讨论日志。这里深入日志这个话题讨论一点内容。

模式选择

一般的日志收集方式分为两种:拉和推,与消息通信中的Pull和Push的概念是相同的。拉取的方式为由Master主动发起日志获取动作,然后在各个Agent上将日志拉到Master节点。推的方式为由Agent主动的向Master发送日志,Master在接收到日志之后将数据存储起来。

  • 推模式:

    对于 event-drive 类型的监控更为灵活方便
    应用多点部署不影响监控
    可能对监控系统 DDos
    要注意推送频率控制,以及失败后的重试机制

  • 拉模式:

    方便控制收集频率,对应用压力可控,侵入也小
    更及时的发现服务宕机
    需要大量配置监控接入点,尤其是应用集群化
    指标不够实时,顺序可能错乱
    监控指标一般是通过 log 文件或 HTTP 接口对外暴露,parser 较为复杂

对比以上特点之后,推模式更适用于业务日志类型的内容,具体如下:

  • 异步系统,事件驱动架构模式不影响正常业务进行。
  • 实时性可以满足业务日志需求。基本上在用户操作完成之后就可以看到业务日志。
  • 推送频率即为用户使用频率。不会因为系统复杂性而成本增长。

拉模式非常适用于系统日志的收集工作,之后会在微服务实践-系统日志中说明拉模式的使用。

技术选型

选择了日志收集方式之后,我们看一下技术选型:
下图来自于Flume官网
Flume架构

下图来自于ELK官网:
Logstash架构

根据以上两图,并综合Logstash和Flume的特点对比如下:

  • 各有侧重,Logstash偏重于对数据的预处理;Flume偏重数据的传输;
  • 生态环境,Logstash是老牌的运维日志监控工具,有着非常多的插件,配置灵活;FLume则是强调用户的自定义开发。
  • 持久化,Logstash的input和filter还有output之间都存在buffer,进行缓冲;Flume直接使用channel做持久化(可以理解为没有filter)

从上可以得出结论,更注重稳定性,效率方面的内容使用Flume比较好。比较注重灵活性,可配置性方面可以使用Logstash。我们这里选择Logstash是因为可以满足业务日志需求,是因为业务日志不需要太高的性能、并且可以在Flow中处理简单逻辑、达到数据清洗的目的。

方案制定

接下来看业务日志的部署结构:
本图来自ELK官网
ELK部署结构

从上图看,要完整的部署Logstash是一件比较复杂的事情。我这里主要的目标是业务日志可以在软件工程师在不修改任何代码的情况下可以将业务日志输出到数据库中,所以,简化后的操作如下图所示:
业务日志架构图

日志又可以分为业务日志,系统日志。业务日志又可以分为操作日志、行为日志、搜索日志等。本次内容设计为业务日志中操作日志的记录系统。操作日志流程:为系统用户访问系统服务。各服务根据业务特点,调用操作日志API,然后API通过Log4J2的Syslog功能将日志信息发送到logstash中。然后由Logstash写入到数据库中。

实施步骤:

  • 在Log4j2添加Syslog配置

配置

  • 对Java封装
private static Logger logger = LogManager.getLogger("BusinessLog");

然后在封装类中提供业务日志输出方法即可。

  • 安装Logstash

    1. 从ELK官网下载Logstash的CentOS7器安装包
    2. 运行rpm -ivh logstash-6.4.2.rpm
    3. 运行systemctl start logstash
    4. 安装插件/usr/share/logstash/bin/logstash-plugin install logstash-input-jdbc
  • 创建配置文件/etc/logstash/conf.d/demo.conf

配置文件

  • 重新启动logstash即可使用。
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
3天前
|
运维 监控 API
深入浅出:微服务架构的设计与实践
在软件开发的世界中,微服务架构如同一股清新的风,吹散了单体应用带来的沉重与复杂。本文将带你走进微服务的世界,一探究竟,从理念到实践,我们一同领略微服务的魅力所在。
|
3天前
|
运维 持续交付 开发者
深入浅出:微服务架构的设计与实践
在数字化浪潮的推动下,微服务架构以其独特的优势成为软件开发领域的新宠。本文将通过浅显易懂的语言,带领读者从理论到实践,一探微服务架构的奥秘。我们将一起学习如何设计一个高效、可扩展且易于维护的微服务系统,并探讨实施过程中可能遇到的挑战及解决方案。无论你是软件架构的初学者,还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。
17 3
|
2天前
|
搜索推荐 API 开发者
深入浅出:微服务架构的设计与实践
在数字化时代的浪潮下,微服务架构以其灵活性、可扩展性和独立部署的特点,成为众多企业技术选型的宠儿。本文将通过浅显易懂的语言和生动的比喻,带领读者一探微服务世界的奥秘,从基础概念到实际案例,逐步揭示如何设计并实施一个高效、稳定的微服务系统。无论你是技术小白还是资深开发者,这篇文章都将为你打开一扇了解和应用微服务的大门。
|
2天前
|
消息中间件 API 持续交付
深入浅出:微服务架构的设计与实践
在软件开发的广阔海洋中,微服务架构如同一艘灵活的帆船,它以模块化的方式切割复杂的单体应用,让服务独立、轻盈且易于管理。本文将带你从理论到实践,一步步揭开微服务的神秘面纱,探讨如何设计并实现一个高效、可扩展的微服务系统。无论你是架构新手还是资深开发者,这篇文章都将为你提供新的视角和实用的技巧。
17 6
|
5天前
|
设计模式 API 持续交付
深入浅出:微服务架构的设计与实践
在软件开发的世界中,微服务架构如同一场革命,它改变了我们构建、部署和管理应用的方式。本文将带你一探微服务的奥秘,从基础概念到实际案例分析,再到设计模式和常见问题解答,我们一步步深入理解微服务架构的设计哲学和实践要点。无论你是初学者还是有经验的开发者,这篇文章都将为你打开一扇了解和应用微服务的大门。
|
2天前
|
设计模式 消息中间件 监控
深入浅出微服务架构:从理论到实践
探索微服务,不仅是技术的革新,也是思维的革命。本文将带你走进微服务的世界,了解其核心理念、设计模式及实际应用案例,让你对微服务有更深入的认识和理解。
13 3
|
3天前
|
监控 负载均衡 应用服务中间件
探索微服务架构下的API网关设计与实践
在数字化浪潮中,微服务架构以其灵活性和可扩展性成为企业IT架构的宠儿。本文将深入浅出地介绍微服务架构下API网关的关键作用,探讨其设计原则与实践要点,旨在帮助读者更好地理解和应用API网关,优化微服务间的通信效率和安全性,实现服务的高可用性和伸缩性。
13 3
|
4天前
|
监控 Cloud Native 安全
云原生时代的微服务架构实践
【9月更文挑战第6天】在数字化转型的浪潮中,云原生技术以其灵活性、可扩展性成为企业架构升级的首选。本文将通过浅显易懂的语言和生动的比喻,带你一探微服务架构的世界,从理论到实践,逐步揭示如何利用云原生技术构建高效、可靠的微服务系统,同时穿插代码示例,为有志于云原生领域发展的技术人员提供一份实操指南。
20 2
|
5天前
|
运维 监控 Devops
DevOps实践:从理论到落地的旅程
在软件开发和运维日益融合的今天,DevOps已不仅仅是一个流行词汇。它代表了一种文化和实践的转变,旨在打破部门间的壁垒,加速产品从构思到市场的流程。本文将带你了解DevOps的核心理念,并通过实际案例展示如何将这些理念应用到日常工作中,实现高效协作和持续改进。无论你是DevOps新手还是资深专家,这篇文章都将为你提供新的视角和实用的技巧。
|
5天前
|
运维 Cloud Native 持续交付
云原生时代下的微服务架构实践
在数字化转型的浪潮中,云原生技术以其高效、灵活的特性成为企业IT架构升级的首选。本文将通过深入浅出的方式,探讨云原生环境下微服务架构的设计原则、关键技术及实施策略,旨在为读者提供一条清晰的技术路线图,帮助理解和掌握在云平台上构建和管理微服务的实用方法。