# CrawlerMonitor
## Introduction
  本项目在 Celery 分布式爬虫的基础上构建监控方案 Demo,在编写 Statsd + InfluxDB 方案代码进行调研过程中,转向了 Prometheus 的怀抱 ,使用 Grafana 对监控序列进行可视化,爬虫部分目前只完成对下载和解析进行简单解耦,反爬部分和代码结构优化等后续会陆续进行完善。
## QuickStart
  本项目环境为 Ubuntu 16.04 LTS 以及使用 Python 3.6.5 (Anaconda), 安装执行流程默认适配上述环境,具体各部分安装配置请移步 [快速安装](https://github.com/adrianyoung/CrawlerMonitor/wiki/%E5%BF%AB%E9%80%9F%E5%AE%89%E8%A3%85),其中包括 RabbitMQ、MongoDB、Python 相关库、 Celery (推荐使用 4.1.1 版本)、Prometheus、Grafana 等安装配置,操作启动控制请参考 [快速启动](https://github.com/adrianyoung/CrawlerMonitor/wiki/%E5%BF%AB%E9%80%9F%E5%90%AF%E5%8A%A8),可分为手动启动和后台运行。后续会考虑 docker 容器化。启动三个实例 worker 跑了几分钟,从 MongoDB 导出的几千条 Json 数据 [此处](https://drive.google.com/file/d/1Vy71M9Jy7Mj4rFRCoj-PRvztsJbZOIJ8/view?usp=sharing) 。
## FlowChart
  简单画个流程图:
<img src="https://drive.google.com/uc?export=view&id=1GO8Pdn77eM73cuiODSVpwIZ5T0gC0wFr" width = "650" height = "400" alt="sentence_model" align=center />
## Metrics
  通过调研发现,在statsd 和 prometheus 的客户端均有对 metrics 的实现,后者在类型上支持较为丰富一点,这里使用 prometheus metrics 在 task 和 worker 层面设计监控指标,其设计如下表,并采用 worker,task,results 三个主要标签维度进行合理划分,各个类型 metric 的定义和使用详细可见 [Prometheus官网](https://prometheus.io/docs/concepts/metric_types/) 以及对应的 [Python 客户端](https://github.com/prometheus/client_python)。
|Type|Name|Worker|Task|Results|
|:--:|:---|:----:|:--:|:-----:|
|Gauge|workers_state|√|||
|Counter|workers_processed|√|||
|Gauge|workers_active|√|||
|Counter|tasks_counter|√|√|√|
|Summary|tasks_runtime|√|√||
|Info|tasks_info|√|√|√|
  这里只涉及任务和工作单元层面,爬虫异常层面仍需进一步设计指标
## ScreenShot
  Grafana 监控界面 Dashboard 模板
<img src="https://drive.google.com/uc?export=view&id=18DeLCoc08Gws6hPjOfpCTTALIiS6QC2B" width = "500" height = "300" alt="sentence_model" align=center />
  获取 Dashboard 模板: 直接在 Grafana 里 import 粘贴 https://grafana.com/grafana/dashboards/9970-celery-metrics/ 即可。
## TODO-LIST
  [TODO-LIST](https://github.com/adrianyoung/CrawlerMonitor/wiki/TODO-LIST) 留给自己。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
资源推荐
资源详情
资源评论
收起资源包目录
爬虫监控及可视化 ( Prometheus and Grafana ) Building a crawler with distributed task queues (Celery) and fetching data with a reliable monitor sy….zip (13个子文件)
SJT-code
trigger.py 1KB
utils.py 483B
tasks
spider.py 6KB
worker.py 922B
LICENSE 1KB
monitor.py 14KB
xueqiu.py 6KB
celery_metrics.json 18KB
logs
trigger.log 0B
celery.log 0B
conf
supervisor.ini 378B
program.ini 333B
README.md 3KB
共 13 条
- 1
资源评论
JJJ69
- 粉丝: 6364
- 资源: 5917
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功