阿里千万实例可观测采集器-iLogtail正式开源

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
应用实时监控服务-应用监控,每月50GB免费额度
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
简介: 11月23日,阿里正式开源可观测数据采集器iLogtail。作为阿里内部可观测数据采集的基础设施,iLogtail承载了阿里巴巴集团、蚂蚁的日志、监控、Trace、事件等多种可观测数据的采集工作。iLogtail运行在服务器、容器、K8s、嵌入式等多种环境,支持采集数百种可观测数据,目前已经有千万级的安装量,每天采集数十PB的可观测数据,广泛应用于线上监控、问题分析/定位、运营分析、安全分析等多种场景。

image.png

作者 | 元乙
来源 | 阿里技术公众号

11月23日,阿里正式开源可观测数据采集器iLogtail。作为阿里内部可观测数据采集的基础设施,iLogtail承载了阿里巴巴集团、蚂蚁的日志、监控、Trace、事件等多种可观测数据的采集工作。iLogtail运行在服务器、容器、K8s、嵌入式等多种环境,支持采集数百种可观测数据,目前已经有千万级的安装量,每天采集数十PB的可观测数据,广泛应用于线上监控、问题分析/定位、运营分析、安全分析等多种场景。

一 iLogtail与可观测性

image.png

可观测性并不是一个全新的概念,而是从IT系统中的监控、问题排查、稳定性建设、运营分析、BI、安全分析等逐渐演化而来,可观测性相比传统监控,最核心的演进是尽可能多的收集各类可观测数据,来实现目标的白盒化。而iLogtail的核心定位就是可观测数据的采集器,能够尽可能多的采集各类可观测性数据,助力可观测平台打造各种上层的应用场景。

image.png

二 阿里可观测数据采集的挑战

image.png

对于可观测数据的采集,有很多开源的Agent,例如Logstash、Filebeats、Fluentd、Collectd、Telegraf等。这些Agent的功能非常丰富,使用这些Agent的组合再进行一定的扩展,基本可以满足内部各类数据的采集需求。但由于一些性能、稳定性、管控能力等关键性的挑战无法满足,最终我们还是选择自研:

1、资源消耗:目前阿里内部有数百万的主机(物理机/虚拟机/容器),每天会产生几十PB的可观测数据,每1M的内存减少、每1M/s的性能提升对于我们的资源节省都是巨大的,带来的成本节约可能是数百万甚至上千万。目前众多开源Agent的设计更多的是偏重功能而非性能,基于现有开源Agent改造基本不可行。例如:

  • 开源Agent普遍单核处理性能在2-10M/s左右,而我们希望有一个能达到100M/s的性能
  • 在采集目标增加、数据量增加、采集延迟、服务端异常等情况下,开源Agent内存都会呈现爆炸式增长,而我们希望即使在各种环境下,内存也能处在较低的水位
  • 开源Agent的资源消耗没办法控制,只能通过cgroup强行限制,最终的效果就是不断OOM,不断重启,数据一直采集不上来。而我们希望在指定一个CPU、内存、流量等资源限制后,Agent能一直在这个限制范围内正常工作

2、稳定性:稳定性是永恒的话题,数据采集的稳定性,除了保证数据本身采集的准确性外,还需要保证采集的Agent不能影响业务应用,否则带来的影响将是灾难性的。而稳定性建设,除了Agent自身的基础稳定性外,还有很多特性目前开源的Agent还没有提供:

  • Agent自恢复:Agent遇到Critical的事件后能够自动恢复,并且提供多个维度的自恢复能力,例如进程自身、父子进程、守护进程
  • 全局的多维度监控:能够从全局的角度监控各个不同版本、不同采集配置、不同压力、不同地域/网络等属性的Agent的稳定性问题
  • 问题隔离:作为Agent,无论怎样出现问题,都需要尽可能的隔离问题,例如一个Agent上有多个采集配置,一个配置出问题,不能影响其他配置;Agent自身出现问题,不能影响机器上的应用进程的稳定性
  • 回滚能力:版本更新和发布是再所难免的问题,在出现问题的时候如何快速回滚,而且保证出问题和回滚期间的数据采集还是at least once甚至是exactly once。

