静看光阴荏苒
不管不顾不问不说也不念

使用Huginn监控VPS是否有货(邮件通知)

Huginn是一个功能非常强大的执行自动化任务的工具,这篇文章介绍一下使用Docker安装以及配置一个监控VPS是否有货,然后通过邮件通知的功能。

Huginn内存大概要用1.5GB,但没有多少商家有卖1.5GB内存的VPS,所以要用的话估计只能买一台2GB的VPS了,每个月买VPS的费用可能就有点小贵了。。

我最近看到一个比Huginn轻一些的开源项目,但是目前还不是很完善。。所以先水一篇Huginn的文章。。

这篇文章是使用邮件通知,所以你得要事先准备一个SMTP服务。自己搭建的,或者大厂的,比如Mailgun/SendGrid都行。

安装docker和docker-compose:

apt -y update
apt -y install curl
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker
curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

新建docker-compose:

mkdir -p /opt/huginn && cd /opt/huginn && nano docker-compose.yml

使用下面的配置(自己修改数据库密码/SMTP服务连接信息:)

version: "3.5"

services: 
    huginn-server:
        image: huginn/huginn
        container_name: huginn
        depends_on: 
            - huginn-mariadb
        environment: 
            - HUGINN_DATABASE_HOST=huginn-mariadb
            - HUGINN_DATABASE_PORT=3306
            - HUGINN_DATABASE_NAME=huginn
            - HUGINN_DATABASE_USERNAME=huginn
            - HUGINN_DATABASE_PASSWORD=password
            - SMTP_SERVER=mail.233.fi
            - SMTP_PORT=587
            - SMTP_USER_NAME=imlala@233.fi
            - SMTP_PASSWORD=password
            - EMAIL_FROM_ADDRESS=imlala@233.fi
        ports:
            - 3000:3000
        restart: unless-stopped

    huginn-mariadb:
        image: mariadb
        container_name: huginn-mariadb
        environment: 
            - MYSQL_DATABASE=huginn
            - MYSQL_USER=huginn
            - MYSQL_PASSWORD=password
            - MYSQL_ROOT_PASSWORD=password
        volumes: 
            - ./db:/var/lib/mysql
        restart: unless-stopped

配置好了后up起来就安装好了:

docker-compose up -d

打开你的IP:3000端口可以访问到WEB界面,默认的管理员账号:admin密码:password

进去首先把管理员的邮箱和密码修改一下,邮箱是用来接收通知的:

现在就可以添加Agent了:

先添加一个WebsiteAgent:

填写一些基本信息,Schedule这里设置为1分钟,既1分钟检查一次,Keep events设置为Forever,既永远让这个任务生效:

这里我拿搬瓦工的VPS购买页面演示,打开这个页面:https://bwh88.net/cart.php?a=add&pid=72

F12打开Chrome的开发者工具,然后按下图找到相应的div,右键Copy-full-XPath:

例如我复制出来的值是:

/html/body/div/div[3]/div[1]/div/div/div/div[1]

回到Huginn的界面在Option下点击Toggle View,使用下面我给出的这段配置替换url和xpath就行:

{
  "expected_update_period_in_days": "2",
  "url": "https://bwh88.net/cart.php?a=add&pid=72",
  "type": "html",
  "mode": "on_change",
  "extract": {
    "有货吗?": {
      "xpath": "/html/body/div/div[3]/div[1]/div/div/div/div[1]",
      "value": "normalize-space(.)"
    }
  }
}

如图所示:

接着点击DryRun测试一下看能不能获取到自己要的数据:

现在可以看到它是没货的,一旦有货了它这个div里面的内容肯定会有变化。

然后接下来我们让它在有变化的时候就触发另外一个EmailDigestAgent,既发送邮件通知我们。

和之前一样添加EmailDigestAgent,然后按照下图配置即可,注意Sources这里要选上“搬瓦工”:

这样就配置好了,如果你不确定你的配置是否可以正常工作,可以先用nginx搭建一个仿站,把页面里面的内容改一下看会不会触发这两个Agent。

赞(2)
未经允许不得转载:荒岛 » 使用Huginn监控VPS是否有货(邮件通知)
分享到: 更多 (0)

评论 4

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    好 真棒 就是看不懂 :wink:

    橘子5年前 (2020-04-21) Google Chrome 76.0.3809.89 Google Chrome 76.0.3809.89 Windows 8.1 x64 Edition Windows 8.1 x64 Edition回复
  2. #2

    人生苦短,我还是用Python吧 xD :mrgreen:

    xD5年前 (2020-04-23) Google Chrome 81.0.4044.113 Google Chrome 81.0.4044.113 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 原来是Python大佬 :mrgreen:

      LALA5年前 (2020-04-25) Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