再次升级!阿里云Kubernetes日志解决方案

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
对象存储 OSS,内容安全 1000 次 1年
对象存储OSS,敏感数据保护2.0 200GB 1年
简介: 今天阿里云Kubernetes日志解决方案再次升级,为您带来以下改进: 1、极致部署体验:只需一条命令一个参数即可完成整个K8S集群的日志解决方案部署。 2、支持更多配置方式:除原生控制台、SDK配置方式外,支持通过CRD方式进行配置(kubectl、控制台、K8S openapi)。

背景


针对K8S日志采集存在的采集目标多、弹性伸缩难、运维成本大、侵入性高、采集性能低等问题,在18年2月份日志服务和容器服务团队一起发布了阿里云Kubernetes日志解决方案。1分钟内即可完成整个集群部署,实现该节点上宿主机日志、容器日志、容器stdout等所有数据源的一站式采集。并且后续集群动态伸缩无需对采集做任何二次部署。


今天阿里云Kubernetes日志解决方案再次升级,为您带来以下改进:


  • 极致部署体验:只需一条命令一个参数即可完成整个K8S集群的日志解决方案部署。
  • 支持更多配置方式:除原生控制台、SDK配置方式外,支持通过CRD方式进行配置(kubectl、控制台、K8S openapi)。
  • K8S无缝集成:采集配置支持yaml方式部署,兼容K8S各种集成方式。


日志服务介绍


阿里云的日志服务(log service)是针对日志类数据的一站式服务,2013年研发,有5年多线上运行经验,经历双十一、新春红包等考验。日志采集Agent Logtail运行在100W+机器上,为万级别应用提供服务。主要特点如下:


da43f63c-7b32-4073-82c5-d035433b8e31.png


日志服务主要包括 实时采集与消费、数据投递、查询与实时分析 等功能,接下来我们介绍下如何利用日志服务进行Kubernetes日志采集。

55ab7e0a-c0c0-4096-bb18-70a62465b06b.png


Kubernetes日志采集方案介绍


方案简介


609a6e61-fafc-48e1-b9ed-a7b072a2e84d.png


阿里云Kubernetes日志采集方案如上图所示:


  • K8S的每个worker 节点都会运行一个Logtail容器,该容器可采集宿主机以及该宿主机上其他容器的日志(包括标准输出和日志文件)。
  • Logtail以daemon set模式运行,保证每个节点都有一个Logtail容器在运行
  • 使用自定义标识机器组,支持集群动态缩/扩容
  • 所有的采集配置支持通过docker lable以及环境变量过滤指定容器
  • K8S内部会注册自定义资源(CRD,CustomResourceDefinition)AliyunLogConfig,并部署alibaba-log-controller
  • 支持用户通过CRD方式或日志服务控制台对采集配置进行管理


运行流程


以CRD配置方式为例,内部工作流程如下:


  1. 用户使用kubectl或其他工具应用aliyunlogconfigs CRD配置。
  2. alibaba-log-controller监听到配置更新。
  3. alibaba-log-controller根据CRD内容以及服务端状态,自动向日志服务提交logstore创建、配置创建以及应用机器组的请求。
  4. 以DaemonSet模式运行的Logtail会定期请求配置服务器,获取新的或已更新的配置并进行热加载。
  5. Logtail根据配置信息采集各个容器(POD)上的标准输出或日志文件。
  6. 最终Logtail将处理、聚合好的数据发送到日志服务。


部署方法


阿里云Kubernetes用户只需一条命令即可完成日志采集部署,命令中只需输入一个参数。


  1. 开通阿里云日志服务,日志服务开通链接
  2. 登录您的阿里云容器服务Kubernetes的Master节点,如何登录参考SSH访问集群
  3. 将下述命令中的${your_k8s_cluster_id}替换为您的Kubernetes集群id,执行此命令。


 wget http://logtail-release.oss-cn-hangzhou.aliyuncs.com/linux64/alicloud-log-k8s-install.sh -O alicloud-log-k8s-install.sh; chmod 744 ./alicloud-log-k8s-install.sh; sh ./alicloud-log-k8s-install.sh ${your_k8s_cluster_id}



配置方式


日志采集配置默认支持控制台配置方式,同时针对Kubernetes微服务开发模式,我们还提供CRD的配置方式,您可以直接使用kubectl对配置进行管理或集成到其他编排服务。两种配置方式特点如下:

CRD方式

控制台方式

操作复杂度

一般

功能项

支持除控制台方式外的高级配置

一般

