当前位置: 首页 > news >正文

长沙网站备案拍照点百度关键词搜索引擎

长沙网站备案拍照点,百度关键词搜索引擎,养车网站开发,南宁网站建设找建站通前面两篇讲了有关爬虫系统的搭建以及爬虫中需要的代理ip池的搭建的全过程,接下来我将写一个爬虫系统以及代理ip池异常监控的程序,主要功能就是监控是否发生异常,及时通过邮件提醒管理员排查故障,这样整体的一套流程就全部清晰了&a…

前面两篇讲了有关爬虫系统的搭建以及爬虫中需要的代理ip池的搭建的全过程,接下来我将写一个爬虫系统以及代理ip池异常监控的程序,主要功能就是监控是否发生异常,及时通过邮件提醒管理员排查故障,这样整体的一套流程就全部清晰了,能够完美适配任何项目。

在这里插入图片描述

在Linux系统上监控爬虫运行状态并实现异常邮件通知,可以通过以下方案实现:

一、监控爬虫运行状态的核心方法

1、进程存活监控
# 检查爬虫进程是否存在
pgrep -f "spider.py" > /dev/null
if [ $? -eq 0 ]; thenecho "爬虫进程运行中"
elseecho "爬虫进程已停止!需要告警"
fi
2、心跳检测机制

在爬虫代码中添加心跳记录:

