文档章节

java爬虫gecco监控来了,不再裸奔

xtuhcy
 xtuhcy
发布于 2016/03/21 10:42
字数 824
阅读 3716
收藏 16

#java爬虫gecco监控来了,不再裸奔 ##爬虫为什么要监控 gecco是一个十分简单易用的java开源爬虫框架,同时也一个款拥有很好扩展性的框架,目前已经有:

结合spring的插件gecco-spring

结合htmlunit的插件gecco-htmlunit

结合reids的插件gecco-reids

在开发爬虫时,由于要对很多网站和链接进行抓取,并对抓取下来的网站进行内容的抽取。大量的链接下载和内容抽取如果没有监控,很难发现问题。特别是对于主题爬虫,需要抽取页面的具体内容,如果网站改版务必要能尽快的发现并修正,gecco爬虫框架在完成了基本的框架和必要的插件的实现后,将重点放在了监控的开发上。

对扩展开放,对修改关闭的开闭原则一致是gecco框架的基本设计原则。gecco爬虫的监控模块同样基于该原则,基于jmx协议,使用aop模式。

输入图片说明

##监控指标 ###爬虫基本信息

  • 刷新基本信息:exec/com.geccocrawler.gecco:name=gecco/monitor

  • 读取基本信息:read/com.geccocrawler.gecco:name=gecco

      {
      Interval: 5000,//抓取间隔时间ms
      StartTime: "2016-03-20 20:34:11",//抓取开始时间
      ThreadCount: 1,//爬虫线程数量
      StarUrlCount: 8//初始url数量
      }
    

###下载监控

  • 获取当前正在抓取的所有域名:exec/com.geccocrawler.gecco:name=downloader/hosts

  • 获取某个域名的下载监控信息:exec/com.geccocrawler.gecco:name=downloader/statistics/xx.xx.com

  • 读取下载监控信息:read/com.geccocrawler.gecco:name=downloader

      Statistics: "{
      	"exception":8,//该域名抓取异常的数量,主要是超时等异常
      	"serverError":0,//该域名返回500,404等错误信息的数量
      	"success":3263//成功抓取数量
      }",
      Host: "xx.xx.com"//域名
    

###内容抽取监控

  • 刷新内容抽取监控信息:exec/com.geccocrawler.gecco:name=render/refresh

  • 获取内容抽取监控信息:read/com.geccocrawler.gecco:name=render

      Statistics: "{
      	"xx.xx.com":0,//域名xx.xx.com的网站内容抽取的异常数量
      	"yy.yy.com":0//域名yy.yy.com的网站内容抽取的异常数量
      }"
    

##jmxutils和jolokia ###jmxutils gecco的监控使用了jmxutils这个开源的mbean注解框架。在以前的开发工作中要么就用原生的动态mbean,要么是使用spring的jmx注解框架。原生的动态mbean写起来太繁琐,spring的jmx注解框架使用起来还是很方便的,但是现在spring感觉有些重。jmxutils这个框架很轻量,使用方法可以参考https://github.com/martint/jmxutils。 ###jolokia Jolokia是一个利用JSON通过Http实现JMX远程管理的开源项目。具有快速、简单等特点。除了支持基本的JMX操作之外,它还提供一些独特的特性来增强JMX远程管理如:批量请求,细粒度安全策略等。也就是说jmx的mbean可以通过http来访问不需要在启动java时配置那么多参数。只需要新增一个servlet:

<servlet>
	<servlet-name>jolokia-agent</servlet-name>
	<servlet-class>org.jolokia.http.AgentServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>jolokia-agent</servlet-name>
	<url-pattern>/jmx/*</url-pattern>
</servlet-mapping>

这样应用中的mbean就能轻松控制和访问。jolokia还提供了java客户端和js客户端来访问mbean,具体的使用方法和权限控制可以查看jolokia的官方文档https://jolokia.org/reference/html/index.html

© 著作权归作者所有

共有 人打赏支持
xtuhcy

xtuhcy

粉丝 105
博文 17
码字总数 20302
作品 1
北京
后端工程师
私信 提问
加载中

评论(1)

苦思冥想
苦思冥想
请教下,有没有考虑过将代理ip添加进去呢?
Gecco 1.2.5 发布,易用的轻量化爬虫

Gecco 1.2.5 发布了,DynamicGecco 实现了爬虫规则的热部署,是首个支持动态加载的java爬虫框架。 更新内容: @Gecco注解支持多个matchUrl,一个spiderbean可以同时匹配多种形式的url jd地址...

xtuhcy
2016/11/03
2.4K
5
Gecco 1.1.3 发布,易用的轻量化爬虫

Gecco 1.1.3 发布了,该版本改进内容包括: 处理jsonp的时候,分号问题修复 2.支持自定义下载重试次数定义,GeccoEngine.retry(count) 3.HttpClientDownloader支持response的Set Cookie自动存...

xtuhcy
2016/05/31
2.3K
9
Gecco 1.2.2 发布,首个支持动态加载的java爬虫框架

Gecco 1.2.2 发布了,DynamicGecco实现了爬虫规则的热部署,是首个支持动态加载的java爬虫框架。 DynamicGecco的目的是在不定义SpiderBean的情况下实现爬取规则的运行时配置。其实现原理是采...

xtuhcy
2016/07/18
1K
4
Gecco 1.2.4 发布,易用的轻量化爬虫

Gecco 1.2.4 发布了,DynamicGecco 实现了爬虫规则的热部署,是首个支持动态加载的java爬虫框架。 DynamicGecco 的目的是在不定义 SpiderBean 的情况下实现爬取规则的运行时配置。其实现原理...

xtuhcy
2016/09/12
1K
5
Gecco 1.2.3 发布,易用的轻量化爬虫

Gecco 1.2.3 发布了,DynamicGecco 实现了爬虫规则的热部署,是首个支持动态加载的java爬虫框架。 DynamicGecco 的目的是在不定义 SpiderBean 的情况下实现爬取规则的运行时配置。其实现原理...

xtuhcy
2016/08/19
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

《阿里铁军》的读书笔记和读后感范文2600字

《阿里铁军》的读书笔记和读后感范文2600字: 在中国互联网,有一个流传很广的说法是,百度强在技术,腾讯强在产品,阿里强在运营。虽然发展到今天,已经不能再用这样简单的视角来看待这三个...

原创小博客
8分钟前
1
0
怎样实际项目中运用责任链模式

1 模式概要 1.1 简介 责任链模式为请求创建一个接收者对象链,每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它会把请求传给下一个接收者,依此类推 责任链模式避...

小刀爱编程
23分钟前
1
0
【宇润日常疯测-004】JS 遍历数组如何快!快!快!

首先,我就是一后端全栈,对前端也只是会用罢了。闲的无聊来测测,不深究,只看表面,不喜勿喷! 遍历数组在写 JS 代码时候一定是经常用的,那么怎么遍历能达到最高效率呢,很多人一定没有测...

宇润
27分钟前
10
1
Linux系统如何定制History输出格式

Linux系统使用History命令来查看系统的运行记录,从而找出一些问题。但是History输出的数据中常常没有时间等信息。本文就来教大家Linux系统如何定制History输出格式。   具体方法如下 以r...

linuxprobe16
29分钟前
1
0
(一) pyhon 基础语法(数值 字符串 元组 列表 字典)

1、python的数据类型: 数值 字符串 列表 元组 字典; 数值类型包括; 整型(int) 长整型(long) 浮点型(float) 复数型 字符串; 可以通过type() 来查看是什么类型的; 注释:len()只支持 字符...

芬野de博客
30分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部