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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 微服务实践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日志并进行多维度分析。
目录
相关文章
|
2月前
|
运维 监控 Devops
自动化运维实践:打造高效的DevOps流水线
在软件开发的快节奏中,自动化运维成为提升效率、确保质量的关键。本文将引导你理解自动化运维的价值,通过实际案例分享如何构建一个高效、可靠的DevOps流水线。我们将从持续集成(CI)开始,逐步深入到持续部署(CD),并展示代码示例来具体说明。准备好让你的运维工作飞跃式进步了吗?让我们开始吧!
|
2月前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
115 2
|
2月前
|
存储 运维 数据可视化
如何为微服务实现分布式日志记录
如何为微服务实现分布式日志记录
136 1
|
3月前
|
监控 安全 Devops
DevOps实践中,如何平衡开发速度和安全审核的效率
在DevOps实践中,为平衡开发速度与安全审核效率,可采取自动化安全测试、安全编码实践、持续监控与日志分析、集成安全工具、合规性代码审查、基础设施即代码、权限和访问控制、安全培训、漏洞及补丁管理和持续反馈改进等措施,确保高效安全的开发流程。
|
3月前
|
运维 安全 Devops
DevOps实践中的安全审核和合规性
在DevOps实践中,确保安全审核和合规性至关重要。通过自动化合规审查、持续安全集成、基础设施即代码管理、敏捷合规框架、跨部门合作、教育与培训、实施DevSecOps模型、使用安全编码技术、整合正确工具及采用安全即代码等措施,组织能有效管理并降低合规与安全风险,促进高效可靠的DevOps文化发展。
|
3月前
|
运维 Devops jenkins
DevOps实践:持续集成与持续部署在现代软件开发中的作用
【10月更文挑战第42天】在快节奏的软件开发世界里,DevOps已经成为一种提升效率、确保质量和加速交付的重要方法。本文将深入探讨DevOps的核心组成部分—持续集成(CI)和持续部署(CD)—并展示它们如何通过自动化流程优化开发周期。我们将从基础概念讲起,逐步过渡到实际操作,最终通过一个简单代码示例来演示这一过程。文章旨在为读者提供清晰的指导,帮助他们理解和实现CI/CD流程,从而在软件开发领域取得竞争优势。
|
3月前
|
存储 监控 安全
什么是日志管理,如何进行日志管理?
日志管理是对IT系统生成的日志数据进行收集、存储、分析和处理的实践,对维护系统健康、确保安全及获取运营智能至关重要。本文介绍了日志管理的基本概念、常见挑战、工具的主要功能及选择解决方案的方法,强调了定义管理目标、日志收集与分析、警报和报告、持续改进等关键步骤,以及如何应对数据量大、安全问题、警报疲劳等挑战,最终实现日志数据的有效管理和利用。
345 0
|
3月前
|
Devops jenkins 测试技术
DevOps实践:自动化部署与持续集成的融合之旅
【10月更文挑战第41天】在软件开发的世界中,快速迭代和高效交付是企业竞争力的关键。本文将带你走进DevOps的核心实践——自动化部署与持续集成,揭示如何通过它们提升开发流程的效率与质量。我们将从DevOps的基本理念出发,逐步深入到具体的技术实现,最终展示一个实际的代码示例,让理论与实践相结合,为你的开发旅程提供清晰的指引。
87 4
|
3月前
|
监控 安全 Devops
DevOps实践中,如何平衡开发速度和安全审核的效率?
DevOps实践中,如何平衡开发速度和安全审核的效率?
|
3月前
|
运维 安全 Devops
DevOps实践中的安全审核和合规性
DevOps实践中的安全审核和合规性