# spider.py
import time
import jsondef record_heartbeat():heartbeat = {"timestamp": time.time(),"status": "running","items_scraped": 1000  # 实际抓取数量}with open("/var/log/spider_heartbeat.json", "w") as f:json.dump(heartbeat, f)# 在爬虫主循环中定期调用
while True:# ...爬虫工作...record_heartbeat()time.sleep(60)  # 每分钟记录一次
3、日志关键词监控
# 检查日志中是否包含成功标记
tail -n 100 /var/log/spider.log | grep "Scraped 100 items" > /dev/null
if [ $? -ne 0 ]; thenecho "日志无更新!需要告警"
fi
4、数据产出监控
# 检查数据库最新数据时间
last_data_time=$(mysql -uuser -ppass -e "SELECT MAX(created_at) FROM items" spider_db)
current_time=$(date +%s)
if [ $(($current_time - $(date -d "$last_data_time" +%s))) -gt 3600 ]; thenecho "数据超过1小时未更新!需要告警"
fi

二、邮件告警系统实现

1、安装邮件发送工具
sudo apt install mailutils -y
2、配置邮件发送脚本 send_alert.sh
#!/bin/bash
# send_alert.shALERT_SUBJECT="爬虫系统异常告警"
ALERT_CONTENT=$(cat <<EOF
服务器: $(hostname)
时间: $(date)
异常类型: $1
详细信息:
$2
EOF
)echo "$ALERT_CONTENT" | mail -s "$ALERT_SUBJECT" admin@example.com
3、完整监控脚本 spider_monitor.sh
#!/bin/bash
# spider_monitor.sh# 1. 进程检查
if ! pgrep -f "spider.py" > /dev/null; then./send_alert.sh "进程停止" "爬虫进程未运行!"exit 1
fi# 2. 心跳检查
HEARTBEAT_FILE="/var/log/spider_heartbeat.json"
if [ ! -f "$HEARTBEAT_FILE" ]; then./send_alert.sh "心跳丢失" "心跳文件不存在!"exit 1
fitimestamp=$(jq -r '.timestamp' $HEARTBEAT_FILE 2>/dev/null)
current_time=$(date +%s)
if [ -z "$timestamp" ] || [ $(($current_time - $timestamp)) -gt 1200 ]; then./send_alert.sh "心跳超时" "心跳超过20分钟未更新!最后时间: $(date -d @$timestamp)"exit 1
fi# 3. 日志检查
if ! tail -n 100 /var/log/spider.log | grep "Scraped [0-9]\+ items" > /dev/null; then./send_alert.sh "日志异常" "最近100行日志未发现抓取记录!"exit 1
fi# 4. 数据产出检查
last_data_time=$(mysql -uuser -ppass -e "SELECT MAX(created_at) FROM items" -NB spider_db 2>/dev/null)
if [ -z "$last_data_time" ]; then./send_alert.sh "数据库错误" "无法获取最新数据时间!"exit 1
fidb_time=$(date -d "$last_data_time" +%s)
if [ $(($current_time - $db_time)) -gt 7200 ]; then./send_alert.sh "数据异常" "数据超过2小时未更新!最后数据时间: $last_data_time"exit 1
fiecho "$(date) - 爬虫运行正常"
4、设置定时任务
# 每5分钟执行一次监控
crontab -e
*/5 * * * * /path/to/spider_monitor.sh >> /var/log/spider_monitor.log 2>&1

三、高级监控方案(使用Prometheus + Grafana + Alertmanager)

1、在爬虫中暴露监控指标
# metrics.py
from prometheus_client import start_http_server, Counter, Gauge# 定义指标
PAGES_SCRAPED = Counter('spider_pages_scraped', '已抓取页面数')
ITEMS_SCRAPED = Counter('spider_items_scraped', '已抓取数据项')
LAST_SUCCESS = Gauge('spider_last_success', '最后成功时间戳')# 在爬虫中更新指标
def record_success(items):ITEMS_SCRAPED.inc(len(items))LAST_SUCCESS.set_to_current_time()# 启动指标服务器(在8888端口)
start_http_server(8888)
2、Prometheus配置
# prometheus.yml
scrape_configs:- job_name: 'spider'static_configs:- targets: ['spider-server:8888']
3、Alertmanager邮件配置
# alertmanager.yml
route:receiver: 'email-alerts'receivers:
- name: 'email-alerts'email_configs:- to: 'admin@example.com'from: 'alertmanager@example.com'smarthost: 'smtp.example.com:587'auth_username: 'user'auth_password: 'pass'send_resolved: true
4、告警规则
# spider_alerts.yml
groups:
- name: spiderrules:- alert: SpiderDownexpr: up{job="spider"} == 0for: 5mlabels:severity: criticalannotations:summary: "爬虫服务下线"description: "爬虫服务 {{ $labels.instance }} 已停止运行超过5分钟"- alert: NoRecentDataexpr: time() - spider_last_success > 3600for: 15mlabels:severity: warningannotations:summary: "爬虫数据停止更新"description: "爬虫服务 {{ $labels.instance }} 已超过1小时未产生新数据"

四、异常自动恢复机制

# 在监控脚本中添加重启逻辑
if ! pgrep -f "spider.py" > /dev/null; then./send_alert.sh "进程停止" "尝试重启爬虫..."cd /path/to/spidersource .venv/bin/activatenohup python spider.py >> /var/log/spider.log 2>&1 &sleep 10if pgrep -f "spider.py"; then./send_alert.sh "重启成功" "爬虫进程已恢复"else./send_alert.sh "重启失败" "爬虫重启失败,需要人工干预!"fi
fi

五、增强型监控建议

1、多维度监控

  • 系统资源:CPU/内存/磁盘使用率
  • 网络状态:代理IP可用性、请求成功率
  • 业务指标:抓取速率、数据质量

2、分级告警

  • 轻微异常:发送邮件通知
  • 严重故障:增加短信/钉钉通知
  • 灾难性故障:电话通知

3、告警收敛

# 避免重复告警
if [ -f "/tmp/last_alert" ] && [ $(($(date +%s) - $(stat -c %Y /tmp/last_alert)) -lt 3600 ]; thenecho "1小时内已发送过告警,跳过"exit 0
fi
touch /tmp/last_alert

4、可视化看板

抓取指标
Prometheus
Grafana
实时监控看板
请求速率
数据产出
错误率

通过以上方案,可以实现对爬虫系统的全面监控,在出现异常时及时通知管理员,确保爬虫服务的稳定运行。生产环境推荐使用Prometheus+Grafana+Alertmanager的组合方案,它提供了更强大的监控能力和可视化效果。

http://www.mmbaike.com/news/95332.html

相关文章:

  • 贵州软件开发 网站开发郑州网站建设推广优化
  • 做网站要学习什么seo关键词优化报价
  • 我想自己在网站上发文章 怎样做宁波seo网络推广产品服务
  • 专业外贸网站制作价格如何做营销策划方案
  • 查网站空间商网站制作平台
  • 网站解析错误郑州网站技术顾问
  • 网站底部给网站地图做链接百度咨询电话 人工客服
  • 沈阳做网站优化的公司哪家好百度网游排行榜
  • 宣传网站怎么做西安seo学院
  • 新手学做网站 视频百度网盘sem优化师
  • 网站开发人才需求怎样优化网站排名靠前
  • 网站焦点图设计百度app首页
  • 用现成的网站模板只套内容就可以有这样的吗橘子seo查询
  • 天翼云 安装wordpress安卓优化软件
  • 电脑QQ浮动窗口怎做电脑网站广州网络营销推广公司
  • 网站建设需要匹配人员百度框架户开户渠道代理
  • 电子商务网站建设与运营店铺推广
  • 模板网站与定制网站的优缺点域名注册信息
  • 做普通网站需要多少钱产品推广外包
  • 专业做酒店网站资源网站排名优化seo
  • 做图片网站 侵权友情链接英语
  • 网站小图标素材下载站长工具日本
  • 网站转跳怎么做百度云官网入口
  • 推荐西安优秀的响应式网站建设公司长尾关键词快速排名软件
  • nodejs 如何做网站后端站长工具友链查询
  • 兼职做一篇微信的网站高级搜索引擎
  • cms系统表单商丘网站优化公司
  • 做照片书哪个网站好简单的个人网页制作html
  • c2b模式的电商平台网站有哪些站长之家seo信息
  • 合肥有没有做网站的单位自媒体营销方式有哪些