数千万の監視可能なデータコレクター--iLogtailコードが完全でオープンソース

はじめに:2022年6月29日、Alibaba Cloud iLogtailは、オープンソース化された後、最初のメジャーアップデートを開始し、完全に機能するiLogtailCommunityEditionを正式にリリースしました。このアップデートでは、すべてのC ++コアコードがオープンソースです。このバージョンは、カーネル機能の点でエンタープライズバージョンと一致する最初のバージョンです。開発者は、エンタープライズバージョンと同等のパフォーマンスを備えたiLogtailクラウドネイティブの可観測性データコレクターを構築できます。このリリースでは、ログファイルの収集、コンテナファイルの収集、ロックフリーイベント処理、マルチテナント分離、コミュニティエディションの使いやすさとパフォーマンスを包括的に強化するPipelineに基づく新しい構成方法など、多くの重要な機能が追加されています。開発者を歓迎します。注意を払うために、共同建設。

image.png

著者|Xunfei、YeMo
ソース|Ali開発者パブリックアカウント

2022年6月29日、Alibaba Cloud iLogtailは、オープンソース化された後、最初のメジャーアップデートを開始し、完全に機能するiLogtailコミュニティバージョンを正式にリリースしました。このアップデートでは、すべてのC ++コアコードがオープンソースです。このバージョンは、カーネル機能の点でエンタープライズバージョンと一致する最初のバージョンです。開発者は、エンタープライズバージョンと同等のパフォーマンスを備えたiLogtailクラウドネイティブの可観測性データコレクターを構築できます。このリリースでは、ログファイルの収集、コンテナファイルの収集、ロックフリーイベント処理、マルチテナント分離、コミュニティエディションの使いやすさとパフォーマンスを包括的に強化するPipelineに基づく新しい構成方法など、多くの重要な機能が追加されています。開発者を歓迎します。注意を払うために、共同建設。

可観測性データ収集の課題

image.png
image.png

可観測性とは、システムの出力を調べることによってシステムの内部状態を測定する機能です。この用語は、数十年前に制御理論に由来し、ハンガリー生まれのエンジニアであるルドルフカルマンによって最初に提案されました。分散ITシステムでは、可観測性は通常、ログ、メトリック、トレースなどのいくつかのタイプのテレメトリデータを使用して、インフラストラクチャ、プラットフォーム、およびアプリケーションを測定し、それらの運用ステータスとプロセスを理解します。これらのデータの収集は通常、監視対象オブジェクトと一緒に実行される収集エージェントによって完了されます。クラウドネイティブおよびマイクロサービスに基づく最新のシステムアーキテクチャでは、これらの観測オブジェクトは以前よりも分散され、数が多く、変化が速いため、収集エージェントは次の課題に直面します。

  1. 高性能、低オーバーヘッド:最新のアプリケーションは通常、データセンター、パブリッククラウド、およびエッジの数千のサーバー、仮想マシン、コンテナーで実行され、収集エージェントのパフォーマンスオーバーヘッドのすべてのビットが数千で増幅されます。現在、多くのオープンソースエージェントの設計は、パフォーマンスよりも機能に重点を置いています。シングルコア処理のパフォーマンスは、通常2〜10M / s程度であり、100M/sのシングルコアパフォーマンスを達成したいと考えています。収集ターゲットの増加、データ量の増加、収集の遅延、サーバーの異常の場合、オープンソースエージェントのメモリは爆発的に増加します。さまざまな環境でも、メモリの水位が低くなることを期待しています。
  2. 安定した正確な取得、障害のマルチレベルの分離:可観測性は、観測されているシステムよりも少なくとも1桁信頼性が高い必要があります。データ収集エージェントの安定性は、データ収集自体の正確性を確保することに加えて、ビジネスアプリケーションに影響を与えないようにする必要もあります。そうしないと、壊滅的な結果を招きます。一方、どのように問題が発生したとしても、可能な限り問題を切り分ける必要があります。たとえば、エージェントには複数の収集構成があり、構成の問題が他の構成に影響を与えることはありません。
  3. エンタープライズレベルの管理と制御の大規模な構成:監視可能なデータにはさまざまなアプリケーションがあります。企業内には多数の構成が存在することがよくあります。エージェントは、手動でログインするのではなく、一元化された自動構成管理機能をサポートする必要があります。構成を変更し、構成中にデータを確保するためにマシンにリロードします。紛失したり、重くなったりすることはありません。エージェントに複数の収集構成がある場合は、リソースを合理的に配置します。優先度の高い構成ではメモリ帯域幅などのリソースを優先し、優先度の低い構成が「枯渇」しないようにする必要があります。ピーク後の十分なリソース。データにすばやく追いつくためのバースト機能。
  4. よりネイティブでフレンドリーなK8sサポート:K8sは、強力な運用と保守のデプロイ、柔軟なスケーリング、障害回復機能を提供し、分散システムの開発と管理を大幅に容易にします。ただし、ログ収集の問題も発生します。K8の多様なデータ出力により、同じエージェントがホストログ、コンテナログ、コンテナstdout、その他のデータソースの収集を同時にサポートする必要があります。ビジネス展開のためのK8の柔軟なスケーリング機能には、エージェントがコンテナを動的に検出してマークを付ける機能が必要です。また、データ収集の整合性を確保する方法について、より高い要件を提示します。

