首页 文章 精选 留言 我的

精选列表

搜索[fota升级],共10005篇文章
优秀的个人博客,低调大师

iLogtail 2.0 重大升级,端上支持 SPL

作者:太业 流式处理语言发展 早期流式处理概念: 20 世纪 70 年代,编程语言如 APL 提供了对数组的流式操作,这可以看作是流式处理语法的早期形式。 管道(Pipes)概念在 UNIX 系统中的引进使得可以通过命令行将一个命令的输出串联到另一个命令的输入。 Java 的流(Stream)API: Java 8 在 2014 年引入了 Stream API,为集合框架提供了一套流式处理语法。 Stream API 支持链式调用、延迟计算和内部迭代,使得流式处理与 Java 语言天然融合。 分布式流处理框架: Apache Storm 和 Apache Samza 等框架提供了面向分布式流处理的语言和 API。 Apache Flink 和 Apache Beam 等更现代化的框架引入了支持事件时间(event time)概念和窗口化计算的复杂流式处理语法。 流批一体(Stream-Batch Unification): Apache Beam 推广了一种新的模型,它允许开发者以相同的方式处理批处理和流处理。 这一模型通过提供一套统一的流式处理语法和抽象,简化了在不同运行时(如Flink、Google Cloud Dataflow)上编写数据处理管道的过程。 SQL 流式查询语言: 流式 SQL 查询语言的发展,如 Apache Flink 的SQL API 和 KSQL(Kafka Streams 的 SQL 接口),使得用户可以通过类 SQL 语法编写复杂的流式处理逻辑。 日志与时序数据属于典型的半结构化或者弱结构化数据,在此基础上微软推出了 KQL(Kusto Query Language)、 Splunk 推出了 Splunk Processing Language,他们都有如下特点: 直观的数据搜索和探索: 使用户能够通过简单的搜索语法直接查询数据,类似于如何在搜索引擎中查询信息。 强大的数据处理能力: 考虑到了需要在大数据集上执行复杂的数据处理和转换操作,例如统计计算、数据分组和排序。 灵活的数据分析: 提供了多种命令和函数,使用户可以灵活地分析数据,包括对时间序列数据进行可视化、识别模式和异常以及创建复杂的数据关联。 实时和历史数据处理: 能够处理实时数据流和历史数据存储,使得用户能够进行即时监控以及过去事件的分析。 可扩展性: 允许用户创建自定义搜索命令和脚本,从而扩展语法的功能,使其能够满足特定的业务需求。 易于学习和使用: 设计注重于易用性,意味着即使是非技术用户也能够通过简单的查询和命令来分析数据。 在此背景下,SLS 推出了 SPL(SLS Processing Language)语法,以此统一查询、端上处理、数据加工等的语法,保证了数据处理的灵活性。iLogtail 作为日志、时序数据采集器,在 2.0 版本中,全面支持了 SPL 。 SPL 和 iLogtail Pipeline 模式的对比 在支持 SPL 之前,iLogtail 在做数据解析的时候,使用的是 Pipeline 模式。 iLogtail 1.X Pipeline 模式 从整体来看,iLogtail 的文件采集模式可以划分为以下两种: 原生插件解析模式 如上图中间部分所示,纯 iLogtail 的核心处理部分由日志切分(Splitter)和日志解析(Parser)组成,均由 C++ 实现,根据选择的日志采集模式,日志切分把读取的文件内容切割成为一条条日志(比如单行基于换行符、多行基于行首正则),然后交由日志解析从单条日志中提取字段。仅能支持正则、Json 和分隔符模式等固定模式 [ 1] ,且无法自由组合。这种基于采集模式的解析,拥有更好的性能,但牺牲了灵活性。 拓展插件 Pipeline 模式 在拓展插件模式下,iLogtail 会将日志切分的结果直接提交给 Golang 插件模块进行处理,在后者中,我们可以组合多种处理插件 [ 2] ,来满足我们的需求。拓展插件模式则是牺牲一定的性能和计算资源来换取灵活性,以应对更为复杂的场景。 iLogtail 1.X Pipeline 模式的局限 灵活性和性能只能二选一 原生插件模式性能最强,但是支持的格式有限。 拓展插件模式灵活性足够,但是资源消耗变大、性能有损耗。 引入 Golang 插件之后,C++ 到 Golang 插件跨语言传递数据,会引入额外的序列化与反序列化的步骤,带来一定的性能下降。 Golang 相关解析函数的性能,还是要比 C++ 的低。 条件判断 iLogtail 插件的配置,还是更加适合格式比较固定格式日志的处理与解析。如果日志格式比较多样,单一的 Pipeline 是很难处理的,则需要配置多个 Pipeline。 配置简便性 iLogtail 控制台采集配置页面对每个插件都有对应的配置模块,想要做复杂的配置,页面上的交互还是会比较繁琐。 iLogtail2.0 + SPL 那么有没有一种方案,可以实现既要性能,又要灵活性呢?ilLogtail2.0 带着 SPL 一起来了。 iLogtail 2.0 中,SPL 是跟 Pipeline 并列的一个实现,底层调用了 SLS 统一的 SPL Lib,由此可以使用 SPL 完整的处理能力。 从 SLS 控制台可以看到 SPL 模式和 Pipeline 模式属于同级配置,两种模式可以选一种进行使用。 SPL 语法简介 语法结构 指令式语句,支持结构化数据和非结构化数据统一处理 管道符(*)引导的探索式语法,复杂逻辑编排简便 <data-source> * <spl-cmd> -option=<option> -option ... <expression>, ... as <output>, ... * <spl-cmd> ... * <spl-cmd> ... 结构化数据 SQL 计算指令 extend 通过 SQL 表达式计算结果产生新字段 where 根据 SQL 表达式计算结果过滤数据条目 extend latency=cast(latency as BIGINT) where status='200' AND latency>100 字段操作指令 project 保留与给定模式相匹配的字段、重命名指定字段 project-away 移除与给定模式相匹配的字段,原样保留其他所有字段 project-rename 重命名指定字段,并原样保留其他所有字段 project-away -wildcard "tag:*" project-rename source=remote_addr 非结构化数据提取指令 parse-regexp 提取指定字段中的正则表达式分组匹配信息 parse-json 提取指定字段中的第一层 JSON 信息 parse-csv 提取指定字段中的 CSV 格式信息 project-csv -delim='^_^' content as time, body project-regexp body, '(\S+)\s+(\w+)' as msg, user iLogtail2.0 + SPL 的优势 SPL 语法全局统一 比如原来同样一个格式的数据,数据加工和 iLogtail 采集的配置是完全不同的,可能会导致客户需要有两个配置。现在 SPL 语法统一之后,同样的配置基本可以无缝在 iLogtail 和实时消费中转换。 C++ 原生高性能处理能力 SPL 的核心算子,都是 C++ 实现的,性能能够接近 iLogtail 原生 C++ 插件的性能,远高于 Logtail 拓展插件的性能。 丰富的函数支持 SPL 目前支持的函数已经全面对齐 SLS SQL 语法的函数。(SPL 支持的函数列表 [ 3] ) 上手简单,调试方便 自动识别当前所处的语法模式,并对 SPL 相关指令和函数进行智能提示: iLogtail 采集配置页面支持 SPL 预览,方便上手调试,可以实时看到配置效果: iLogtail2.0+SPL 实战 下面我们通过一个实际的例子来体验一下。 SPL 配置入门 如下是一条混合了 json 和 java 堆栈信息的样例日志: [2024-01-05T12:07:00.123456] {"message": "this is a msg", "level": "INFO", "garbage": "xxx"} java.lang.Exception: exception发生 at com.aliyun.sls.devops.logGenerator.type.RegexMultiLog.f3(RegexMultiLog.java:130) at com.aliyun.sls.devops.logGenerator.type.RegexMultiLog.f2(RegexMultiLog.java:125) at com.aliyun.sls.devops.logGenerator.type.RegexMultiLog.f1(RegexMultiLog.java:118) at com.aliyun.sls.devops.logGenerator.type.RegexMultiLog.run(RegexMultiLog.java:70) at java.base/java.lang.Thread.run(Thread.java:833) 我们先来看下 iLogtail 插件模式是如何配置的: 开启多行模式,配置行首正则表达式 依次配置 Processor 插件 我们先用正则解析插件将原始日志分割成三个字段:time,json 和 stack: 然后配置 Json 解析插件,将 json 字段解析开: 最后配置丢弃字段插件,将不需要的字段丢弃: 然后我们再来看下 SPL 是如何配置的。 通过上面的步骤分析,我们发现这个解析过程拆解到 SPL 中可以使用如下配置。 第一步是正则解析,从原始字段中通过正则表达式,解析出 time, json 和 stack 三个字段: parse-regexp content, '[([^]]+)]\s+([^}]+})\s+(.*)' as time,json,stack 第二步是 json 解析,从 json 字段中解析出 level,message 和 garbage 字段: parse-json json 第三步是丢弃字段: project-away garbage,json 这里需要注意的是,parse-json,parse-regexp 解析成功之后,是不丢弃原始的字段的,因此如果最后的数据中不需要原始字段,那么需要主动删除一下原始字段。 将上面的语句用管道符号连接起来,就得到了完整的 SPL 语句: * * parse-regexp content, '[([^]]+)]\s+([^}]+})\s+(.*)' as time,json,stack * parse-json json * project-away garbage,json,content 最终配置如下图所示: 开启多行模式,配置行首正则表达式 处理模式选择 SPL,填入 SPL 语句 从控制台交互上看,SPL 配置的交互更加简便,不需要一个插件一个插件配置。 SPL 调试利器- SPL 配置效果预览 针对 SPL 的配置,控制台还提供了样例日志实时预览 SPL 处理结果的功能,添加日志样例之后,点击预览按钮,就是可以看到当前 SPL 语句的处理结果,可以非常方便的进行调试和优化。 继续用上面的例子,我们可以一步一步看到 SPL 配置的效果: 第一步是正则解析: parse-regexp content, '[([^]]+)]\s+([^}]+})\s+(.*)' as time,json,stack 可以看到数据被分割成了 time、json 和 stack 三个字段,原始字段 content 仍然保留着。 然后我们把 json 解析也加上,继续看下效果: parse-regexp content, '[([^]]+)]\s+([^}]+})\s+(.*)' as time,json,stack | parse-json json 可以看到 json 字段也被解析出来了,得到了 message,level 和 garbage 字段,同时 json 字段也被保留下来。到这里,所有字段解析都完成了,最后,我们就删除掉一些我们不需要的字段就好了。 * * parse-regexp content, '[([^]]+)]\s+([^}]+})\s+(.*)' as time,json,stack * parse-json json * project-away garbage,json,content 可以看到,garbage,json 和 content 字段都被删除了,整个过程非常轻松和高效。 开源 iLogtail 配置实践 开源的 iLogtail 配置 SPL 也是非常简单的,如下就是一个 SPL 配置的实例: enable: true inputs: - Type: input_file FilePaths: - /home/test-log/test.log Multiline: StartPattern: \[\d+.* processors: - Type: processor_spl Script: '* * parse-regexp content, ''\[([^]]+)]\s+([^}]+})\s+(.*)'' as time,json,stack * parse-json json * project-away garbage,json,content' flushers: - Type: flusher_stdout OnlyStdout: true 模拟数据写入: 可以看到数据已经被正确的解析出来了: 总结 日志数据格式可能是多样且复杂的,iLogtail 插件配置模式已经可以很好的支持复杂数据的处理。iLogtail2.0 又带来了 SPL 语法的重大支持,在日志处理场景下,可以通过多级管道对数据进行交互式、递进式的探索和处理,从配置交互和性能上,都有比较大的提升和优化。 iLogtail2.0 已经在逐步灰度中,欢迎大家体验和使用。 相关链接: [1] 原生插件 https://help.aliyun.com/zh/sls/user-guide/native-plug-ins/?spm=a2c4g.11174283.0.0.65e95c0dTnOzh8 [2] 扩展插件 https://help.aliyun.com/zh/sls/user-guide/extension-plug-in/?spm=a2c4g.11186623.0.0.4bed5c0dYhtlZp [3] SPL 支持的函数列表 https://help.aliyun.com/zh/sls/user-guide/function-overview

优秀的个人博客,低调大师

StarRocks 社区架构出炉,等你通关升级!

StarRocks 社区说: 熟悉开源的朋友们可能都听过 The Apache Way 的一个核心原则——Community over code,社区不止于代码。一个充满生命力的软件,离不开一个健康的社区。 为了帮助大家更有效地参与到社区当中,并让大家在社区里能更有归属感,StarRocks 首次公布了社区架构。 我们把社区分成了 以代码共建为主的 Developer Group 、 由众多使用 StarRocks 的用户所组成的 User Group , 还有 不同的 SIGs (专项兴趣小组) ,让开发者可以根据自己的兴趣和能力投身到自己感兴趣的项目/组织中。 你是否想成为大数据行业先锋,与 StarRocks 一同构建“极速统一”的数据分析新范式?你是否想收获一群志同道合、日常交流技术的小伙伴? StarRocks 社区新玩法已全线启动,只待你来解锁! StarRocks 社区架构 Developer Group Contributor 为 StarRocks 社区做出贡献就可以成为 Contributor。我们欢迎所有的贡献者,并会为所有希望对项目做出贡献的伙伴提供帮助。 如何成为 Contributor? 在 StarRocks GitHub 项目中有 1 个(或以上)被合并的 PR 作为 Contributor,我们期待你: 积极参与 StarRocks 的迭代和优化 参加社区活动(meetup、征文、极客营活动等) 进一步了解 StarRocks 相关知识,并在社区中与其他开发者交流 权益: 作为 Contributor 展示在 StarRocks 官网 (待上线) 获得 StarRocks 社区 Contributor 电子证书 获得实体感谢卡 获得 StarRocks 周边礼品 ​ Active Contributor Active Contributor 是社区的活跃贡献者,他们是对 StarRocks 有突出贡献的 Contributor。他们积极参与 StarRocks 的优化和改进、活跃于社区中,并且与其他社区成员有着频繁的交流。 如何成为 Active Contributor? 一年内累计贡献了 5 个被合并的 PR,或者修复重大 bug 积极参与线上或线下 meetup 等社区活动,并参与社区讨论 职责: 社区咨询支持 积极响应指派给你的 Issue 或 PR 权益: 作为 Active Contributor 展示在 StarRocks 官网(待上线) 获得 StarRocks 社区 Active Contributor 电子证书 获得 StarRocks 周边礼品 Committer 从 Active Contributor 中诞生,负责 StarRocks 的规划和维护,并拥有合并主分支的权限。他们对项目的表现有良好的判断力且积极参与项目的开发、 分享 StarRocks 相关的技术和撰写相关技术文章。 如何成为 Committer? 对 StarRocks 的原理有深入理解 有能力及时处理项目出现的各种问题 主导过一次重要开发,并撰写和修订相关的文档 获得至少一位 PMC 提名,并通过投票 职责: 社区咨询支持 积极响应指派给您的 Issue 或 PR 参与投票,决定社区重大事务 Review 社区的 PR 权益: 拥有 StarRocks repos 写入权限 作为 Committer 展示在 StarRocks 官网 (待上线) 获得 StarRocks 社区 Committer 电子证书 PMC 从 Committer 中诞生,负责 StarRocks 的规划和维护,拥有合并主分支的权限。他们对项目的表现有良好的判断力且积极参与项目的开发、 分享 StarRocks 相关的技术和撰写相关技术文章。他们拥有项目设计和人员选举的投票权。 如何成为 PMC? 深度理解 StarRocks 的原理,对 StarRocks 社区的未来规划有清晰的理解 有能力及时处理项目出现的各种问题 主导项目的开发和迭代,把控项目整体优化方向 获得至少一位 PMC 提名,并通过投票 职责: 积极参与社区讨论,对社区重大决策给予指导 负责保证开源项目的社区活动都能运转良好 权益: 作为 PMC 展示在 StarRocks 官网 (待上线) 拥有项目设计决策投票权,参与发版和阶段性 milestone 的定义,并对项目代码质量/测试 coverage 负责 拥有选举新 Committer 和 PMC 的投票权 获得 StarRocks 社区 PMC 电子证书作为纪念 User Group StarRocks User Group 旨在通过资源共享、项目共创等方式链接和赋能开发者群体。StarRocks 为社区成员们提供的资源主要体现在: 学习网络: 向开发者提供学习网络,链接 StarRocks 用户感兴趣的技术内容 资源共享: 通过用户分享经验、场景来帮助广大用户快速获得行业最佳实践 赋能成长: 帮助开发者成为行业领航者 行业人脉: 通过社区网络帮你认识更多的行业专家和同好 User 作为 StarRocks 的用户,你可以在 GitHub 上提交 Issue 报告、贡献测试案例、翻译/修改文档、在论坛或是社群里帮助回答用户问题、参加活动、分享 StarRocks 使用经验、在 GitHub 上点星支持 StarRocks 等。以上都可以是你参与社区的方式。 Champion 如果你对 StarRocks 技术充满热情且乐于分享、助人,你就是 StarRocks 社区大使的最佳人选!想成为社区里人人仰望的大佬?快来看看你要如何解锁这项成就!👇🏻 资格需求 至少发布过 3 篇 StarRocks 相关原创优质技术内容 (含文章、教程、视频等) 参加至少 2 场线上 / 线下技术分享,并主讲议题 加入 StarRocks 中文论坛、Slack & 微信群,并帮助回复用户问题 福利和奖励 Product新产品/功能优先试用StarRocks 产品核心团队闭门会 CommunityStarRocks 布道师名单官网展示 (待上线)加入 StarRocks 社区布道师专属社群 布道师专属奖品与徽章 Events免费赠与 StarRocks 峰会门票StarRocks 峰会 VIP 席位行业峰会演讲交通 & 食宿补贴 GrowthStarRocks 产品使用培训打造个人品牌与提升行业影响力 SIGs SIGs(Special Interest Groups)是 StarRocks 社区组织的专项兴趣小组,便于同学们通过自己感兴趣的方向加入到 StarRocks 的共创中。这里也是你可以发挥长才、学习一门新技术、认识同侪和专家的好地方。 SIG名称 专注范围 相关文档/Issues Slack # DLA (Data Lake Analytics 数据湖分析) 负责开发一种新框架让 StarRocks 能更简单地链接外部数据源 Docs GitHub Issues 1 GitHub Issues 2 会议记录 (文字) 会议记录 (视频) #sig-dla MV(Materialized View 物化视图) 负责 StarRocks 物化视图相关的开发工作 GitHub Issues #sig-mv MV(Materialized View 物化视图) 负责 StarRocks 云原生相关的开发工作 #sig-cloud-native Docs GitHub Issues 1 GitHub Issues 2 会议记录 (文字) 会议记录 (视频) GitHub Issues 最后,如果你已经为社区贡献过一个以上的 PR 或是做过分享(教程、文章、演讲等),欢迎填写 问卷资料 ,我们将为你送出社区大礼包!🎁 关于 StarRocks StarRocks 创立两年多来,一直专注打造世界顶级的新一代极速全场景 MPP 数据库,帮助企业建立“极速统一”的数据分析新范式,助力企业全面数字化经营。 当前已经帮助腾讯、携程、顺丰、Airbnb 、滴滴、京东、众安保险等超过 110 家大型用户构建了全新的数据分析能力,生产环境中稳定运行的 StarRocks 服务器数目达数千台。 2021 年 9 月,StarRocks 源代码开放,在 Github 上的星数已超过 2900 个。StarRocks 的全球社区飞速成长,至今已有超百位贡献者,社群用户突破 5000 人,吸引几十家国内外行业头部企业参与共建。 ​

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册