利用check酱监控网页并生成rss

背景

最近发现了一个很好玩的开源项目:Check酱。

https://github.com/easychen/checkchan-dist

它可以通过保存cookie的方式,监控任意网页上任意元素的变化。然后通过使用Server酱或webhook的方式,对这些元素的变化进行时时提醒。

部署Check酱实时监控

Check酱的本体是一个chrome插件,但如果只用插件的话,则只能在开机打开浏览器时进行监控。

好在官方提供了docker镜像,于是我首先使用Docker-compose的方式将其部署在我的服务器上。

1f43443033c53761dab4a0067576f31f.jpeg

于是,我用Check酱监控了b站up主的更新(主要是虽然b站有动态-投稿,可以只看关注的up主更新的视频,但等我发现这个功能时,我已经把2000个关注都点满了。。。),以及京东商品的价格,还有微信公众号的更新。

这边借用官方的图:8d520e2bed94188c7841cd525c1736f8.jpeg

然后配置Server酱,将监控信息发送到钉钉机器人通道: 1d38580f2c9966f5e437f065ca30e527.jpeg03b27ffe22a875b22939674d746fab6f.jpegd6510ca1a9e6ae8e227c80677b3fcb35.jpeg

现在看起来一切都很完美,但很快我就发现cookie是有时效的,所以我隔几天就要去登录一下。这样显然就麻烦了。

万物皆可Rss

所以很快,我就发现了RssHub。

https://docs.rsshub.app/

https://github.com/DIYgod/RSSHub

它是一个由广大网友共同编写规则,从而可以将大多数你想要的东西(包括那些不支持rss的)都变成rss订阅源的工具。

所以,现在的思路就从直接监控网页,变成了监控rss的变化。(因为一般的rss阅读器提醒不是那么及时,并且我又喜欢把app都冰冻锁起来,所以我需要一个可以在聊天软件里提醒我的功能)

当然,由于一些不可说的原因,rsshub的官方站在大陆使用会有点不顺畅。不过好在这依然是个开源软件,所以我们继续用docker部署在服务器上:

49d496c60273aa744f66a86a01c49060.jpeg

所以当前的架构就是这样:

98aabbefdb2d3427a6cc816f3910cf5a.jpeg

我把网页的变化点做成rss发布,然后使用Check酱去监控rss的变化,一旦有变化就会通过Server酱向我的钉钉推送提醒;同时,我使用The Old Reader去订阅并管理我感兴趣的Rss源,这样当我的钉钉接收到提醒时,我就可以用安卓的FeedMe或网页端去查看更新的内容了,并且已读的条目也会双向同步到The Old Reader。

完美。

但。。。我老婆又向我提出了一个新的需求:她也想要去查看更新。。。

这个需求的麻烦点在于,我不想让她的已读动作影响到我。看似用两个The Old Reader账号就能解决,但这样我就需要每次修改订阅都要在两个账号同步修改,太麻烦了。。。

将监控动态发布成Rss

各种搜索解决方案,发现新版Check酱刚增加了一项功能,可以将监控的动态上传、发布成Rss。

简单说来就是:https://github.com/easychen/checkchan-dist/issues/39

当正常的php网站部署, 然后填上对应的rss_upload.php地址:

d613ecdada9962b80921aa9a99a99b89.jpeg

然后->“动态”, 点击"RSS“上传:

b48fa4dc20b29447d9e39c4dda41d26d.jpeg

最后打开https://example.com/rss.php 即可:

539cdaf35a9847297c517669b49638f1.jpeg

rss_upload.php:

7693710e22db4a05a039606a6619f93b.jpeg

rss.php:

aee860ccef1c0521d9c620b50b8627e3.jpeg

利用这个功能,我就可以把Check酱监控的动态发布成Rss源,这样不论给多少人订阅都不会相互干扰了,而且监控的条目也方便管理,不用多次反复添加修改了。

a2ef94339a4232a7524444d013ad603e.jpeg

但是,大家肯定发现了一个问题,那就是Rss的上传是要手动触发的啊。那岂不是没有一点可用性?

幸好Check酱镜像支持了NoVNC,所以我通过NoVNC连接到服务器上部署的Check酱里,打开正在被自动化程序操控的浏览器,按F12进入开发者模式,在命令行中输入:

40db226a388df7da959aae81520e1f42.jpeg

这段js代码,就可以让浏览器每隔10分钟,自动去点击一下上传按钮。关闭NoVNC也可以生效。

这下就全流程自动化了。

这是在iPhone的ReadOn软件上的效果:

bce94115ca9428d32a2a67388182a9c5.jpeg

这是在安卓的FeedMe软件上的效果:

fdf778362961d200e6823cbccdd79d83.jpeg