3、可管控:可观测数据的应用范围非常的广,几乎所有的业务、运维、BI、安全等部门都会要用,而一台机器上也会产生各种数据,同一台机器产生的数据上也会有多个部门的人要去使用,例如在2018年我们统计,平均一台虚拟机上有100多个不同类型的数据需要采集,设计10多个不同部门的人要去使用这些数据。除了这些之外,还会有其他很多企业级的特性需要支持,例如:

  • 配置的远程管理:在大规模场景下,手工登录机器修改配置基本没有可行性,因此需要一套配置的图形化管理、远程存储、自动下发的机制,而且还要能够区分不同的应用、不同的Region、不同的归属方等信息。同时因为涉及到远程配置的动态加卸载,Agent还需要能够保证配置Reload期间数据不丢不重
  • 采集配置优先级:当一台机器上有多个采集配置在运行时,如果遇到资源不足的情况,需要区分每个不同的配置优先级,资源优先供给高优先级的配置,同时还要确保低优先级的配置不被“饿死”
  • 降级与恢复能力:在阿里,大促、秒杀是家常便饭,在这种波峰期间,可能有很多不重要的应用被降级,同样对应应用的数据也需要降级,降级后,在凌晨波峰过后,还需要有足够的Burst能力快速追齐数据
  • 数据采集齐全度:监控、数据分析等场景都要求数据准确度,数据准确的前提是都能及时采集到服务端,但如何在计算前确定每台机器、每个文件的数据都采集到了对应的时间点,需要一套非常复杂的机制去计算

image.png

基于以上的背景和挑战下,我们从2013年开始,不断逐渐优化和改进iLogtail来解决性能、稳定性、可管控等问题,并经历了阿里多次双十一、双十二、春晚红包等项目的考验。目前iLogtail支持包括Logs、Traces、Metrics多种类型数据的统一收集,核心的特点主要如下:

  • 支持多种Logs、Traces、Metrics数据采集,尤其对容器、Kubernetes环境支持非常友好
  • 数据采集资源消耗极低,单核采集能力100M/s,相比同类可观测数据采集的Agent性能好5-20倍
  • 高稳定性,在阿里巴巴以及数万阿里云客户生产中使用验证,部署量近千万,每天采集数十PB可观测数据
  • 支持插件化扩展,可任意扩充数据采集、处理、聚合、发送模块
  • 支持配置远程管理,支持以图形化、SDK、K8s Operator等方式进行配置管理,可轻松管理百万台机器的数据采集
  • 支持自监控、流量控制、资源控制、主动告警、采集统计等多种高级管控特性

三 iLogtail发展历程

秉承着阿里人简单的特点,iLogtail的命名也非常简单,我们最开始期望的就是能够有一个统一去Tail日志的工具,所以就叫做Logtail,添加上“i”的原因主要当时使用了inotify的技术,能够让日志采集的延迟控制在毫秒级,因此最后叫做iLogtail。从2013年开始研发,iLogtail整个发展历程概括起来大致可以分为三个阶段,分别是飞天5K阶段、阿里集团阶段和云原生阶段。

image.png

1 飞天5K阶段

作为中国云计算领域的里程碑,2013年8月15日,阿里巴巴集团正式运营服务器规模达到5000(5K)的“飞天”集群,成为中国第一个独立研发拥有大规模通用计算平台的公司,也是世界上第一个对外提供5K云计算服务能力的公司。

飞天5K项目从2009年开始,从最开始的30台逐渐发展到5000,不断解决系统核心的问题,比如说规模、稳定性、运维、容灾等等。而iLogtail在这一阶段诞生,最开始就是要解决5000台机器的监控、问题分析、定位的工作(如今的词语叫做“可观测性”)。从30到5000的跃升中,对于可观测问题有着诸多的挑战,包括单机瓶颈、问题复杂度、排查便捷性、管理复杂度等。

image.png

