从2022年开始,以“降本增效”为目标的改革风席卷了整个国内的云计算市场,各路厂商纷纷收紧各自免费体验产品的额度,也加紧了边缘产品商业化的脚步。云监控(或者称云拨测)就是这样一个边缘化的产品,过去很多的厂商大多提供了非常充足的免费额度,这一年里的变故来的让人十分糟心……
一、倒霉经历
博主从2016年搞百度贴吧云签到执行计划任务用到云监控到现在,以时间为顺序列举一下博主用过的一些云监控服务:
①360监控:在2020年以前产品就停更下线了
②创宇监控:2019年大幅缩减到20条邮件/短信提醒,2021年改版后彻底取消免费额度
③DNSPod:保持免费,但功能已停更多年
④UptimeRobot:免费用户仅支持HEAD请求,2023年开始限制1个告警邮箱
⑤MySSL证书监控:已商业化,免费20站点及30次/月告警额度
⑥阿里云监控:国内版和国际版相继于2022年商业化,免费监控持续时长受限
⑦腾讯云拨测:于2023年上半年正式商业化,仅保留限期的免费试用
⑧百度云监控:于2023年中正式商业化,取消了免费额度
正如上面列举的这样,几年里我的云监控服务迁移了很多次,最长的也就相安无事一两年,从换到阿里之后更是每一个连几个月都没用到就商业化了。每一次的监控项目迁移都要花费很大的精力去设置告警组、告警规则、监控对象等等,然后在使用的过程中就是今天告诉你砍几个测试节点、明天砍一下监控周期、后天砍点通知额度,最后一竿子捅进来告诉你商业化啦,免费额度木大啦。
被折腾的身心俱疲之后,我先是把贴吧签到换成了crontab+curl,然后就开始物色一个比较好用的云监控程序。这时我看到了UptimeKuma的介绍,因为博主对Node.js和PM2一点都不熟,所以仅仅抱着试试看的态度在测试机上安装了一下。结果发现UptimeKuma的功能完成度极高,简直是自建云监控的完美解决方案,在稳定运行了半年以后忍不住给大家分享一下这个好看又好用的程序。
最近恰逢腾讯云双十一活动,国内Lighthouse最低仅需88元/年,香港低价专属套餐也已开放购买。整体活动虽然没有三周年活动力度大,但是性价比依然不错,用来个人学习使用还是非常划算的。
二、搭建教程
第零步 Docker一键安装
UptimeKuma已提供打包好的docker镜像供一键运行,由于与GitHub互联不稳定,强烈建议境内服务器使用此方式进行安装。若使用腾讯云轻量应用服务器的Docker-CE镜像或已安装docker,可以运行以下命令进行安装,安装完成后可直接跳至本节第四步。
1 |
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1 |
第一步 配置Node.js环境
UptimeKuma支持Node.js 14及以上的版本,如果使用的是腾讯云轻量应用服务器,可以直接使用应用模板中的Node.js镜像。对于常见的系统,Node.js有多种安装方式,可以直接使用apt
等包管理器进行二进制安装,可以从官网获取构建好的二进制文件进行安装,可以使用nvm进行管理,可以拉取源码编译安装(比如32位的i686,建议不高于16),也可以通过安装宝塔pm2管理器自动配置。条条大路通罗马,这里只列举几个典型的例子。
Node.js官方发布页面提供了当前最新版本的二进制包和源码的下载,历史版本需要前往官方下载站,进入以版本号命名的文件夹,根据系统和架构选择二进制压缩包如linux-x64.tar.gz
,在最下面如node-v16.9.1.tar.gz
格式的包为源代码。
Node.js发布页:https://nodejs.org/en/download
Node.js下载站:https://nodejs.org/dist
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#Debian/Ubuntu系统直接安装 apt install nodejs apt install npm #官方二进制包安装,以最新版为例 #①选择放置nodejs的目录,下载并解压二进制包 cd /home wget https://nodejs.org/dist/v20.9.0/node-v20.9.0-linux-x64.tar.xz tar xf node-*.tar.xz cd node-* #②添加软链接 ln -s /home/node-v20.9.0-linux-x64/bin/npm /usr/bin/ ln -s /home/node-v20.9.0-linux-x64/bin/node /usr/bin/ #编译安装,主要用于32位等不提供二进制文件的系统 #①安装编译环境 yum -y install gcc gcc-c++ kernel-devel //以CentOS、AlmaLinux为代表的RHEL系 apt -y install build-essential //Debian、Ubuntu #②下载并解压源码包 wget https://nodejs.org/dist/v16.9.1/node-v16.9.1.tar.gz tar -zxvf node-*.tar.gz cd node-* #③编译并安装 ./configure //配置 make //编译 make install //安装 #检查安装成果,有正常返回即安装成功 node -v npm -v #若为国内服务器,可以考虑更换为淘宝npm镜像源 npm config set registry https://registry.npmmirror.com |
第二步 安装UptimeKuma
UptimeKuma的源码需要从GitHub获取,若服务器访问GitHub存在障碍,则需要从release页面下载源码包(点击前往)手动上传到服务器并解压。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#①通过git拉取源码 git clone https://github.com/louislam/uptime-kuma.git #②进入源码目录并执行安装 npm run setup #③测试运行 node server/server.js # 无法连接至GitHub时,需前往release页面下载对应版本SourceCode和dist.tar.gz # 先解压源代码,再将dist解压到源代码根目录 # 编辑package.json找到43行setup中"git checkout 1.23.3 && npm ci --production && npm run download-dist" # 将多余内容删除,仅保留"npm ci --production",再和上面②一样进行安装 npm run setup node server/server.js |
当Console中显示“Listening on 3001”服务即正常启动了,在防火墙中放行3001端口,使用http://ip:3001即可访问控制页面。
第三步 配置进程守护
Node.js一般使用pm2管理器进行进程守护和开机启动:
1 2 3 4 5 6 7 8 9 10 11 12 |
# 安装PM2管理器 npm -i pm2 -g # 设置uptimekuma进程 pm2 start server/server.js --name uptimekuma # 保存当前配置 pm2 save # 生成开机进程并允许启动 pm2 startup systemctl enable pm2-root # 列出程序并管理进程 pm2 ls pm2 start|restart|stop|delete uptimekuma |
第四步 绑定域名
可以使用NGINX反向代理3001端口至常规的网站端口并在NGINX上绑定域名、设置证书等,以下是一个可用的示例配置。至此,UptimeKuma的搭建就正式完成了,可以进入具体内容的设置了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
location / { proxy_pass http://127.0.0.1:3001; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; #适当延长代理超时时间 proxy_read_timeout 5m; #WebSocket相关配置 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } |
三、使用教程
云监控功能
支持配置HTTP、TCP、Ping、DNS检测等功能,其中HTTP拨测支持证书到期监控、返回关键词监控等功能。
整体功能支持较为完整,UI交互体验也非常友好,美中不足是缺少像指定解析到IP的功能。
监控展示页
UptimeKuma支持设置公开的信息披露页面,和UptimeRobot一样简洁美观并且可以自定义。
告警通知渠道
UptimeKuma支持SMTP邮件、钉钉机器人、飞书、Discord、Telegram、企业微信等30余种现成的通知方式供你选择,总有一种适合你。博主是使用的SMTP邮件发送到手机的139邮箱,这样就实现了免费的短信提醒。
通过代理拨测
网络受限?UptimeKuma还支持前置http、socks5等代理进行测试。
备份管理
一键导入导出,更新、重装、启用新服务器都可以快速恢复已有的配置。
四、结语
UptimeKuma算是自建云监控的一个很好的选择了,基本能满足一般的使用场景需要。在国内安装最大的问题还是GitHub,官方的安装指引中调用的脚本有几个地方需要从GitHub拉取文件才能够继续。从这个上面也切实地感觉到了Docker一键的简便性,如果习惯的话不如使用Docker一键安装,这样反而能节约大把的时间。
博主的UptimeKuma运行了差不多有大半年了,内存占用在200m上下,程序本身是相当稳定的,也没有遇到什么明显的bug。现在才写出来也是因为最近没有什么题材了,就连同Node.js踩的一些坑一起整理起来了,如果觉得啰嗦就挑选着看吧~
*原创文章,转载请注明出处@luotianyi.vc
http可以指定ip啊,url写上具体ip,header那边设置好host应该就可以吧
之前有次更新好像是数据库直接损毁了,摆烂用Better Stack了
就是好奇SMTP发信的话,阿里云和腾讯云是不是封端口?
之前就看过大佬也叫用的监控,不过我自己不在意东西断不断,倒是可以试试看,可以用在工作站检测一下服务
好好好,学到了捏