微服务架构下日志采集运维管理分析

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 阿里云日志服务(SLS)结合Kubernetes日志特点以及应用场景,提供全方位的容器微服务应用环境下的日志采集、处理以及分析的实践。

直达最佳实践:【微服务架构日志采集运维管理最佳实践
最佳实践频道:【最佳实践频道
这里有丰富的企业上云最佳实践,从典型场景入门,提供一系列项目实践方案,降低企业上云门槛的同时满足您的需求!

Kubernetes日志系统的重要性

云原生对于微服务可观测性的一项重要标准就是日志记录(logging)。日志的采集、存储和分析时构建现代系统平台的关键支柱之一,可以帮助团队进行问题的诊断、质量的回溯、系统运营效率监控等。在当今容器/Kubernetes技术大火的环境下,日志系统对于Kubernetes也起着非常关键的作用,对于Devops、运营、安全等方面都离不开完整多样有效的日志采集、存储管理和分析,从下图可见。

1.png

微服务架构下日志采集运维管理面临的挑战

众所周知,随着容器/Kubernetes技术在微服务落地过程中相对物理机、VM在应用部署、应用交付等环节给用户提供了更加简单轻量、高性价比等优势,而且用户在应用容器/Kubernetes技术做微服务改造过程中,也同时存在容器化应用/非容器化应用混合部署的形态。对于基于VM或者物理机部署的应用,日志采集相关技术都比较完善,有比较健全的Logstash、Fluentd、FileBeats等,但是在应用容器化特别是基于Kubenetes集群做微服务应用部署时,日志采集运维给用户带来了不小的挑战,主要的原因有:

  • 日志采集目标多,需要采集宿主机日志、容器内日志、容器stdout,存在多种应用数据及多种日志格式,缺乏统一的一站式日志采集解决方案;
  • 集群弹性伸缩、环境动态性强、服务动态迁移等都给日志采集带来了很大的困难,日志采集的动态性以及数据完整性都是非常大的挑战;
  • 运维成本非常大,已有的一些方案只能使用多种软件组合采集,各个软件组装起来的系统稳定性难以保障,且缺乏中心化的管理、配置、监控手段,运维负担大;
  • 日志采集Agent侵入性高,Docker Driver扩展需要修改底层引擎,一个Container对应采集一个日志采集Agent又会产生资源竞争和浪费
  • 日志采集性能低,正常情况下一个Docker Engine会运行数十个甚至数百个Container,此时开源日志采集Agent采集性能及资源消耗十分不理想;
  • 日志分析效率和手段缺乏,开源的日志分析展现工具对于日志的实时分析、智能分析等缺乏简单有效的可视化手段。

    2.png

阿里云Kubernetes日志采集方案

基于以上分析,阿里云日志服务产品针对用户在基于Kubernetes做应用微服务改造落地过程中日志采集运维管理的需求和痛点,结合阿里云组合云产品的优势,提出了一站式的日志采集运维管理分析的解决方案,提供了强大的日志处理分析能力,如PB级日志实时查询、日志聚类分析、Ingress日志分析报表、日志分析函数、上下游生态对接等能力,提供用户在 容器/Kubernetes技术落地应用微服务改造过程中的日志采集运维管理一站式能力。

3.png


- Ingress日志解决方案
Kubernetes中Ingress是一种API资源的声明,具体的实现需要由Ingress Controller来接管Ingress定义,目前比较流行的Ingress Controller实现有Nginx、Traefik、listio、Kong等,在国内接受度最高的是Nginx Ingress Controller。
日志和监控是所有Ingress Controller都会提供的基础功能,日志一般包括访问日志(Access Log)、控制日志(Controller Log)和错误日志(Error Log),监控主要从日志以及Controller中提取Metrics信息。这心数据中访问日志的量级最大、信息最多、价值也最高,一般七层的访问日志包括:URL、源IP、UserAgent、状态码、入流量、出流量、响应时间等,对于Ingress Controller这种转发型的日志,还包括转发的Service名、Service响应时间等额外信息。从这些信息中,我们能够分析出非常多的有用信息,例如:网站访问的PV、UV;访问的地域分布、设备端分布;网站访问的错误比例;后端服务的响应延迟;不同URL访问分布等。但是手动搭建并运维一整套的Ingress日志分析与监控系统非常复杂,系统需要非常多的模块,例如部署日志采集Angent并配置采集和解析规则,部署实时数据分析引擎例如Elastic Search、Clickhouse等,部署可视化组件并搭建报表例如Grafana、Kibana等,部署告警模块等配置告警规则例如ElastAlert等,而且由于Kubernetes集群的访问量相对较大,因此还需要搭建一个缓冲队列例如Redis、Kafka等。
为了简化用户对于Ingress日志分析与监控的门槛,阿里云容器服务和日志服务将Ingress打通,只需要应用一个yaml资源即可完成日志采集、分析、可视化等一整套Ingress日志方案的部署。 4.png



