你可能还想看
1. 达摩院量子计算成果,登全球物理学顶刊
2. 负载均衡的前世今生 | 揭秘阿里云 ALB Ingress 云原生网关
3. 如何设计针对冷热读写场景的 RocketMQ 存储系统
4. 荐书 | 互联网科技与文化的《冲击波》
5. 定档!2022 阿里云合作伙伴大会
关注我们
欢迎关注加星标✨ 每日推送不错过
凌云时刻
这些数据的收集通常由一个与被观测对象共同运行的采集 Agent 完成。基于云原生和微服务的现代系统架构下,这些观测对象比以往分布更加分散,数量更多且变化更快,使得采集 Agent 面临如下挑战:
由于尚无完美解决以上挑战的开源 Agent,我们选择自研 iLogtail。iLogtail 的核心定位就是可观测数据的采集器,帮助开发者构建统一的业务数据采集层,助力可观测平台打造各种上层的应用场景。
iLogtail 简介
iLogtail 在阿里云上服务了数万家客户主机和容器的可观测性采集工作,在阿里巴巴集团的核心产品线,如淘宝、天猫、支付宝、菜鸟、高德地图等也是默认的日志、监控、Trace 等多种可观测数据的采集工具。
诞生初期,面对阿里云自身和早期客户运维和可观测性需求,iLogtail 主要解决的是从单机、小规模集群到大规模的运维监控挑战,此时的 iLogtail 已经具备了基本的文件发现和轮转处理能力,可以实现日志、监控实时采集,抓取毫秒级延迟,单核处理能力约为 10M/s。通过 Web 前端可支持中心化配置文件自动下发,支持 3W+ 部署规模,上千采集配置项,实现日 10TB 数据的高效采集。
2015 年,阿里巴巴开始推进集团和蚂蚁金服业务上云,面对近千个团队、数百万终端、以及双 11、双 12 等超大流量数据采集的挑战,iLogtail 在功能、性能、稳定性和多租户支持方面都需要进行巨大的改进。
通过全流程多租户隔离、多级高低水位队列、配置级/进程级流量控制、临时降级等机制,支持百万+部署规模,千级别租户,10万+ 采集配置项,实现日 PB 级数据的稳定采集。
随着阿里推进核心业务全面上云,以及 iLogtail 所属日志服务(SLS)正式在阿里云上商业化,iLogtail 开始全面拥抱云原生。面对多元的云上环境、迅速发展的开源生态和大量涌入的行业客户需求,iLogtail 的发展的重心转移到解决如何适应云原生、如何兼容开源协议和如何去处理碎片化需求等问题上。
2018 年 iLogtail 正式支持 docker 容器采集,2019 年支持 containerd 容器采集,2020 年全面升级 Metric 采集,2021 年增加 Trace 支持。通过全面支持容器化、K8S Operator 管控和可扩展插件系统,iLogtail 支持千万部署规模,数万内外部客户,百万+采集配置项,实现日数十 PB 数据的稳定采集。
iLogtail 优势
对于可观测数据的采集,有很多开源的采集器,例如 Logstash、Fluentd、Filebeats 等。这些采集器的功能非常丰富,但在性能、稳定性、管控能力等关键特性方面 iLogtail 因其独特设计而具备优势。
本次 iLogtail C++ 内核开源全面对齐企业版功能特性,并新增基于 Pipeline 的极简采集配置项提升社区版易用性。
C++ 核心源代码包含了功能完整的文件发现机制,可以支持通配符和多层次目录的动态日志文件监控,并支持日志轮转、日志数、轮转大小设置。
iLogtail C++ 内核与插件系统配合可支持全场景的容器数据采集。
iLogtail 通过插件发现节点的容器列表并维护容器和日志采集路径映射,结合 C++ 内核高效的文件采集能力提供了极致的容器数据采集体验。
iLogtail 支持使用容器标签、环境变量、K8s 标签、Pod 名称、命名空间等多种方式进行容器筛选,为用户提供了便利的采集源配置能力。支持 DaemonSet、Sidecar、CRD 等多种部署方式,为应对不同使用场景提供了灵活的部署能力。
iLogtail 实现如此高吞吐的秘诀之一是使用了无锁化事件处理模型。与业界其他开源 Agent 为每个配置分配独立线程/Goroutine 读取数据不同,iLogtail 数据的读取只配置了一个线程。
由于数据读取的瓶颈并不在于计算而是磁盘,单线程足以完成所有配置的事件处理以及数据读取。使用单线程使得 iLogtail 的事件处理和数据读取都可以在无锁环境下运行,数据结构更加轻量化,从而取得了相对多线程处理更优的性价比。
在生产环境中,一台服务存在数百个采集配置属于常态,每个配置的优先级、日志产生速度、处理方式、上传目的地址等都有可能不同,因此必须有效解决如何隔离各种自定义配置,保证采集配置 QoS 不因部分配置异常而受到影响的问题。
一个最简配置示例:
enable: true
inputs:
- Type: file_log
LogPath: /log
FilePattern: simple.log
flushers:
- Type: flusher_stdout
后续展望
C++ 核心模块是 iLogtail 在性能和资源占用上相比其他开源采集软件具备一定优势的主要因素,希望这次 C++ 核心部分的开源能为更多的企业带来资源效率的进一步提升,同时丰富 iLogtail 的产品生态,吸引更多优秀开发者参与社区建设。
在云原生时代,我们坚信开源才是 iLogtail 最优的发展策略,也是释放其最大价值的方法。iLogtail 作为可观测领域最基础的软件,在各行各业仍然有许多不同场景有待发现。我们希望能够和开源社区一起共建,持续优化,争取成为世界一流的可观测数据采集器。
GitHub:
https://github.com/alibaba/ilogtail
社区版用户手册:
https://ilogtail.gitbook.io/ilogtail-docs
企业版官网:
https://help.aliyun.com/document_detail/65018.html欢迎关注加星标✨ 每日推送不错过