在5K阶段,iLogtail本质上解决的是从单机、小规模集群到大规模的运维监控挑战,这一阶段iLogtail主要的特点有:

  • 功能:实时日志、监控采集,日志抓取延迟毫秒级
  • 性能:单核处理能力10M/s,5000台集群平均资源占用0.5%CPU核
  • 可靠性:自动监听新文件、新文件夹,支持文件轮转,处理网络中断
  • 管理:远程Web管理,配置文件自动下发
  • 运维:加入集团yum源,运行状态监控,异常自动上报
  • 规模:3W+部署规模,上千采集配置项,日10TB数据

2 阿里集团阶段

iLogtail在阿里云飞天5K项目中的应用解决了日志、监控统一收集的问题,而当时阿里巴巴集团、蚂蚁等还缺少一套统一、可靠的日志采集系统,因此我们开始推动iLogtail作为集团、蚂蚁的日志采集基础设施。从5K这种相对独立的项目到全集团应用,不是简单复制的问题,而我们要面对的是更多的部署量、更高的要求以及更多的部门:

  1. 百万规模运维问题:此时整个阿里、蚂蚁的物理机、虚拟机超过百万台,我们希望只用1/3的人力就可以运维管理百万规模的Logtail
  2. 更高的稳定性:iLogtail最开始采集的数据主要用于问题排查,集团广泛的应用场景对于日志可靠性要求越来越高,例如计费计量数据、交易数据,而且还需要满足双十一、双十二等超大数据流量的压力考验。
  3. 多部门、团队:从服务5K团队到近千个团队,会有不同的团队使用不同的iLogtail,而一个iLogtail也会被多个不同的团队使用,在租户隔离上对iLogtail是一个新的挑战。

经过几年时间和阿里集团、蚂蚁同学的合作打磨,iLogtail在多租户、稳定性等方面取得了非常大的进步,这一阶段iLogtail主要的特点有:

  • 功能:支持更多的日志格式,例如正则、分隔符、JSON等,支持多种日志编码方式,支持数据过滤、脱敏等高级处理
  • 性能:极简模式下提升到单核100M/s,正则、分隔符、JSON等方式20M/s+
  • 可靠性:采集可靠性支持Polling、轮转队列顺序保证、日志清理保护、CheckPoint增强;进程可靠性增加Critical自恢复、Crash自动上报、多级守护

image.png

日志保序采集方案原理(细节可参考《iLogtail技术分享(一) : Polling + Inotify 组合下的日志保序采集方案》)

  • 多租户:支持全流程多租户隔离、多级高低水位队列、采集优先级、配置级/进程级流量控制、临时降级机制

image.png

多租户隔离整体流程(细节可参考《iLogtail技术分享(二):多租户隔离技术+双十一实战效果》)

  • 运维:基于集团StarAgent自动安装与守护,异常主动通知,提供多种问题自查工具
  • 规模:百万+部署规模,千级别内部租户,10万+采集配置,日采集PB级数据

3 云原生阶段

随着阿里所有IT基础设施全面云化,以及iLogtail所属产品SLS(日志服务)正式在阿里云上商业化,iLogtail开始全面拥抱云原生。从阿里内部商业化并对外部各行各业的公司提供服务,对于iLogtail的挑战的重心已经不是性能和可靠性,而是如何适应云原生(容器化、K8s,适应云上环境)、如何兼容开源协议、如何去处理碎片化需求。这一阶段是iLogtail发展最快的时期,经历了非常多重要的变革:

  • 统一版本:iLogtail最开始的版本还是基于GCC4.1.2编译,代码还依赖飞天基座,为了能适用更多的环境,iLogtail进行了全版本的重构,基于一套代码实现Windows/Linux、X86/Arm、服务器/嵌入式等多种环境的编译发版
  • 全面支持容器化、K8s:除了支持容器、K8s环境的日志、监控采集外,对于配置管理也进行了升级,支持通过Operator的方式进行扩展,只需要配置一个AliyunLogConfig的K8s自定义资源就可以实现日志、监控的采集

image.png

iLogtail Kubernetes日志采集原理(细节可参考《Kubernetes日志采集原理剖析》)

  • 插件化扩展:iLogtail增加插件系统,可自由扩展Input、Processor、Aggregator、Flusher插件用以实现各类自定义的功能

image.png