上記の課題を完全に解決するオープンソースエージェントがないため、私たちは自分たちでiLogtailを開発することにしました。iLogtailの中心的な位置付けは、監視可能なデータコレクターです。これは、開発者が統合されたビジネスデータ収集レイヤーを構築し、監視可能なプラットフォームがさまざまな上位層のアプリケーションシナリオを作成するのに役立ちます。

iLogtailの紹介

iLogtail是阿里云日志服务(SLS)团队自研的可观测数据采集Agent,拥有的轻量级、高性能、自动化配置等诸多生产级别特性,可以署于物理机、虚拟机、Kubernetes等多种环境中来采集遥测数据。iLogtail在阿里云上服务了数万家客户主机和容器的可观测性采集工作,在阿里巴巴集团的核心产品线,如淘宝、天猫、支付宝、菜鸟、高德地图等也是默认的日志、监控、Trace等多种可观测数据的采集工具。目前iLogtail已有千万级的安装量,每天采集数十PB的可观测数据,广泛应用于线上监控、问题分析/定位、运营分析、安全分析等多种场景,在实战中验证了其强大的性能和稳定性。

image.png

iLogtail发展历程

iLogtail的前身源自阿里云的神农项目,自从2013年正式孵化以来,iLogtail始终在不断演进。

诞生初期,面对阿里云自身和早期客户运维和可观测性需求,iLogtail主要解决的是从单机、小规模集群到大规模的运维监控挑战,此时的iLogtail已经具备了基本的文件发现和轮转处理能力,可以实现日志、监控实时采集,抓取毫秒级延迟,单核处理能力约为10M/s。通过Web前端可支持中心化配置文件自动下发,支持3W+部署规模,上千采集配置项,实现日10TB数据的高效采集。

2015年,阿里巴巴开始推进集团和蚂蚁金服业务上云,面对近千个团队、数百万终端、以及双11、双12等超大流量数据采集的挑战,iLogtail在功能、性能、稳定性和多租户支持方面都需要进行巨大的改进。至2017年前后,iLogtail已经具备了正则、分隔符、JSON等多个格式日志的解析能力,支持多种日志编码方式,支持数据过滤、脱敏等高级处理能力,单核处理能力极简模式下提升到100M/s,正则、分隔符、JSON等方式20M/s+。采集可靠性方面,增加文件发现Polling方式兜底、轮转队列顺序保证、日志清理丢失保护、CheckPoint增强;进程可靠性方面,增加异常自动恢复、Crash自动上报、守护进程等。通过全流程多租户隔离、多级高低水位队列、配置级/进程级流量控制、临时降级等机制,支持百万+部署规模,千级别租户,10万+采集配置项,实现日PB级数据的稳定采集。

随着阿里推进核心业务全面上云,以及iLogtail所属日志服务(SLS)正式在阿里云上商业化,iLogtail开始全面拥抱云原生。面对多元的云上环境、迅速发展的开源生态和大量涌入的行业客户需求,iLogtail的发展的重心转移到解决如何适应云原生、如何兼容开源协议和如何去处理碎片化需求等问题上。2018年iLogtail正式支持docker容器采集,2019年支持containerd容器采集,2020年全面升级Metric采集,2021年增加Trace支持。通过全面支持容器化、K8S Operator管控和可扩展插件系统,iLogtail支持千万部署规模,数万内外部客户,百万+采集配置项,实现日数十PB数据的稳定采集。

2021年11月iLogtail迈出了开源的第一步,将Golang插件代码开源。自开源以来,吸引了数百名开发者的关注,并且也有不少开发者贡献了processor跟flusher插件。今天,C++核心代码也正式开源了,自此开发者可以基于该版本构建完整的云原生可观测数据采集方案。

image.png

iLogtail优势

对于可观测数据的采集,有很多开源的采集器,例如Logstash、Fluentd、Filebeats等。这些采集器的功能非常丰富,但在性能、稳定性、管控能力等关键特性方面iLogtail因其独特设计而具备优势。

image.png

C++内核重要特性

本次iLogtail C++内核开源全面对齐企业版功能特性,并新增基于Pipeline的极简采集配置项提升社区版易用性。

日志文件采集

C++核心源代码包含了功能完整的文件发现机制,可以支持通配符和多层次目录的动态日志文件监控,并支持日志轮转、日志数、轮转大小设置。iLogtail在Linux下使用inotify作为文件监控的主要手段,提供了毫秒级延时的数据发现能力,同时为了兼顾不同操作系统以及支持各类特殊采集场景,iLogtail同时使用了轮询作为的数据的发现方式。通过使用轮询与事件并存的混合方式,iLogtail打造了一套兼具性能优势同时不失鲁棒性的文件发现机制。

