一、uptime-kuma介绍
1.1 uptime-kuma简介
uptime-kuma是一款开源的、多功能的服务器监控面板 。
1.2 uptime-kuma特点
- 监控 HTTP(s) / TCP / HTTP(s) 关键字 / HTTP(s) Json 查询 / Ping / DNS 记录 / 推送 / Steam 游戏服务器 / Docker 容器的正常运行时间
- 精美、反应式、快速的 UI/UX
- 通过 Telegram、Discord、Gotify、Slack、Pushover、电子邮件 (SMTP) 和90 多种通知服务发送通知,请单击此处查看完整列表
- 20 秒间隔
- 多种语言
- 多个状态页面
- 将状态页面映射到特定域
- 平图
- 证书信息
- 代理支持
- 2FA 支持
1.3 使用场景
Uptime Kuma 是一款流行的开源监控工具,它允许用户监控网站、API、TCP 端口等的可用性和响应时间。它的易用性、自托管性以及丰富的功能使其在多种场景下都非常有用。以下是使用 Uptime Kuma 的一些典型场景:
网站监控:对于网站管理员或所有者来说,可以使用 Uptime Kuma 来确保网站始终在线并快速响应。一旦检测到网站无法访问或加载缓慢,系统会立即通过电子邮件、Telegram、Discord 等方式发送告警。
API 监控:开发人员和 DevOps 团队可以利用 Uptime Kuma 来监控关键 API 的状态,确保服务间通信顺畅无阻。这对于依赖外部API或者提供API服务的团队尤为重要。
服务器与基础设施监控:IT 运维团队可以用它来监控服务器的运行状态,包括CPU负载、内存使用情况、磁盘空间等,以及网络设备如路由器、交换机的连通性,确保整个基础设施的稳定运行。
应用程序性能监控:对于Web应用或移动应用开发者,可以通过设置监控项来跟踪应用的响应时间和可用性,及时发现并解决性能瓶颈或故障。
电子商务与在线服务:电商平台、在线支付系统、SaaS 提供商等需要保证服务高度可用的企业,使用 Uptime Kuma 可以迅速响应任何可能影响用户体验的中断,减少业务损失。
内部系统监控:企业内部的IT系统,如CRM、ERP、内部门户等,通过监控可以确保员工能够高效工作,避免因系统故障导致的生产率下降。
数据中心和云服务监控:无论是在私有云、公有云还是混合云环境中,Uptime Kuma 都能帮助监控虚拟机、容器、数据库等组件的健康状况,支持多云环境的统一监控管理。
灾备与故障转移策略验证:通过设置监控和相应的阈值,可以验证备份系统或故障转移机制是否按预期工作,在主系统发生故障时能够迅速接管服务。
二、本次实践环境介绍
2.1 环境规划
本次实践为个人测试环境,使用服务器华为云ECS云服务器,
操作系统版本为centos7.6。
hostname | IP地址 | 操作系统版本 | 内核版本 | node.js版本 | 服务器类别 |
---|---|---|---|---|---|
- | - | centos 7.6 | 3.10.0-957.el7.x86_64 | v16.17.0 | 华为云ECS云服务器 |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境;
2.在centos7.6环境下部署uptime-kuma服务器监控面板。
2.3 环境要求
- 系统要求
✅ Major Linux distros such as Debian, Ubuntu, CentOS, Fedora and ArchLinux etc.
✅ Windows 10 (x64), Windows Server 2012 R2 (x64) or higher
❌ Replit / Heroku
- node.js和npm版本要求
Node.js 14 / 16 / 18 / 20.4
npm >= 7三、检查本地环境
3.1 检查本地操作系统版本
检查本地操作系统版本
[root@ecs-52b7 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
3.2 检查系统内核版本
检查系统内核版本
[root@ecs-52b7 ~]# uname -r
3.10.0-1160.92.1.el7.x86_64
3.3 检查系统是否安装Node.js
检查系统是否安装Node.js
[root@ecs-52b7 ~]# node -v
-bash: node: command not found
四、部署Node.js 环境
4.1 下载Node.js安装包
下载Node.js安装包
wget https://nodejs.org/dist/v16.17.0/node-v16.17.0-linux-x64.tar.xz
4.2 解压Node.js安装包
解压Node.js安装包
tar -xvJf node-v16.17.0-linux-x64.tar.xz
4.3 复制二进制文件
将 /root/node-v16.17.0-linux-x64/bin/下的二进制文件复制到/usr/local/bin下
cp -a /root/node-v16.17.0-linux-x64/bin/node /usr/local/bin/node
cp -a /root/node-v16.17.0-linux-x64/bin/npm /usr/local/bin/npm
4.4 配置环境变量
- 在/etc/profile文件中,新增以下两行:
export NODE_HOME=/root/node-v16.17.0-linux-x64/bin/
export PATH=$PATH:$NODE_HOME:/usr/local/bin/
- 使变量生效
source /etc/profile
4.5 查看node版本
查看node版本
[root@ecs-52b7 ~]# npm -v
8.15.0
[root@ecs-52b7 ~]# node -v
v16.17.0
五、安装uptime-kuma
5.1 下载uptime-kuma源码包
- 下载uptime-kuma源码包
git clone https://github.com/louislam/uptime-kuma.git
- 查看uptime-kuma源码包
[root@ecs-52b7 uptime-kuma]# tree -L 2 ./
./
├── babel.config.js
├── CNAME
├── CODE_OF_CONDUCT.md
├── config
│ ├── cypress.config.js
│ ├── cypress.frontend.config.js
│ ├── jest-backend.config.js
│ └── vite.config.js
├── CONTRIBUTING.md
├── db
│ ├── kuma.db
│ ├── patch10.sql
│ ├── patch1.sql
│ ├── patch-2fa-invalidate-used-token.sql
│ ├── patch-2fa.sql
│ ├── patch2.sql
│ ├── patch3.sql
│ ├── patch4.sql
│ ├── patch5.sql
│ ├── patch6.sql
│ ├── patch7.sql
│ ├── patch8.sql
│ ├── patch9.sql
│ ├── patch-add-certificate-expiry-status-page.sql
│ ├── patch-add-clickable-status-page-link.sql
│ ├── patch-add-description-monitor.sql
│ ├── patch-add-docker-columns.sql
│ ├── patch-added-json-query.sql
│ ├── patch-added-kafka-producer.sql
│ ├── patch-added-mqtt-monitor.sql
│ ├── patch-add-gamedig-given-port.sql
│ ├── patch-add-gamedig-monitor.sql
│ ├── patch-add-google-analytics-status-page-tag.sql
│ ├── patch-add-invert-keyword.sql
│ ├── patch-add-other-auth.sql
│ ├── patch-add-parent-monitor.sql
│ ├── patch-add-radius-monitor.sql
│ ├── patch-add-retry-interval-monitor.sql
│ ├── patch-add-sqlserver-monitor.sql
│ ├── patch-add-timeout-monitor.sql
│ ├── patch-api-key-table.sql
│ ├── patch-group-table.sql
│ ├── patch-grpc-monitor.sql
│ ├── patch-http-body-encoding.sql
│ ├── patch-http-monitor-method-body-and-headers.sql
│ ├── patch-improve-performance.sql
│ ├── patch-incident-table.sql
│ ├── patch-maintenance-cron.sql
│ ├── patch-maintenance-table2.sql
│ ├── patch-monitor-add-resend-interval.sql
│ ├── patch-monitor-basic-auth.sql
│ ├── patch-monitor-expiry-notification.sql
│ ├── patch-monitor-oauth-cc.sql
│ ├── patch-monitor-push_token.sql
│ ├── patch-monitor-tls.sql
│ ├── patch-notification_sent_history.sql
│ ├── patch-ping-packet-size.sql
│ ├── patch-proxy.sql
│ ├── patch-setting-value-type.sql
│ ├── patch-status-page-footer-css.sql
│ └── patch-status-page.sql
├── docker
│ ├── alpine-base.dockerfile
│ ├── builder-go.dockerfile
│ ├── debian-base.dockerfile
│ ├── docker-compose.yml
│ ├── dockerfile
│ ├── dockerfile-alpine
│ └── etc
├── ecosystem.config.js
├── extra
│ ├── beta
│ ├── build-healthcheck.js
│ ├── checkout-pr.js
│ ├── close-incorrect-issue.js
│ ├── compile-install-script.ps1
│ ├── deploy-demo-server.js
│ ├── download-dist.js
│ ├── entrypoint.sh
│ ├── env2arg.js
│ ├── exe-builder
│ ├── fs-rmSync.js
│ ├── healthcheck.go
│ ├── healthcheck.js
│ ├── install.batsh
│ ├── mark-as-nightly.js
│ ├── press-any-key.js
│ ├── remove-2fa.js
│ ├── reset-password.js
│ ├── simple-dns-server.js
│ ├── simple-mqtt-server.js
│ ├── sort-contributors.js
│ ├── test-docker.js
│ ├── update-language-files
│ ├── update-version.js
│ ├── update-wiki-version.js
│ └── upload-github-release-asset.sh
├── index.html
├── install.sh
├── LICENSE
├── package.json
├── package-lock.json
├── public
│ ├── apple-touch-icon.png
│ ├── apple-touch-icon-precomposed.png
│ ├── favicon.ico
│ ├── icon-192x192.png
│ ├── icon-512x512.png
│ ├── icon.png
│ ├── icon.svg
│ └── manifest.json
├── README.md
├── SECURITY.md
├── server
│ ├── 2fa.js
│ ├── auth.js
│ ├── cacheable-dns-http-agent.js
│ ├── check-version.js
│ ├── client.js
│ ├── config.js
│ ├── database.js
│ ├── docker.js
│ ├── google-analytics.js
│ ├── image-data-uri.js
│ ├── jobs
│ ├── jobs.js
│ ├── model
│ ├── modules
│ ├── monitor-types
│ ├── notification.js
│ ├── notification-providers
│ ├── password-hash.js
│ ├── prometheus.js
│ ├── proxy.js
│ ├── rate-limiter.js
│ ├── routers
│ ├── server.js
│ ├── settings.js
│ ├── socket-handlers
│ ├── uptime-cache-list.js
│ ├── uptime-kuma-server.js
│ └── util-server.js
├── src
│ ├── App.vue
│ ├── assets
│ ├── components
│ ├── i18n.js
│ ├── icon.js
│ ├── lang
│ ├── layouts
│ ├── main.js
│ ├── mixins
│ ├── modules
│ ├── pages
│ ├── router.js
│ ├── util-frontend.js
│ ├── util.js
│ └── util.ts
├── test
│ ├── backend.spec.js
│ ├── cypress
│ ├── prepare-test-server.js
│ ├── test_install_script
│ └── test-radius.dockerfile
└── tsconfig.json
28 directories, 137 files
5.3 设置npm镜像源
- npm设置国内淘宝镜像源
npm config set registry https://registry.npmmirror.com
- 查看npm镜像源
[root@jeven uptime-kuma]# npm get registry
https://registry.npmmirror.com/
5.4 安装uptime-kuma
- 准备项目环境
npm run setup
- 执行以下命令
node server/server.js &
- 安装 pm2
npm install pm2 -g && pm2 install pm2-logrotate
- 启动uptime-kuma服务
pm2 start server/server.js --name uptime-kuma
5.5 检查uptime-kuma服务状态
- 检查uptime-kuma服务状态
[root@ecs-52b7 uptime-kuma]# ss -tunlp |grep 300
tcp LISTEN 0 511 [::]:3001 [::]:* users:(("node",pid=2209,fd=24))
六、uptime-kuma基本使用
6.1 创建管理员账号
访问地址:IP:3001
将IP地址替换为自己服务器IP地址,云服务器安全组需要放行3001端口,关闭防火墙和selinux。
6.2 添加监控项
检查本地的3001端口是否监听,填写以下监控项基本信息,保存即可。
七、总结
Uptime Kuma作为一款开源服务器监控工具,以其轻量级、高度可定制化和用户友好的界面脱颖而出。它不仅支持多样化的监控类型,如HTTP(S)、Ping、Port等,还提供了即时的告警通知功能,确保你能迅速响应任何服务中断。配置过程直观简便,且支持多种告警渠道,极大地提升了运维效率。自托管特性让数据安全更有保障,而活跃的社区和持续的更新更是为项目的可靠性和未来扩展性加分。Uptime Kuma是一款高效、灵活且值得信赖的监控解决方案,为维护线上服务稳定性提供了强大助力。