수천만 개의 관찰 가능한 데이터 수집기 - iLogtail 코드 완성 및 오픈 소스

소개: 2022년 6월 29일 Alibaba Cloud iLogtail은 오픈 소스가 된 후 첫 번째 주요 업데이트를 시작하고 완전한 기능을 갖춘 iLogtail Community Edition을 공식적으로 출시했습니다. 이 업데이트에서 모든 C++ 핵심 코드는 오픈 소스입니다.이 버전은 커널 기능 측면에서 엔터프라이즈 버전과 처음으로 일치합니다.개발자는 엔터프라이즈 버전과 유사한 성능으로 iLogtail 클라우드 네이티브 관찰 데이터 수집기를 구축할 수 있습니다. 이 릴리스에는 로그 파일 수집, 컨테이너 파일 수집, 잠금 없는 이벤트 처리, 다중 테넌트 격리 및 커뮤니티 에디션의 사용성과 성능을 종합적으로 향상시키는 파이프라인 기반의 새로운 구성 방법과 같은 많은 중요한 기능이 추가되었습니다. 주의를 기울이기 위해 공동 건설.

이미지.png

저자 | Xunfei, Ye Mo
출처 | Ali 개발자 공개 계정

2022년 6월 29일 Alibaba Cloud iLogtail은 오픈 소스가 된 후 첫 번째 주요 업데이트를 시작하고 완전한 기능을 갖춘 iLogtail 커뮤니티 버전을 공식적으로 출시했습니다. 이 업데이트에서 모든 C++ 핵심 코드는 오픈 소스입니다.이 버전은 커널 기능 측면에서 엔터프라이즈 버전과 처음으로 일치합니다.개발자는 엔터프라이즈 버전과 유사한 성능으로 iLogtail 클라우드 네이티브 관찰 데이터 수집기를 구축할 수 있습니다. 이 릴리스에는 로그 파일 수집, 컨테이너 파일 수집, 잠금 없는 이벤트 처리, 다중 테넌트 격리 및 커뮤니티 에디션의 사용성과 성능을 종합적으로 향상시키는 파이프라인 기반의 새로운 구성 방법과 같은 많은 중요한 기능이 추가되었습니다. 주의를 기울이기 위해 공동 건설.

관측 가능성 데이터 수집 과제

이미지.png
이미지.png

관찰 가능성은 출력을 조사하여 시스템의 내부 상태를 측정하는 능력입니다. 이 용어는 수십 년 전에 제어 이론에서 시작되었으며 헝가리 태생의 엔지니어 Rudolf Kalman이 처음 제안했습니다. 분산된 IT 시스템에서 관찰 가능성은 일반적으로 여러 유형의 원격 측정 데이터(로그, 메트릭 및 추적)를 사용하여 인프라, 플랫폼 및 애플리케이션을 측정하여 운영 상태와 프로세스를 이해합니다. 이러한 데이터의 수집은 일반적으로 관찰된 개체와 함께 실행되는 수집 에이전트에 의해 완료됩니다. 클라우드 네이티브 및 마이크로 서비스를 기반으로 하는 최신 시스템 아키텍처에서 이러한 관찰 개체는 이전보다 더 많이 분산되고 더 많고 빠르게 변경되므로 수집 에이전트는 다음과 같은 문제에 직면하게 됩니다.

  1. 고성능, 낮은 오버헤드: 최신 애플리케이션은 일반적으로 데이터 센터, 퍼블릭 클라우드 및 에지의 수천 대의 서버, 가상 머신 및 컨테이너에서 실행되며 수집 에이전트의 모든 성능 오버헤드는 수천 배로 증폭됩니다. 현재 많은 오픈 소스 에이전트의 설계는 성능보다 기능에 중점을 두고 있으며 단일 코어 처리 성능은 일반적으로 약 2-10M/s이며 100M/s의 단일 코어 성능을 달성하기를 희망합니다. 수집 대상 증가, 데이터 볼륨 증가, 수집 지연, 서버 이상 등의 경우 오픈 소스 에이전트의 메모리는 폭발적인 성장을 보일 것이며, 다양한 환경에서도 메모리가 낮은 수위 수준이 될 수 있기를 바랍니다.
  2. 안정적이고 정확한 수집, 다단계 결함 분리: 관찰 가능성은 관찰되는 시스템보다 최소한 10배 이상 신뢰할 수 있어야 합니다. 데이터 수집 에이전트의 안정성은 데이터 수집 자체의 정확성을 보장하는 것 외에도 비즈니스 애플리케이션이 영향을 받지 않도록 해야 합니다. 그렇지 않으면 치명적인 결과를 초래할 수 있습니다. 한편, 어떤 문제가 발생하더라도 가능한 한 문제를 고립시킬 필요가 있는데, 예를 들어 하나의 Agent에 여러 개의 수집 설정이 존재하고, 설정 문제가 다른 설정에 영향을 미칠 수는 없다.
  3. 대규모 엔터프라이즈 수준 관리 및 제어 구성: 관찰 가능한 데이터에는 광범위한 응용 프로그램이 있습니다. 기업 내에는 종종 많은 수의 구성이 있습니다. 에이전트는 수동으로 로그인하는 대신 중앙 집중식 및 자동화된 구성 관리 기능을 지원해야 합니다. 구성을 수정하고 구성 중에 데이터를 확인하기 위해 기계에 다시 로드합니다. 손실되거나 무겁지 않습니다. 에이전트가 수집 구성이 여러 개인 경우 리소스를 합리적으로 정렬합니다. 우선 순위가 높은 구성에 대해 메모리 대역폭과 같은 리소스에 우선 순위를 부여하고 우선 순위가 낮은 구성이 "굶어 죽지" 않도록 보장해야 합니다. 피크 이후에 충분한 리소스 데이터를 빠르게 따라잡을 수 있는 버스트 기능
  4. 보다 기본적이고 친숙한 K8 지원: K8s는 강력한 운영 및 유지 관리 배포, 탄력적 확장 및 장애 복구 기능을 제공하여 분산 시스템의 개발 및 관리를 크게 용이하게 하지만 로그 수집 문제도 발생합니다. K8의 다양한 데이터 출력으로 인해 동일한 에이전트가 호스트 로그, 컨테이너 로그, 컨테이너 표준 출력 및 기타 데이터 소스의 수집을 동시에 지원해야 합니다. 비즈니스 배포를 위한 K8의 탄력적 확장 기능을 사용하려면 에이전트가 컨테이너를 동적으로 검색하고 표시할 수 있어야 하며 데이터 수집의 무결성을 보장하는 방법에 대한 더 높은 요구 사항도 제시해야 합니다.

