解决方案:【干货】借鉴开源框架自研日志收集系统 | 岂安低调分享
优采云 发布时间: 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反向链接;进入文章后,点击
开始洗得到不同的文章,或点击加强洗得到不同的效果。如果对洗涤后的洗涤不满意,也可以再次洗涤结果,效果更好。同义词替换:可以替换文章中的同义词,也可以将洗过的稿件的文本同义替换,具体操作自行组合。