iLogtail插件系统整体流程(细节可参考《iLogtail插件系统简介》)

  • 规模:千万部署规模,数万内外部客户,百万+采集配置项,日采集数十PB数据

四 开源背景与期待

闭源自建的软件永远无法紧跟时代潮流,尤其在当今云原生的时代,我们坚信开源才是iLogtail最优的发展策略,也是释放其最大价值的方法。iLogtail作为可观测领域最基础的软件,我们将之开源,也希望能够和开源社区一起共建,持续优化,争取成为世界一流的可观测数据采集器。对于未来iLogail的发展,我们期待:

  1. iLogtail在性能和资源占用上相比其他开源采集软件具备一定优势,相比开源软件,在千万部署规模、日数十PB数据的规模性下为我们减少了100TB的内存和每年1亿的CPU核小时数。我们也希望这款采集软件可以为更多的企业带来资源效率的提升,实现可观测数据采集的“共同富裕”。
  2. 目前iLogtail还只是在阿里内部以及很小一部分云上企业(虽然有几万家,但是面对全球千万的企业,这个数字还很小),面对的场景相对还较少,我们希望有更多不同行业、不同特色的公司可以使用iLogtail并对其提出更多的数据源、处理、输出目标的需求,丰富iLogtail支持的上下游生态。
  3. 性能、稳定性是iLogtail的最基本追求,我们也希望能够通过开源社区,吸引更多优秀的开发者,一起共建iLogtail,持续提升这款可观测数据采集器的性能和稳定性。

链接汇总:

1)阿里正式开源可观测数据采集器iLogtail:https://github.com/alibaba/ilogtail
2)《iLogtail技术分享(一) : Polling + Inotify 组合下的日志保序采集方案》:https://zhuanlan.zhihu.com/p/29303600
3)《iLogtail技术分享(二):多租户隔离技术+双十一实战效果》:https://www.sohu.com/a/205324880_465959
4)《Kubernetes日志采集原理剖析》:https://developer.aliyun.com/article/806369
5)《iLogtail插件系统简介》:https://github.com/alibaba/ilogtail/blob/main/docs/zh/concept%26designs/Overview.md


大数据Impala教程

Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。它是一个用C ++和Java编写的开源软件。与其他Hadoop的SQL引擎相比,它提供了高性能和低延迟。Impala通过使用标准组件(如HDFS,HBase,Metastore,YARN和Sentry)将传统分析数据库的SQL支持和多用户性能与Hadoop的可扩展性和灵活性相结合。

