爬虫系列之自动化运维(一):服务器管理(年中红包派送中...)

年  中  福  利  大  派  送

派送规则:

    1:即日起三天内,关注本号的第25,50,75,100位网友;

    2:已关注公众号,历史分享前三名

    3:已关注公众号,历史留言前两名;

符合以上三种规则任意一个,则将获得号主发送的50元微信红包。
第250名关注者,将获得88.88的超级大红包。

一、引言

1.1. 背景

对于互联网企业来说,随着业务的不断拓展,公司所运行的项目越来越多,项目业务逻辑也越来越复杂,需要定制化开发的内容也越来越多。

大数据背景下的舆情公司,由于业务需求数据范围广,无法通过一种统一的方式,来解决所有类型数据的采集。随之而来的,就是定制化开发的采集器越来越多,这些采集器的运维越来越繁琐,逐渐影响项目的进度,成为了限制业务发展的瓶颈。

那么,如何解决呢?自动化运维便是正解。

1.2. 业务痛点

① 管理分散在各开发人员,解决问题的效率低下;

② 项目越来越复杂,定制开发增多,部署、更新等运维难度骤增;

③ 脚本运行情况、采集数据量等监控难度加大;

④ 由于管理分散,人员流动导致运维难度系数增加

⑤ 人为操作失误频发,导致

1.3. 目标

① 实现部门内部所有服务的自动化部署。初期以采集为主;

② 实现各服务/脚本的统一管理,实时监控异常

③ 本系统只负责部署与监控,不参与采集或其他服务的逻辑处理。

1.4. 技术

① 系统使用语言:Java + Python

② 管理后台使用技术:Spring Boot2.X + FreeMarker + X-Admin2.X

③ 运维端:FastAPI +Fabric(2.0版本升级为:Ansible)

1.5. 使用范围

① 本版本暂时只支持Linux操作系统的运维;

② Windows系统在后续2.0版本中提供支持;

二、系统概述

1.1. 系统描述

开发该系统主要是为了实现采集器、脚本及其他服务的自动化运维管理,包括服务的部署/上传、启动、关闭、参数修改、简单的服务文件的修改等。

同时,实现对服务器、采集器、脚本等服务进行监控,实时发现问题,解决问题。

1.2. 结构描述

当前系统主要包括服务器节点管理、项目管理、爬虫管理和任务管理等四个模块,每个模块的具体功能细节如下表所示:

一级功能

二级功能

三级操作

备注

 

 

节点管理

 

 

节点列表

-

实现对服务器信息的管理

 

节点环境

 

开发语言

管理并显示服务器上安装的语言环境

环境依赖

管理服务器上各语言环境插件

节点监控

-

主要监控各服务器的硬盘、CPU、内存等使用情况

拓补图

-

主要用于展示采集相关的所有软硬件关系、结构

项目管理

项目列表

-

主要展示项目信息

 

爬虫管理

 

 

 

爬虫列表

-

主要展示已经开发或部署的爬虫信息

部署情况

-

显示每个爬虫部署的服务器节点情况

任务列表

-

显示每个爬虫已经或正在处理的任务列表

爬虫文件

-

主要用于在线修改爬虫文件,并同步到所部署节点

运行环境

-

用于管理爬虫运行所需环境,包括安装、卸载等

采集分析

-

展示爬虫采集数据相关的统计信息,用于监控

任务管理

任务列表

-

主要用于查看当前所有爬虫的采集任务信息

1.3.  运维接口描述

当部署爬虫时,我们需要把爬虫脚本,上传到相关的服务器节点上。所以,就需要一个能与服务器进行交互的服务接口。

目前采用Fabric来实现,2.0版本时再考虑基于容器的相关技术,如docker等技术。

三、功能模块

1.1. 节点管理

该模块主要包括服务器、服务器配置、语言环境,以及各语言环境相关参数等信息的查看、管理等功能。

