背景
为了更好的 被动 感知用户级竞品 PK 指标,如:是火币关上速度快还是币安关上速度快呢?是火币 WebSocket 连贯快还是币安的快呢?
目前这些都是疑问句,啄木鸟感知地图里很重要一块就是竞品数据比照,当初咱们依赖第三方检测平台(如:Boce、听云),但数据不能很好的满足咱们需要,并且数据必定是间接在咱们本人手上最 平安,正所谓《数据在手,天下我有》。
指标
- Docker 化部署
- 插件化治理
- 任务调度式收集
- 自定义指标
架构图
运行环境
基于 Docker 运行,运行时为 Node.js,能够实现:
- 基于 Puppeteer 无头浏览器式收集数据,如:性能指标、WebSocket 指标、接口指标等
- 基于 Ping 实现:域名可用性、TTL、丢包率的探测
购买多个节点服务器,如:阿里云 ECS 1U1G 北京、杭州、上海等节点装置 Woodpecker Docker Agent,其实能够了解为“肉鸡”的概念,咱们在近程的 Master 里治理这些 Agent 装置的插件、状态,并在工作触发时候发到对应的节点中,由节点实现数据采集、上报的工作。
留神的是,Agent 中只是在 ECS 中运行着一个 Docker 容器,而 Master 治理 / 操作的也是这个容器,不会对宿主做操作,不会越权(如:SSH ECS,咱们认为这些操作是 OPS 解决的领域)。
Master
1. 插件治理
以代码模式(Node.js)分模块治理,在工作里抉择插件,并配置插件所需参数,插件列表如:
-
Ping 插件
- 配置:域名 /IP、超时、次数
-
网站页面性能指标插件
- 配置:链接、视图宽高、UserAgent
- Huobi Global WebSocket 专测
- Binance WebSocket 专测
- 其实能做的很多很多 …
2. Agent 治理
查看所有 Agent 的状态、散布,对其装置 / 卸载插件,并对其进行地区散布、标签等信息管理。
3. 工作治理
以工作队列式向对应 Agent 发送数据,工作配置大略如:
- 工作名称
- 所属 Agent,如:bj01、sg03、hz03
- 工作距离:单次、1s、1m、1h、1h
-
执行插件:
- Ping – {url: ‘www.baidu.com’, timeout: 1000, count: 5}
- Web Performance – {url: ‘https://www.huobi.me/zh-cn/ex…’}
- Web Performance – {url: ‘https://www.baidu.com’}
- Global WebSocket
- Binance WebSocket
Agent
应用 Docker 后盾运行一个容器,如:
docker run \\
-d \\
--name woodpecker-agent \\
-p 8080:8080 \\
-e ACCESS\_KEY\= 生成的令牌 \\
hub.Woodpecker.vip/pk/agent:v1.0.0
该 Agent 提供的 OpenAPI:
- IP:8080/open/v1/status – 以后 Agent 状态
- IP:8080/open/v1/plugin/install – 装置插件,上传插件数据到 Agent
- IP:8080/open/v1/task/exec – 应用数据执行工作
Woodpecker
日志收集服务,由 Agent 采集完后推送到该服务,由该服务入库。
留神
- 以上均应用内网传输,如:Master -> Agent -> Woodpecker -> DB
- 频繁采集第三方网站时可能面临被封 IP 的危险