上手难度

一般

网络连接

连接Kubernetes集群

连接互联网

与组件/应用部署集成

支持

不支持

鉴权方式

Kubernetes鉴权

云账号鉴权


如果您刚开始使用日志服务,建议使用控制台的配置方式,此种方式所见即所得,非常易于上手。


若后续您需要将日志采集与服务/组件发布集成,建议使用CRD的配置方式。可以直接将采集配置和服务配置放到同一个yaml文件部署和管理。


方案优势


相比其他采集方案,日志服务Kubernetes采集方案具备以下优势:

9d05d558-e6e2-4dc2-a8f4-d1b4fa7eb604.png


核心技术介绍


在上一篇阿里云Kubernetes日志解决方案中我们对容器数据采集、自定义标识机器组等技术做了相关的介绍。本次主要为大家带来日志采集配置与K8S无缝集成的技术实现。


K8S无缝集成


问题背景


不同于其他开源日志采集Agent,日志服务Logtail从设计之初就已经考虑到配置管理的难题。因此Logtail从第一个版本发布就支持中心化的配置管理。支持在日志服务控制台或者SDK远程对所有采集配置进行统一管理,大大降低了日志采集的管理负担。


但在K8S集群环境下,业务应用/服务/组件的持续集成和自动发布已经成为常态,使用控制台或SDK操作采集配置的方式很难与各类CI、编排框架集成,导致业务应用发布后用户只能通过控制台手动配置的方式部署与之对应的日志采集配置。


因此日志服务专门为K8S进行了扩展,用以支持原始的配置管理。


实现方式


f4d13035-3624-4e98-9399-7bc9bab71eeb.png


如上图所示,日志服务为K8S新增了一个CustomResourceDefinition扩展,名为AliyunLogConfig。同时开发了alibaba-log-controller用于监听AliyunLogConfig事件。


当用户创建/删除/修改AliyunLogConfig资源时,alibaba-log-controller会监听到资源变化,并对应的在日志服务上创建/删除/修改相应的采集配置。以此实现K8S内部AliyunLogConfig与日志服务中采集配置的关联关系。


alibaba-log-controller内部实现


6f5fdf19-230f-4153-bb7e-8b9455ef88ab.png


alibaba-log-controller主要由6个模块组成,各个模块的功能以及依赖关系如上图所示:


  • EventListener:负责监听AliyunLogConfig的CRD资源。这个EventListener是广义上的listener,主要功能有
  • 初始化时会list所有的AliyunLogConfig资源
  • 注册AliyunLogConfig监听变化的事件
  • 定期再扫描全量的AliyunLogConfig资源防止事件出现遗漏或处理失效
  • 将事件打包,交由EventHandler处理
  • EventHandler:负责处理对应的Create/Update/Delete事件,作为Controller的核心模块,主要功能如下:
  • 首先检查ConfigMapManager中对应的checkpoint,如该事件已经被处理(版本号相同且状态为200),则直接跳过
  • 为防止历史事件干扰处理结果,从服务端拉取最新的资源状态,检查是否为同一版本,若版本不一致,使用服务端版本替换
  • 对事件进行一定的预处理,使之符合LogSDK的基本格式需求
  • 调用LogSDKWrapper,创建日志服务Logstore,Create/Update/Delete对应的配置
  • 根据上述处理结果,更新对应AliyunLogConfig资源的状态
  • ConfigMapManager:依赖于K8S的ConfigMap机制实现Controller的checkpoint管理,包括:
  • 维护checkpoint到ConfigMap的映射关系
  • 提供基础的checkpoint增删改查接口
  • LogSDKWrapper:基于阿里云LOG golang sdk的二次封装,功能包括:
  • 初始化创建日志服务资源,包括Project、MachineGroup、Operation Logstore等
  • 将CRD资源转换为对应的日志服务资源操作,为1对多关系
  • 包装SDK接口,自动处理网络异常、服务器异常、权限异常
  • 负责权限管理,包括自动获取role,更新sts token等
  • ScheduledSyner:后台的定期同步模块,防止进程/节点失效期间配置改动而遗漏事件,保证配置管理的最终一致性:
  • 定期刷新所有的checkpoint和AliyunLogConfig
  • 检查checkpoint和AliyunLogConfig资源的映射关系,如果checkpoint中出现不存在的配置,则删除对应的资源
  • Monitor:alibaba-log-controller除了将本地运行日志输出到stdout外,还会将日志直接采集到日志服务,便于远程排查问题。采集日志种类如下:
  • k8s api内部异常日志
  • alibaba-log-controller运行日志
  • alibaba-log-controller内部异常数据(自动聚合)


