Uptime Kuma - 监控工具
在浏览其他博主的博客时偶然发了这个监控工具,觉得还是很有用和好玩的,于是顺手搭建了一个,简单记录一下。
这是一个开源项目,代码在GitHub上,有比较全面的英文文档,搭建起来很容易,官网上对它是这样描述的:It is a self-hosted monitoring tool like "Uptime Robot".(不知道Uptime Robot是啥,查了一下就是个监控工具,和Uptime Kuma最大的区别就是Uptime Kuma可以self-hosted 自托管)
部署运行
Uptime Kuma支持docker部署,我采用的docker-compose的方式,编辑完yml文件直接启动就可以了。
# docker-compose.yml
version: '3.3'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:
- ./uptime-kuma-data:/app/data
- /var/run/docker.sock:/var/run/docker.sock # 映射Docker宿主
ports:
- 3001:3001 # <Host Port>:<Container Port>
restart: always
直接访问配置的端口号,打开后就可以使用了。官方预览图如下:
监控Docker容器
监控项中是可以监控Docker容器的,但是需要配置Docker 宿主,查阅文档后得知,By default, a docker container is self-contained, which means Uptime Kuma cannot access your host. You need to bind the /var/run/docker.sock
to your container. 将docker.sock
绑定到的容器有两种方法,一种Share docker.sock
with Uptime Kuma Container也是就与Uptime Kuma Container共享docker.sock
,所需要的操作就是在docker启动命令上,或docker-compose.yml加上参数。另一种是TCP - Bridge Mode,TCP桥接模式,需要在TCP 端口上公开 Docker 守护进程,有些麻烦,采用第一种方法,需要添加的参数如下:
Command argument:
-v /var/run/docker.sock:/var/run/docker.sock
docker-compose:
volumes:
- /var/run/docker.sock:/var/run/docker.sock
docker宿主配置完成后,就可以通过容器名称 / ID来监控Docker容器了。
反向代理
通过IP端口访问不方便,配置个域名,使用nginx反向代理一下,即可实现域名访问。反向代理配置如下:
With SSL:
server {
listen 443 ssl http2;
# Remove '#' in the next line to enable IPv6
# listen [::]:443 ssl http2;
server_name sub.domain.com;
ssl_certificate /path/to/ssl/cert/crt;
ssl_certificate_key /path/to/ssl/key/key;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://localhost:3001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Without SSL:
server {
listen 80;
# Remove '#' in the next line to enable IPv6
# listen [::]:80;
server_name sub.domain.com;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。