本课程讲解了大数据分布式计算的发展及Impala的应用场景,对比Hive、MapReduce、Spark等类似框架讲解了内存式计算原理,以及如何基于Impala构建高性能交互式SQL分析平台。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
消息中间件 数据采集 JSON
iLogtail社区版使用入门 - iLogtail日志处理实战
本文将会详细介绍使用iLogtail社区版进行日志采集时,对于常见日志格式的处理实战。为了便于调测,以下样例默认将采集到的日志,经过处理后,输出到标准输出,开发者可以根据实际需求进行适当的调整。
3665 0
|
10月前
|
存储 前端开发 数据可视化
Grafana Loki,轻量级日志系统
本文介绍了基于Grafana、Loki和Alloy构建的轻量级日志系统。Loki是一个由Grafana Labs开发的日志聚合系统,具备高可用性和多租户支持,专注于日志而非指标,通过标签索引而非内容索引实现高效存储。Alloy则是用于收集和转发日志至Loki的强大工具。文章详细描述了系统的架构、组件及其工作流程,并提供了快速搭建指南,包括准备步骤、部署命令及验证方法。此外,还展示了如何使用Grafana查看日志,以及一些基本的LogQL查询示例。最后,作者探讨了Loki架构的独特之处,提出了“巨型单体模块化”的概念,即一个应用既可单体部署也可分布式部署,整体协同实现全部功能。
3622 71
Grafana Loki,轻量级日志系统
|
存储 人工智能 运维
重磅!阿里云可观测产品家族全新升级,AI +数据双驱动,打造全栈可观测体系
近日,阿里云可观测产品家族正式发布云监控 2.0,隶属产品日志服务 SLS、云监控 CMS、应用实时监控服务 ARMS 迎来重磅升级。
1273 100
|
12月前
|
运维 Prometheus 监控
🎉 WatchAlert - 开源多数据源告警引擎【运维研发必备能力】
WatchAlert 是一个开源的多数据源告警引擎,支持从 Prometheus、Elasticsearch、Kubernetes 等多种数据源获取监控数据,并根据预定义的告警规则触发告警。它具备多数据源支持、灵活的告警规则、多渠道告警通知、可扩展架构和高性能等核心特性,帮助团队更高效地监控和响应问题。项目地址:https://github.com/opsre/WatchAlert
1513 18
🎉 WatchAlert - 开源多数据源告警引擎【运维研发必备能力】
|
12月前
|
存储 人工智能 运维
AI + 可观测最佳实践:让业务从“看见”到“洞察”
本文介绍了AI Ops的概念及其在提升系统运维效率、洞察力和可观测性方面的作用。主要内容分为三个部分:一是监控、观测与洞察的区别及挑战,强调了数据整合和语义对齐的重要性;二是AI与计算如何重塑可观测性,通过UModel数字图谱和多模态存储分析架构实现数据联通;三是最佳实践与未来展望,展示了阿里云AI Stack可观测解决方案的应用案例,并总结了可观测性的四个发展阶段,最终愿景是借助AI力量让每个人成为多领域的专家。
十年磨一剑:蚂蚁集团可观测性平台 AntMonitor 揭秘
蚂蚁集团的业务种类繁多,兼具金融级的“稳” 和互联网的 “快”,支撑又快又稳的业务发展需要完善的稳定性保障体系, 这个体系的基石就是可观测性平台-AntMonitor 。 早在2011年前,监控平台就已经完成初代建设,在2012到2017年这五年间,蚂蚁监控技术团队抽象出了业务视角监控牵引的模式,大大提升了核心业务的故障发现能力,同期研发了可视化引擎与易用的配置系统。为了支撑双11等大规模海量计算场景,在底层数据技术上做到了实时稳定的大规模日志和指标处理能力。随着这些能力的完成,可观测平台的产品也逐渐成熟。
|
数据采集 存储 消息中间件
iLogtail开源之路
2022年6月底,阿里云iLogtail代码完整开源,正式发布了完整功能的iLogtail社区版。iLogtail作为阿里云SLS官方标配的采集器,多年以来一直稳定服务阿里集团、蚂蚁集团以及众多公有云上的企业客户,目前已经有千万级的安装量,每天采集数十PB的可观测数据,广泛应用于线上监控、问题分析/定位、运营分析、安全分析等多种场景。此次完整开源,iLogtail社区版首次在内核能力上与企业版完全对齐,开发者可以构建出与企业版性能相当的iLogtail云原生可观测性数据采集器。
1409 1
iLogtail开源之路
|
存储 消息中间件 监控
容器日志采集利器Log-Pilot
容器时代越来越多的传统应用将会逐渐容器化,而日志又是应用的一个关键环节,那么在应用容器化过程中,如何方便快捷高效地来自动发现和采集应用的日志,如何与日志存储系统协同来高效存储和搜索应用日志,本文将主要跟大家分享下如何通过Log-Pilot来采集容器的标准输出日志和容器内文件日志。
22973 0
|
存储 Ubuntu Java
镜像搬运工具 Skopeo 使用
镜像搬运工具 Skopeo 使用
|
消息中间件 数据采集 Kubernetes
鲲鹏展翅凌云志:iLogtail社区2022年度开源报告
iLogtail 作为一款阿里云日志服务(SLS)团队自研的可观测数据采集器,拥有的轻量级、高性能、自动化配置等诸多生产级别特性,可以部署于物理机、虚拟机、Kubernetes 等多种环境中,用于采集文件、容器输出、指标等各类可观测数据。iLogtail 的核心定位是帮助开发者构建统一的数据采集层,助力可观测平台打造各种上层的应用场景;此外,对于一些寻求轻量计算的场景,也可以使用 iLogtail 承担一些数据聚合、数据过滤、数据路由等功能。
16408 3
鲲鹏展翅凌云志:iLogtail社区2022年度开源报告