尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Huginn 自动化实战:从 Docker 安装到第一条网页监控流水线,半小时上手

Huginn 自动化实战:从 Docker 安装到第一条网页监控流水线,半小时上手 Huginn 自动化实战从 Docker 安装到第一条网页监控流水线半小时上手【免费下载链接】huginnCreate agents that monitor and act on your behalf. Your agents are standing by!项目地址: https://gitcode.com/gh_mirrors/hu/huginnHuginn 是一款可以运行在自己服务器上的开源自动化平台核心思路是让你创建一批名叫 Agent 的数字帮手按你预先写好的规则去监视网页、抓取数据、做判断最后自动推送通知。本文不堆概念而是用一条商品价格监控→降价自动通知的完整流水线带你从零装好环境、读懂配置亲眼看着它替你干活。先讲一个具体的画面每天早上一到工位你会先打开几个网页刷新一遍把有用的信息抄进表格再在合适的时机给同事发邮件。这种事偶尔做一次还行天天做就是纯消耗。Huginn 要消灭的正是这种每天重复的搬运工作——它把刷新→判断→通知整个动作固化成一串自动执行的任务你只负责定规则剩下的交给它。先弄懂两个词Agent 和 Event打开 Huginn 的界面之前只要理解两个概念后面所有操作都会变得顺理成章。Agent代理一个独立的任务单元负责某一件具体的事比如每六小时抓取某个网页当价格低于 500 时放行把消息推送到手机。Event事件在 Agent 之间传递的数据包裹通常是一个 JSON 对象里面装着抓到的标题、价格、链接等信息。把这两个词组合起来Huginn 的工作方式就像一条工厂流水线原料数据从输入端进来经过加工工位筛选、格式化、计算最后送到包装工位邮件、推送、文件。事件沿着有向图从一个 Agent 流向另一个 Agent你在界面上可以直接看到这条流动路径。上图就是 Huginn 自带示例场景里的一张事件流图左侧的天气、新闻类 Agent 产出事件中间的 Trigger 类 Agent 负责把关最后汇入日报类 Agent 统一输出。整条链路的每一环都能单独查看、编辑或暂停。三类零件拼出绝大多数自动化场景Huginn 仓库里自带了几十个现成的 Agent分布在app/models/agents/目录下。数量看着吓人但按职责分成三类就很好记类别代表 Agent典型用途输入端数据源WebsiteAgent、RssAgent、WebhookAgent定时抓网页、订阅 RSS、接收外部 POST 请求加工端处理逻辑TriggerAgent、EventFormattingAgent、JavaScriptAgent条件过滤、字段重排、跑自定义 JS 计算输出端通知/存储EmailAgent、PushoverAgent、SlackAgent、LocalFileAgent发邮件、手机推送、写进本地文件输入端负责拿到数据加工端负责决定值不值得要输出端负责把结果送对人。你规划自动化流程时就按抓什么→怎么筛→往哪发三步来填空绝大多数需求都能落到这三类里。上图的Your Agents列表是所有 Agent 的大本营每个代理的运行状态Working? 是否正常、最近一次检查和输出时间、事件总数都一目了然。右侧的 Show / Edit / Delete / Run 按钮分别对应查看详情、改配置、删除和手动触发一次。部署选哪条路五分钟体验版 vs 正式环境源码版部署方式有两套目的不同别选错。第一条路Docker 一键启动适合先体验只要机器上有 Docker一条命令就能把整个系统拉起来docker run -it -p 3000:3000 ghcr.io/huginn/huginn这条命令会下载官方镜像并映射 3000 端口。启动完成后浏览器打开http://localhost:3000用默认账号admin/password登录即可。初次登录时系统里已经预置了一个示例场景就是上面那张事件流图的来源你可以先拆开看看别人是怎么搭的。完整的环境变量配置说明在doc/docker/install.md。第二条路源码部署适合长期使用正式环境推荐从源码装方便自己控制依赖和升级节奏git clone https://gitcode.com/gh_mirrors/hu/huginn cd huginn cp .env.example .env bundle install bundle exec rake db:create db:migrate db:seed bundle exec foreman start这一段命令做的事情依次是拉取代码、准备配置文件.env里至少要把APP_SECRET_TOKEN换成随机字符串、安装 Ruby 依赖、创建并初始化数据库db:seed会写入示例场景、最后启动应用。数据库用 MySQL 或 PostgreSQL 都行配置写在config/database.yml。更详细的步骤见doc/manual/installation.md。新手最常见的三个卡点提前说数据库连不上时先检查.env里的数据库账号密码和端口生产环境报资源错误就执行RAILS_ENVproduction bundle exec rake assets:precompile预编译静态资源Agent 一直不执行多半是没给它配调度计划或者去看了log/目录下的日志但没注意到告警信息。实战搭一条价格监控→降价通知的流水线环境就绪后动手搭第一条真正能用的流水线。假设你每天要盯一个商品页希望在价格低于预算时收到手机推送。第一步新建一个 WebsiteAgent 抓取页面在 Agent 列表页点 New Agent选择 Website Agent。它的作用是按固定周期抓取目标网页再用 CSS 选择器把需要的内容抠出来。关键配置如下{ url: https://example.com/product, mode: on_change, extract: { name: { css: h1, value: text }, price: { css: .price, value: text } } }mode设为on_change表示只在页面内容发生变化时才产生新事件避免数据没变也反复打扰下游extract里定义了要提取的字段和对应的选择器。这个 Agent 在新建表单里就能直接填填完先点 Dry Run 试跑一次确认抓到的数据是想要的再保存。上图是新建 Agent 的表单页面类型选择、选项 JSON、调度计划都在这里配置。表单底部通常有一栏说明文档来源就是该 Agent 源码顶部的描述写得很详细拿不准参数含义时可以现场查。第二步用 TriggerAgent 做降价判断抓回的数据里既有高价也有低价不可能每次变化都通知。加一个 Trigger Agent规则是价格低于 500 才放行{ rules: [ { type: fieldvalue, value: 500, path: price } ], message: 心仪商品降价了当前价格 {{ price }} }Trigger Agent 的rules支持fieldvalue、fieldvalue、regex等多种比较方式多个规则默认要全部满足才触发。命中后它会把message里的内容作为新事件发给下游其中{{ price }}是 Liquid 模板语法会自动替换成事件里的实际值。第三步接上 PushoverAgent 推送手机最后挂一个 Pushover Agent 接收降价事件把它变成一条手机推送{ token: 你的应用API令牌, user: 你的用户或群组密钥, message: {{ message }} }至此整条链路已经闭合WebsiteAgent 定时抓页面 → TriggerAgent 判断是否跌破 500 → PushoverAgent 推送提醒。把这三个 Agent 的Link连接起来一个能自主工作的监控流程就上线了。如果不想用 Pushover把最后一步换成 EmailAgent、SlackAgent 或者 TelegramAgent 都可以思路完全一致。让流水线按你的节奏跑定时与数据保鲜大多数 Agent 的多久跑一次由两个地方控制。一是调度计划。Agent 表单里可以选择内置档位如every_5h也可以自定义 cron 表达式。想用 SchedulerAgent 在每天 22 点批量触发一批代理可以这样写0 22 * * 1-5这段 cron 表示工作日每晚 22 点整执行一次。SchedulerAgent 支持时区后缀比如0 22 * * 1-5 Europe/Paris还支持每月最后一个工作日这类进阶写法细节都在app/models/agents/scheduler_agent.rb的说明里。二是事件保留策略。每个 Agent 都可以设置keep_events_for按秒计算比如172800表示保留两天。合理设置这个值让旧数据自动过期能显著控制数据库体积系统跑久了也不会越拖越慢。上图的 PeakDetectorAgent 是加工端的一个进阶范例它接收高频事件流用算法识别讨论量突然飙升的尖峰一旦触发就发通知。如果你的数据处理需求更复杂——比如多字段计算、外部 API 调用——可以改用 JavaScriptAgent 直接写函数处理或参考app/models/agents/event_formatting_agent.rb里的模板字段做格式化输出。长期运行这几件小事值得养成习惯更新代码Huginn 迭代很快定期git pull拉取最新代码再执行bundle exec rake db:migrate同步数据库结构。关注状态列Agent 列表里的 Working? 一列如果出现非 YES 的标记点进详情看日志定位原因别让坏掉的代理悄悄吞掉数据。留好备份自动化跑久了Agent 配置和数据都是资产数据库定期备份比事后重建省心得多。按需扩展第三方代理通过环境变量ADDITIONAL_GEMS加载比如想接更多平台就在.env里追加对应的 gem 名称。现在就可以做的第一步不要急着读完所有文档先花五分钟做这件事在装有 Docker 的机器上跑一遍docker run -it -p 3000:3000 ghcr.io/huginn/huginn用admin/password登录打开预置的示例场景沿着事件流图把每个 Agent 的配置逐个点开看一遍。看懂别人搭的链路比背任何教程都快。看完示例后再用本文的价格监控三件套WebsiteAgent → TriggerAgent → PushoverAgent搭一条属于你自己的流水线。想深入研究时doc/manual/里有完整的安装与运维手册app/models/agents/里每个 Agent 源码自带英文说明文档那才是最权威的参考。【免费下载链接】huginnCreate agents that monitor and act on your behalf. Your agents are standing by!项目地址: https://gitcode.com/gh_mirrors/hu/huginn创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表