解决方案:【干货】借鉴开源框架自研日志收集系统 | 岂安低调分享

优采云 发布时间: 2022-11-26 04:22

  解决方案:【干货】借鉴开源框架自研日志收集系统 | 岂安低调分享

  纺织品

  观点

  箱

  信息

  我们

  亿安科技最真诚的商业安全公众号

  主:

  踩浪无影无踪 宜安科技高级架构师

  十余年数据研发经验,擅长数据处理领域的数据处理,如爬虫、搜索引擎、大数据应用高并发等。他曾担任建筑师,研发经理和其他职位。曾主导开发大型爬虫、搜索引擎及大数据广告DMP系统,目前负责宜安科技数据平台的开发与建设。

  项目背景

  公司项目需要采集

和管理分布在多台计算机上的日志。作者使用了logstac和flume等开源项目。最后,他开发了一套基于Java语言的日志采集

系统Bloodhound。以下是从项目关注的角度对开源系统和自研的分析。

  1. 开源日志采集系统功能

  Logstash 和 Flume 都是成熟的日志采集平台,结构清晰,插件丰富,文档通俗易懂,示例代码很多。其中,Logstash 专注于字段的预处理,Flume 专注于不同网络拓扑下的日志交付,并通过 Agent 开放各种网络节点。

  2. 日志采集

系统的注意事项

  开发语言的选择

  该公司的开发团队主要集中在Java、Python上。另一方面,Logstash 的插件使用 Ruby,从团队的角度来看,它的可扩展性较差。将插件添加到logstash是很痛苦的,使用几个月后,感觉性能低,启动速度变慢。

  性能注意事项

  ➦ 水槽的性能比较低,主要有以下几点:

  (1)单线程。

  每个水槽代理分为源、通道、*敏*感*词*和其他插件。每个插件仅启用单线程。如果任务是写入数据库等IO操作,则不可避免地会拖累性能。

  (2) 源的计时器机制

  源线程检测新的更新,继续读取并推送到通道,当处理完所有更新时,线程退出。启动计时器线程。定期重新启动 3 秒钟,依此类推。在这个过程中,Java 的多线程通知机制没有得到充分利用,每次启动都有一些调度、排队、检测和任务初始化过程。影响性能。

  (3)水槽交易机制

  Flume本身已经过优化,允许批量提交事件。但本质上,您仍然需要测试*敏*感*词*处理结果,然后提交或回放。

  管理注意事项

  如果将代理的任务处理字符串、源>通道>sink理解为一个任务(这个任务是一个抽象的概念,在Flume中没有这个概念),那么从业务镜头的角度来看,Flume就是一个单任务采集

系统。如果需要同时处理两个任务,则必须启动两个 Flume 代理进程。随着采集任务数量的增加,管理成本势必大幅增加。

  

" />

  (水槽处理:多进程处理多任务)。

  (寻血猎犬处理:单进程多任务处理)。

  此外,我们还有监控需求、统计需求、任务管理等。这些任务需要连接到我们的Grafana平台。综合考虑后,我们选择了自主研发的日志采集系统。

  寻血猎犬系统

  项目名称的来源

  来自维基百科:

  寻血猎犬是一种大型气味猎犬,最初是为了狩猎鹿、野猪而饲养的,自中世纪以来用于追踪人类。据信它是曾经饲养在比利时圣休伯特修道院的猎犬的后裔,讲法语的人称之为圣休伯特的Chien de Saint-Hubert。

  这个品种以其能够在很远的距离上辨别人类气味而闻名,即使在几天后也是如此。它异常敏锐的嗅觉与强大而顽强的追踪本能相结合,产生了理想的气味猎犬,它被世界各地的警察和执法部门用来追踪逃跑的囚犯、失踪人员、迷路的孩子和迷路的宠物。

  “

  嗅觉最灵敏的猎犬意味着它可以从各种原创

数据中提取初步有价值的信息,包括交通。

  “

  项目要求

  项目架构

  系统分层

  核心框架层

  为了充分利用Flume的功能,我们还将Bloodhound分为三层:源>通道>汇。这个设计是为了充分利用 Flume 中丰富的插件资源,请参考下面的配置文件。

  时序图

  源图层

  源是数据输入,通常是文件、消息系统等。在示例中,Source 是 Redis,Source 是单独运行的线程,从 Redis 中指定的队列中获取输入,并在读取完成后将其推送到 Channel。当通道中的队列已满时,源线程将进入等待状态。

  通道层

  渠道

  充当连接源和通道的透视按钮,其主要功能如下:

  通道层的主要方法有:popEvents、addEvents、notifyEvents、sendMetrics等。

  

" />

  汇层

  *敏*感*词*层是可运行的,接受事件,由通道调度,并执行最终登陆逻辑。

  以上三层中,通道层有 MemoryChannel 和 FileChannel,如果任务更重要,则应选择 FileChannel,这样可以保证进程中断后事件不会丢失。内存通道管理具有相对较高的性能的队列。Source and Sink可以在Flume中大量重用插件代码。

  任务管理器

  任务管理器,因此顾名思义,是管理整个日志采集

系统的管理模块。

  1. 任务管理

  任务注册界面

  一个任务可以通过任务注册接口提交到全流程,通过HTTP Post方法提供注册并启动新任务,如图配置所示。

  数据提交接口

  默认情况下,Source 是拉取模式,从文件、队列中提取日志。它还支持 HTTP 提交。数据提交接口需要传递两个参数,jobName 和事件。

  2. 任务监控

  查看任务执行情况

  查看由核心框架层提供的 Grafana 中各个任务的执行。

  查看任务运行

  提供列表,查看任务状态,启动,停止任务。

  系统运维层

  流程管理

  使用主管来管理流程。

  调度

  使用计划任务根据每种业务情况管理任务。在任务管理中调用任务启动、停止等。这一块和日志采集核心关系不大,就不赘述了。

  笔者做过很多需要使用日志采集

的项目,也用过logstash、flume等开源系统,总体上觉得开源系统比较成熟,有大量的插件和事务管理。但是,它并没有与自己的业务系统紧密结合。自研框架工作量大,坑多,优势较好与业务融合。

  你会对什么感兴趣

  ⊙ [作者]。

  ⊙ [测试]。

  ⊙ [CPO 系列]。

  01 - 信息采集

  ⊙ [反欺诈]。

  分享:优采云

采集之后怎么伪原创 文章伪原创方法

  优采云

采集

后如何伪造原件?用优采云

采集

的文章可以使用老铁智能伪原创工具进行批量伪原创文章的操作,无需自己修改,伪原创文章可以直接使用,非常方便。非常值得下载体验,有需要的朋友千万不要错过!

  

" />

  1.老铁智能伪原装工具,让您的替代更DIY,更个性化。

  2.将一篇有同义词的文章替换成另一篇全新的伪原创文章,替换速度快。

  3、使用准确有力的词库快速替换文章,使文章达到伪原创的目的。

  

" />

  4.让你的替补更DIY更个性化,是站长朋友更新网站数据的好帮手。提供“替换链接”的贴心功能,有效增加SEO反向链接;进入文章后,点击

  开始洗得到不同的文章,或点击加强洗得到不同的效果。如果对洗涤后的洗涤不满意,也可以再次洗涤结果,效果更好。同义词替换:可以替换文章中的同义词,也可以将洗过的稿件的文本同义替换,具体操作自行组合。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线