위의 문제를 완벽하게 해결하는 오픈 소스 에이전트가 없기 때문에 우리는 iLogtail을 자체 개발하기로 결정했습니다. iLogtail의 핵심 포지셔닝은 관찰 가능한 데이터 수집기이며, 이는 개발자가 통합 비즈니스 데이터 수집 계층을 구축하고 관찰 가능한 플랫폼이 다양한 상위 계층 애플리케이션 시나리오를 생성하는 데 도움이 됩니다.

iLogtail 소개

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

이미지.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++核心代码也正式开源了,自此开发者可以基于该版本构建完整的云原生可观测数据采集方案。

이미지.png

iLogtail优势

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

이미지.png

C++内核重要特性

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

日志文件采集

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

이미지.png

容器文件采集

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

이미지.png

无锁化事件处理

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

多租户隔离

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

이미지.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이 성능 및 리소스 사용량 측면에서 다른 오픈 소스 획득 소프트웨어에 비해 특정 이점을 제공하는 주요 요소입니다. iLogtail의 기능 제품 생태학, 커뮤니티 건설에 참여하는 더 뛰어난 개발자 유치.
오늘날의 클라우드 네이티브 시대에 우리는 오픈 소스가 iLogtail을 위한 최고의 개발 전략이자 최대 가치를 실현하는 방법이라고 굳게 믿습니다. 관찰 가능한 분야에서 가장 기본적인 소프트웨어인 iLogtail은 여전히 ​​모든 분야에서 다양한 시나리오를 발견할 수 있습니다. 우리는 오픈 소스 커뮤니티와 함께 ​​구축하고, 계속해서 최적화하고, 세계 최고 수준의 관찰 가능한 데이터 수집기가 되기 위해 노력하기를 바랍니다.

관련 정보
GitHub: github.com/alibaba/ilo…

커뮤니티 에디션 사용자 매뉴얼: ilogtail.gitbook.io/ilogtail-do…

엔터프라이즈 에디션 공식 웹사이트: help.aliyun.com/document_de…

기술 인력은 개인 브랜드 영향력을 어떻게 구축합니까? 5명의 최고 제작자가 독점적으로 가르칩니다!

개발자 커뮤니티와 InfoQ는 특별히 "Technical Creation Training Camp"를 계획하고, 2명의 골드 튜터 + 5명의 최고 작가가 쓰기 방법론을 독점적으로 가르쳐 고품질 기술 생성의 길을 열어줍니다.

자세한 내용은 여기를 클릭하십시오.

원본 링크: click.aliyun.com/m/100034877…

이 기사는 Alibaba Cloud의 원본 콘텐츠이며 허가 없이 복제할 수 없습니다.

рекомендация

отjuejin.im/post/7119793144299782158