1.1.1. 数据字典设计

 

数据库字典说明:

① td_idop_servers:服务器节点信息表

② td_idop_serv_info:服务器节点配置信息表;

③ td_idop_serv_lang_rel:服务器与编程语言关联表;

④ td_idop_serv_lang:编程语言信息表;

⑤ td_idop_serv_lang_plugs:编程语言相关插件表;

⑥ td_idop_serv_monitor_cpuCPU使用情况监控信息表;

⑦ td_idop_serv_monitor_memory:内存使用情况监控信息表;

⑧ td_idop_serv_monitor_disk:硬盘使用情况监控信息表;

⑨ td_idop_serv_monitor_network:网络收发数据包情况监控表;

1.1.2. 功能描述

1.1.2.1. 节点列表

主要展示当前所有的服务器节点信息。如:服务器IP、登录信息等。

当监控服务发现服务器异常时,列表中节点名称颜色变为红色,以示预警。

可以查看服务器的基本配置信息包括:内存、CPU、操作系统等信息。

亦可以查看当前服务器上已经安装的开发语言,及执行命令信息.

系统原型如下图所示:

操作说明:

⑩ 查询:根据服务器名称和Ip进行查询;

⑪ 批量删除:可以批量删除服务器节点信息。同时删除服务器节点所属语言、插件等信息;服务器CPU、硬盘、内存及网络等监控信息;删除当前服务器上部署的记录;删除与之相关联任务信息;

⑫ 添加:新增或编辑服务器信息;

1.1.2.2. 节点语言环境

该模块主要用于管理服务器上语言环境,以及该语言环境下,已安装的相关插件。如Python环境下已安装的第三方爬虫库。

1.1.2.2.1. 开发语言

主要用于管理服务器上的语言环境管理,实现管理界面的一键安装、卸载等。

系统原型如下图所示:

说明:

”表示当前服务器已经安装该语言;

×”表示当前服务器未安装该语言

操作说明:

① 查询:根据服务器Ip进行查询;

② 添加:指添加语言。添加后刷新列表,列表中新增一列信息;

③ 表头+”:表示对列表中所有的服务器节点进行安装。如果已经安装,则跳过;

④ 行单元格中+”:表示安装当前服务器安装的当前列语言;

⑤ 行单元格中×”:表示卸载当前服务器安装的当前列语言;

1.1.2.2.2. 环境依赖

该模块主要实现对各服务器节点上,已安装的语言的插件进行管理,以便在管理系统中统一管理。如安装、卸载等。

系统原型如下图所示:

中部树结构说明:

该树形结构中数据来源于服务器信息表,以及其对应的语言表。

操作说明:

① 批量删除:实现对插件的批量删除。同时,服务器上需要卸载该插件;

② 添加:必须先选择中部的树节点下的语言节点,否则不可添加;

③ 编辑:编辑插件信息;如安装、卸载命令等;

④ 安装:在当前选中树节点,所在服务器上安装该插件;

⑤ 卸载:卸载当前选中树节点,所在服务器上的该插件;

1.1.2.3. 节点监控

该模块主要用于近实时的监控服务器的内存、CPU、硬盘等信息,以便运维人员实时调整采集策略。

系统原型如下图所示: 

中部树结构说明:

该树形结构中数据来源于服务器信息表。

统计图说明:

后台服务每隔五分钟获取一次服务器的内存、CPU、硬盘等使用率;以及网络的收发包信息。

1.1.2.4. 网络拓扑

该模块主要用于显示当前爬虫全流程中的网络结构。包括:服务器分布、Redis队列部署情况、数据存储情况等。

系统原型如下图所示:

后续会逐渐把整个设计方案分享给各位大佬参考,也希望各位大佬多提建议。


同时,有愿意一起开发的大佬,也可以联系号主,如果合适,可以组队哦!

本文分享自微信公众号 - 十点数据(crawler-small-gun)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章