快速入门


此处为语雀视频卡片,点击链接查看:


总结


阿里云日志服务本次带来的提升更进一步简化了K8S日志采集的上手门槛以及集成体验。让广大用户真正体验到一个字:爽,从此日志运维人员的生活质量大大提高。


目前Logtail除支持宿主机文件、容器文件、容器stdout采集外,还支持以下多种采集方式(这些方式k8s中均支持):


  1. syslog采集
  2. Mysql binlog采集
  3. JDBC采集
  4. http采集

若有收获,就点个赞吧

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
13天前
|
存储 调度 C++
16 倍性能提升,成本降低 98%! 解读 SLS 向量索引架构升级改造
大规模数据如何进行语义检索? 当前 SLS 已经支持一站式的语义检索功能,能够用于 RAG、Memory、语义聚类、多模态数据等各种场景的应用。本文分享了 SLS 在语义检索功能上,对模型推理和部署、构建流水线等流程的优化,最终带给用户更高性能和更低成本的针对大规模数据的语义索引功能。
|
24天前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
144 0
|
6月前
|
监控 Kubernetes Go
日志采集效能跃迁:iLogtail 到 LoongCollector 的全面升级
LoongCollector 在日志场景中实现了全面的重磅升级,从功能、性能、稳定性等各个方面均进行了深度优化和提升,本文我们将对 LoongCollector 的升级进行详细介绍。
492 86
|
2月前
|
运维 监控 安全
EventLog Analyzer:高效的Web服务器日志监控与审计解决方案
ManageEngine EventLog Analyzer是一款企业级Web服务器日志监控与审计工具,支持Apache、IIS、Nginx等主流服务器,实现日志集中管理、实时威胁检测、合规报表生成及可视化分析,助力企业应对安全攻击与合规挑战,提升运维效率。
122 0
|
7月前
|
SQL 监控 数据挖掘
SLS 重磅升级:超大规模数据实现完全精确分析
SLS 全新推出的「SQL 完全精确」模式,通过“限”与“换”的策略切换,在快速分析与精确计算之间实现平衡,满足用户对于超大数据规模分析结果精确的刚性需求。标志着其在超大规模日志数据分析领域再次迈出了重要的一步。
523 117
|
7月前
|
消息中间件 运维 监控
智能运维,由你定义:SAE自定义日志与监控解决方案
通过引入 Sidecar 容器的技术,SAE 为用户提供了更强大的自定义日志与监控解决方案,帮助用户轻松实现日志采集、监控指标收集等功能。未来,SAE 将会支持 istio 多租场景,帮助用户更高效地部署和管理服务网格。
493 52
|
6月前
|
自然语言处理 监控 安全
阿里云发布可观测MCP!支持自然语言查询和分析多模态日志
阿里云可观测官方发布了Observable MCP Server,提供了一系列访问阿里云可观测各产品的工具能力,包含阿里云日志服务SLS、阿里云应用实时监控服务ARMS等,支持用户通过自然语言形式查询
649 0
阿里云发布可观测MCP!支持自然语言查询和分析多模态日志
|
8月前
|
存储 消息中间件 缓存
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
基于阿里云SelectDB,MiniMax构建了覆盖国内及海外业务的日志可观测中台,总体数据规模超过数PB,日均新增日志写入量达数百TB。系统在P95分位查询场景下的响应时间小于3秒,峰值时刻实现了超过10GB/s的读写吞吐。通过存算分离、高压缩比算法和单副本热缓存等技术手段,MiniMax在优化性能的同时显著降低了建设成本,计算资源用量降低40%,热数据存储用量降低50%,为未来业务的高速发展和技术演进奠定了坚实基础。
323 1
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
|
8月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
8月前
|
消息中间件 运维 监控
智能运维,由你定义:SAE自定义日志与监控解决方案
SAE(Serverless应用引擎)是阿里云推出的全托管PaaS平台,致力于简化微服务应用开发与管理。为满足用户对可观测性和运维能力的更高需求,SAE引入Sidecar容器技术,实现日志采集、监控指标收集等功能扩展,且无需修改主应用代码。通过共享资源模式和独立资源模式,SAE平衡了资源灵活性与隔离性。同时,提供全链路运维能力,确保应用稳定性。未来,SAE将持续优化,支持更多场景,助力用户高效用云。

相关产品

  • 日志服务
  • 推荐镜像

    更多