<think>好的,用户想了解如何监控接口内存占用较大的接口,需要工具和方法。首先,我需要回忆之前的引用内容,看看有哪些工具可以用。引用里提到了Zabbix、Prometheus、Nagios、乐维监控和安企神。这些都是系统监控工具,可能可以用于内存监控。 接下来,用户提到的是接口的内存占用,这里的“接口”可能指的是网络接口或者API接口?如果是网络接口,通常监控的是带宽而不是内存;如果是API接口,可能需要监控应用程序的内存使用情况。需要进一步分析用户的意图。 根据用户的问题,“监控接口内存占用的方法或工具”,可能是指监控某个应用程序接口(API)的内存使用情况,或者网络接口相关的内存占用。例如,某些网络服务在处理大量请求时,可能会占用较多内存,这时候需要监控对应的进程或服务。 首先,系统级工具方面,top和htop可以实时查看进程的内存使用情况。如果知道具体的进程名,可以用ps命令筛选。例如,如果接口是Java应用,可以用jstat或VisualVM来监控。这部分需要详细说明命令和参数。 然后是专业监控工具。Zabbix可以配置监控项,跟踪特定进程的内存使用,设置触发器报警。Prometheus结合Exporter可以抓取应用的内存指标,Grafana展示。Nagios通过插件监控进程内存,设置阈值。这些工具在之前的引用里提到过,需要具体说明如何配置。 对于代码级集成,比如在Java中可以用Runtime类获取内存信息,或者使用Spring Boot Actuator。这些方法适合开发人员自主监控。需要提供示例代码,说明如何应用。 最后,要给出步骤总结,帮助用户一步步操作。比如先确定目标进程,选择工具,配置监控,设置告警,分析数据。同时,生成相关问题,引导用户深入探讨优化方法、容器监控或云原生方案。 需要确保回答的结构清晰,分点说明,工具和方法对应,引用之前的资料。例如,在提到Zabbix时引用[^1],说明其适用于不同规模的环境。参数设置部分参考引用[^2],提到阈值配置和自定义参数的方法。同时,代码示例要符合用户提供的格式,使用json或Python等。 还要注意用户可能的混淆点,比如接口类型,需要明确区分网络接口和API接口,避免误解。在回答中可能需要简要说明两者的区别,分别给出监控方法,确保覆盖用户的实际需求。</think>### 如何监控接口内存占用 #### 一、明确监控目标 1. **接口类型** - **网络接口**(如eth0、docker0):监控其关联进程的内存占用 - **API接口**(如Web服务接口):监控服务进程或容器的内存使用 2. **关键指标** - 进程内存使用量(RSS/VMS) - 内存泄漏趋势 - 内存使用率百分比(占总内存比例) --- #### 二、系统级命令行工具 1. **`top`/`htop`实时监控** ```bash top -p $(pgrep <进程名>) # 查看指定进程内存 htop --sort-key=PERCENT_MEM # 按内存排序进程 ``` 2. **`ps`筛选关键进程** ```bash ps aux | grep <接口进程名> | awk '{print $4,$11}' # 输出内存占比和进程名 ``` 3. **`smem`高级分析** ```bash smem -P <进程关键词> -c "pid name pss" # 按PSS(实际物理内存)统计 ``` --- #### 三、专业监控工具实践 1. **Zabbix监控配置** - 创建监控项:`proc.mem[<进程名>,rss]` - 设置触发器:`{HOST:proc.mem[<进程名>,rss].last()}>阈值`[^1] 2. **Prometheus+Grafana方案** - 部署`node_exporter`采集系统指标 - 使用PromQL查询: ```promql process_resident_memory_bytes{job="<服务名>"} ``` 3. **容器化接口监控** ```bash docker stats --format "{{.Name}}: {{.MemUsage}}" # 实时容器内存 kubectl top pod -l app=<接口服务标签> # Kubernetes环境 ``` --- #### 四、代码级集成方法 1. **Java应用示例** ```java Runtime runtime = Runtime.getRuntime(); long usedMem = runtime.totalMemory() - runtime.freeMemory(); System.out.println("Used Memory: " + usedMem / 1024 / 1024 + "MB"); ``` 2. **Python内存分析** ```python import psutil process = psutil.Process(pid) print(process.memory_info().rss) # 获取RSS内存 ``` --- #### 五、关键配置建议 1. **阈值设置参考** | 监控场景 | 建议阈值 | 响应动作 | |----------------|-----------------|------------------------| | 常规API服务 | >70%持续5分钟 | 触发扩容告警[^2] | | 核心支付接口 | >50%立即告警 | 优先内存释放流程 | 2. **JSON配置文件示例** ```json { "monitoring": { "api_memory": { "process_name": "payment_gateway", "check_interval": 30, "critical_threshold": 4096, "alert_channels": ["email", "slack"] } } } ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangsheng377

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值