image.png

容器文件采集

iLogtail C++内核与插件系统配合可支持全场景的容器数据采集。iLogtail通过插件发现节点的容器列表并维护容器和日志采集路径映射,结合C++内核高效的文件采集能力提供了极致的容器数据采集体验。iLogtail支持使用容器标签、环境变量、K8s标签、Pod名称、命名空间等多种方式进行容器筛选,为用户提供了便利的采集源配置能力。支持DaemonSet、Sidecar、CRD等多种部署方式,为应对不同使用场景提供了灵活的部署能力。而iLogtail采用全局容器列表和通过Kubernetes CRI协议获取容器信息的设计,使其在权限和组件依赖上相比其他开源更加轻量级,并且拥有更高的采集效率。

image.png

无锁化事件处理

iLogtail实现如此高吞吐的秘诀之一是使用了无锁化事件处理模型。与业界其他开源Agent为每个配置分配独立线程/Goroutine读取数据不同,iLogtail数据的读取只配置了一个线程。由于数据读取的瓶颈并不在于计算而是磁盘,单线程足以完成所有配置的事件处理以及数据读取。使用单线程使得iLogtail的事件处理和数据读取都可以在无锁环境下运行,数据结构更加轻量化,从而取得了相对多线程处理更优的性价比。

多租户隔离

在生产环境中,一台服务存在数百个采集配置属于常态,每个配置的优先级、日志产生速度、处理方式、上传目的地址等都有可能不同,因此必须有效解决如何隔离各种自定义配置,保证采集配置QoS不因部分配置异常而受到影响的问题。iLogtail采用基于时间片的采集调度、多级高低水位反馈队列、事件非阻塞处理、流控/停采策略以及配置动态更新等多项关键技术,融合实现了兼具隔离性、公平性、可靠性、可控性、性价比五大特性的多租户隔离方案。经历了多年双11流量高峰期的考验,这套方案已经被证明相比其他开源具备较大的稳定性和性价比优势。

image.png

基于Pipeline的新版配置方式

简洁直观的配置文件对于Agent的使用至关重要,iLogtail早期几乎全部依赖图形化配置方式,默认的JSON配置文件臃肿冗余、难以理解。本次升级使用YAML格式,除了天然继承其可读性强、字符串转义少、支持多行文本、可添加注释的优点外,还根据iLogtail最近的数据流水线架构,将配置文件重新划分为inputs、processors、aggregators、flushers四个部分,注重功能配置淡化实现细节,并统一规范了配置项的命名规范,以进一步降低iLogtail的配置门槛。
一个最简配置示例:

enable: true
inputs:
  - Type: file_log
    LogPath: /log
    FilePattern: simple.log
flushers:
  - Type: flusher_stdout
复制代码

后续展望

2021年11月、私たちはiLogtailの最も機能豊富で拡張可能なGolangプラグインをオープンソース化し、開発者から多くの注目と提案を受けました。600回以上収集し、60回以上の提案を受け取り、120回以上PRしました。C ++コアモジュールは、パフォーマンスとリソース使用量の点で他のオープンソース取得ソフトウェアよりもiLogtailに一定の利点を与える主な要因です。C++コア部分のオープンソースは、より多くの企業のリソース効率をさらに向上させ、充実させることが期待されています。 iLogtailの機能。製品エコロジー。コミュニティ構築に参加するために、より優れた開発者を引き付けます。
今日のクラウドネイティブの時代では、オープンソースがiLogtailの最良の開発戦略であり、その最大の価値を解き放つ方法であると確信しています。観察可能な分野で最も基本的なソフトウェアとして、iLogtailには、あらゆる分野で発見されるさまざまなシナリオがまだあります。私たちは、オープンソースコミュニティと協力して構築し、最適化を継続し、世界クラスの監視可能なデータコレクターになるよう努めたいと考えています。

関連情報
GitHub:github.com/alibaba/ilo…

Community Editionユーザーマニュアル:ilogtail.gitbook.io/ilogtail-do…

Enterprise Editionの公式ウェブサイト:help.aliyun.com/document_de…

技術者はどのようにしてパーソナルブランドの影響力を構築しますか?5人のトップクリエイターが独占的に教えています!

開発者コミュニティとInfoQは、「テクニカルクリエーショントレーニングキャンプ」を特別に計画しています。2人のゴールドチューターと5人のトップ作家が執筆方法論を独占的に教え、高品質のテクニカルクリエーションへの道を開きます。

詳細はこちらをクリックしてください。

元のリンク:click.aliyun.com/m/100034877…

この記事はAlibabaCloudのオリジナルのコンテンツであり、許可なく複製することはできません。

おすすめ

転載: juejin.im/post/7119793144299782158