- Kubernetes 容器日志采集分析与监控
日志作为任一系统不可或缺的部分,Kubernetes的官方文档也介绍了多种日志采集形式,总结起来主要有下述三种:原生方式、DaemonSet方式和SideCar方式。
- 原生方式:使用kubectl logs直接查看本地保留的日志,或者通过docker engine的logging driver将日志重定向到文件、syslog、fluentd等系统中。
- DaemonSet方式:在Kubernetes集群的每个节点上部署日志agent,由agent采集所有容器的日志到服务端。
- SideCar方式:一个容器组(Pod)中运行一个SideCar的日志agent容器,用于采集该容器组(Pod)主容器产生的日志。SideCar模式的日志采集依赖Logtail和业务容器共享日志目录,业务容器将日志写入到共享目录中,Logtail通过监控共享目录中日志文件变化并采集日志。

采集方式对比见下表。 8.png
从上述表格可以看出,原生方式相对功能太弱,一般不建议在生产系统中使用;DameonSet方式相对资源占用要小很多,但扩展性、租户隔离性受限,比较适用于功能单一或者业务不是很多的集群;SideCar方式相对资源占用较多,但灵活性以及多租户隔离性较强,建议大型的Kubernetes集群或作为PAAS平台为多个业务方服务的集群使用该方式。通常我们可以这样进行采集部署建议:
- 核心应用:使用SideCar方式采集。
- 普通应用/系统日志:使用DaemonSet方式采集。
- 标准输出: 使用DaemonSet方式采集。 6.png


### 总结

本文介绍了基于Kubernetes进行应用微服务改造过程中的日志采集与运维管理方案,限于篇幅,本文无法对具体实施建议以及更多特色功能进行一一介绍,请大家详细阅读阿里云官网最佳实践频道的 微服务架构日志采集运维管理最佳实践

7.png

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
1月前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
191 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
21天前
|
机器学习/深度学习 存储 人工智能
基于AI的实时监控系统:技术架构与挑战分析
AI视频监控系统利用计算机视觉和深度学习技术,实现实时分析与智能识别,显著提升高风险场所如监狱的安全性。系统架构包括数据采集、预处理、行为分析、实时决策及数据存储层,涵盖高分辨率视频传输、图像增强、目标检测、异常行为识别等关键技术。面对算法优化、实时性和系统集成等挑战,通过数据增强、边缘计算和模块化设计等方法解决。未来,AI技术的进步将进一步提高监控系统的智能化水平和应对复杂安全挑战的能力。
|
1月前
|
设计模式 负载均衡 监控
探索微服务架构下的API网关设计
在微服务的大潮中,API网关如同一座桥梁,连接着服务的提供者与消费者。本文将深入探讨API网关的核心功能、设计原则及实现策略,旨在为读者揭示如何构建一个高效、可靠的API网关。通过分析API网关在微服务架构中的作用和挑战,我们将了解到,一个优秀的API网关不仅要处理服务路由、负载均衡、认证授权等基础问题,还需考虑如何提升系统的可扩展性、安全性和可维护性。文章最后将提供实用的代码示例,帮助读者更好地理解和应用API网关的设计概念。
73 8
|
2月前
|
负载均衡 Java 持续交付
深入解析微服务架构中的服务发现与负载均衡
深入解析微服务架构中的服务发现与负载均衡
104 7
|
2月前
|
消息中间件 运维 Kubernetes
后端架构演进:从单体到微服务####
本文将探讨后端架构的演变过程,重点分析从传统的单体架构向现代微服务架构的转变。通过实际案例和理论解析,揭示这一转变背后的技术驱动力、挑战及最佳实践。文章还将讨论在采用微服务架构时需考虑的关键因素,包括服务划分、通信机制、数据管理以及部署策略,旨在为读者提供一个全面的架构转型视角。 ####
48 1
|
1月前
|
Cloud Native API 持续交付
云原生架构下的微服务治理策略与实践####
本文旨在探讨云原生环境下微服务架构的治理策略,通过分析当前面临的挑战,提出一系列实用的解决方案。我们将深入讨论如何利用容器化、服务网格(Service Mesh)等先进技术手段,提升微服务系统的可管理性、可扩展性和容错能力。此外,还将分享一些来自一线项目的经验教训,帮助读者更好地理解和应用这些理论到实际工作中去。 ####
48 0
|
2月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
57 3
|
2月前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
2月前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
70 1
服务架构的演进:从单体到微服务的探索之旅