内容采集系统(哪些地方需要监控哪些内容?又需要哪些指标?(图))

优采云 发布时间: 2022-04-04 09:09

  内容采集系统(哪些地方需要监控哪些内容?又需要哪些指标?(图))

  在*敏*感*词*、分布式数据采集中,由于涉及到很多服务、系统、插件等,任何问题都可能导致数据采集出现异常。为了保证采集的稳定高效运行,一个能够实时监控采集各部分状态,并在出现异常时能够快速有效定位问题的监控系统是基本的。.

  那么,在采集中,你需要监控哪里呢?需要监控哪些指标?今天从服务器、采集器、任务队列、信息源、数据质量、大数据平台等方面简单介绍一下需要监控的内容。

  一:服务器监控

  在*敏*感*词*、分布式的采集中,由于采集的范围很广,为了保证采集数据的及时性,可能需要几十台甚至几百台服务器。如何实时掌握每台服务器的状态,需要我们监控硬盘、内存、CPU等基础信息。并根据监控情况,合理配置采集策略。同时,当发现异常时,通过发送邮件等方式提醒相关人员进行处理。

  

  1:硬盘监控

  在采集中,我们经常会发现由于一些开发者忘记设置删除日志,或者在开发环境中进行测试的文件写入操作关闭,硬盘上的可用空间最终归零,导致当前服务器的部署。所有 采集器 都处于假死状态。

  因此,我们需要近乎实时地监控服务器硬盘的使用情况(例如:每 5 分钟监控一次)。我们需要设置一个报警阈值,比如硬盘使用率>90%。如果超过此阈值,则会通过电子邮件向相应的运维或开发人员发送告警信息。为方便相关人员处理,告警信息应包括:盘符、使用率、服务器IP、用户名、密码、采集器部署路径等主要信息。

  2:CPU监控

  由于 data采集 是 I/O 密集型任务,而 data采集 使用的服务器一般性能较低,任务较多,运行时间较长。因此,如果 CPU 长时间保持高电平(阈值:30 分钟),可能会导致 采集器 假死,影响 采集器 的效率,降低 采集 的速度。此时,需要将当前情况发送给相应的人员。同时告警信息包括:服务器IP、用户名、密码等,方便运维人员快速处理问题。

  3:内存监控

  采集涉及大量的数据分析工作,会占用很多内容。如果内容使用率长期居高不下(阈值:30分钟),将向相关人员发送报警信息。报警信息包括:服务器IP、用户名、密码等信息。

  第二:采集监控

  采集Monitoring也属于运行时监控,主要用于监控采集器、Redis、统一数据接口、任务处理等,这些也是异常发生时最重要的发现和定位在 采集 基础上。

  

  1:采集器监控

  在数据采集中,首先要保证的是采集器的正常运行。我们在实际应用中主要监控以下几个方面:

  1:每次采集器启动,记录服务器IP、启动时间、采集器ID等;

  2:每次任务集合获取后,记录任务获取开始时间、结束时间、任务标识集为采集、采集器ID等;

  3:任务执行过程中,记录单个任务的开始时间、下载开始时间、请求返回码、下载结束时间、解析时间、解析数据量、当前任务ID等;

  4:所有任务完成后,记录当前批次任务的开始时间、结束时间、解析数据总量;

  以上四个方面的监控每天都会产生大量的日志信息。为了保证日志持久化不影响采集的效率,我们将数据临时存储在Redis集群中。然后,每天分析日志信息,清除一周前的历史日志。

  目前,我们主要从上述日志的两个方面进行分析:

  1:根据日志信息,分析哪些采集器运行异常;

  2:根据以上第三点,筛选出请求码异常的任务,离线进行二次验证,并将结果同步到源系统进行最终人工审核;

  3:对于上面第三点的任务,如果数据没有被解析,可能会因为网站的修改导致规律性失效。识别任务的规律性并同步到源系统进行人工处理。

  以上三个方面的分析结果需要在源系统的相应功能下显示出来,方便相关人员处理。

  2:任务队列监控

  我们所有的 采集 任务都存储在 Redis 集群中。为了降低采集器的开发、运维难度,以及任务队列相关的逻辑处理,我们使用springBoot微服务接口来处理。所以对任务队列的监控主要是监控任务分发接口以及Redis服务是否正常稳定。

  1:Redis监控

  

  一般来说,Redis最重要的监控是内存、CPU、以及各个节点是否在线等,并根据实际情况处理客户端连接数等辅助指标;

  2:基于SpringBoot的Redis任务分发接口

  我们目前只有一个任务分发接口,如何实时监控其运行状态就显得尤为重要。我们主要使用两种方法来检测:

  1:采集器日志分析。每分钟监控“采集器Monitoring”中第二项产生的日志;

  2:接口日志分析。当接口收到请求时,会将心跳信息保存到 Redis。如果第一条不能判断接口状态,分析心跳日志。

  3:守护进程。当界面启动时,我们启动一个守护进程。但是,正常的守护进程并不能保证其他接口可以正常访问。因此只能作为辅助判断条件;

  三:源头监控

  

  在大批量的采集中,涉及到上千个网站,列数从几十万到几百万不等。如何保证这些网站/列都是有效的,也是一件很麻烦的事情。我们通常在采集中通过以下方式进行监控。

  1:在 采集 中监控

  ①网站/列状态监控

  采集器在监控中,我们记录并持久化每个任务的请求返回码指标。我们可以在一定的时间间隔内分析所有的记录,并将这些状态码同步到源系统来提示运维。人员进行处理。

  ②网站/列的定期监控

  采集器在监控中,我们记录并持久化每个任务解析的数据量指标。我们可以在一定的时间间隔内分析所有的记录,使请求返回码正常,但解析出的数据量为 0 ,识别为常规异常的任务同步到源系统,供运维人员手动处理;

  2:离线监控

  在采集中,网站或列的失败对采集的效率影响很大,会大大降低采集的能力。所以采集中对任务的监控只能作为对源的辅助监控方式。

  源的离线监控主要监控网站/列的请求状态码,根据配置的规律匹配的数据量。

  您可以编写一个独立的脚本来处理这些,也可以部署一个 采集器 专门用于监视源,分析源的状态并将其同步到源系统。

  四:数据质量监控

  

  对于提供舆情分析服务的公司,在数据采集中,最关注的维度是:标题、作者、发布时间、正文等。由于作者太难判断,我们主要检测标题、 时间和文本。一个元素。下面是我们检测的一般方法。

  1. 采集 中的监控

  ①发布时间监控

  一般情况下,我们将信息详情页正文中的第一次作为发布时间。然后判断解析后的时间是否在正常范围内。如果大于当前日期,记录任务ID,以当前时间作为发布时间;

  ②标题监控

  在采集中,我一般将列表页中A标签的内容作为标题,同时在解析内容时进行二次验证。因为有些列表页面中A标签的内容是缩写,部分内容是隐藏的,需要在内容解析时进行二次处理才能得到正确的标题。

  ③内容监控

  因为内容很难判断对错,我们暂时只判断是否为空。如果为空,则暂时将标题作为文本,并将当前信息的源任务ID记录在日志中,供运维人员二次处理。

  针对以上三个维度的问题,反馈给相应的脚本或软件开发者,对采集器/script进行优化和完善。

  2. 持久化期间的监控

  在大批量的采集中,涉及到很多采集器和自定义的采集脚本。我们如何实时监控,这些脚本的持久数据质量如何?

  我们的做法是统一数据持久化接口。界面中两次检查标题、发布时间、内容等属性,并预先定位异常,防止异常数据进入生产环境,影响产品的用户体验。同时根据异常数据的来源(因为我们采集的每一条信息都有记录脚本的开发者ID),将异常情况反馈给对应的开发者< @采集器/脚本。

  采集全程需要监控的点很多,涉及的知识点也很多。上述维度的分析结果非常分散。如何将这些点和分析结果串起来?一旦出现异常,可以快速定位到问题点,这需要强大的前端系统。

  今天就是这样,改天我将讨论如何构建这个系统。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线