一提到监控大屏,那第一想法就是 grafana 对吧,各种样式图形都非常好看,而且支持各种数据源。而今天要分享的是一个更加轻量的监控大屏 monitoror/monitoror

有了它能帮你快读构建一个的对于网站或者应用的监控页面,特别是在小应用数量多的时候非常简单易用,作为一个大屏展示时它我觉得它足够简洁


demo & repo

https://demo.monitoror.com/

https://github.com/monitoror/monitoror

优点

  • 部署轻量
  • 配置简单
  • 大屏简洁

部署

二进制部署

https://monitoror.com/documentation/get-started/

非常简单,只需要将二进制文件下载,然后按照要求配置对应的配置文件,就可以了

1
2
chmod +x monitoror
./monitoror

配置文件.env

1
MO_CONFIG="./config.json"

配置文件config.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"version": "2.0",
"columns": 2,
"tiles": [
{
"type": "PORT",
"label": "Welcome config example",
"params": {
"hostname": "127.0.0.1",
"port": 8080
}
},
{
"type": "HTTP-RAW",
"label": "Monitoror stars",
"params": {
"url": "https://github.com/monitoror/monitoror",
"regex": "(\\d+) users starred"
}
}
]
}

k8s 部署

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
34
35
36
37
38
39
40
apiVersion: apps/v1
kind: Deployment
metadata:
name: monitoror
namespace: monitoror
labels:
app: monitoror
spec:
replicas: 1
selector:
matchLabels:
app: monitoror
template:
metadata:
labels:
app: monitoror
spec:
containers:
- name: monitoror
image: monitoror/monitoror:latest
env:
- name: MO_CONFIG
value: "/conf/monitoror.json"
volumeMounts:
- name: config-volume
mountPath: "/conf"
ports:
- name: web
containerPort: 32000
resources:
limits:
cpu: 100m
memory: 200Mi
volumes:
- name: config-volume
configMap:
name: monitoror-config
items:
- key: monitoror.json
path: monitoror.json

其中需要注意的就是配置文件 configmap 挂载的位置

还有环境变量 MO_CONFIG 需要指定对应的配置文件路径

配置

https://monitoror.com/documentation/#configuration

monitoror 的配置很简单

监控端口

只需要填入对应的地址和端口即可

1
2
3
4
5
6
7
8
{
"type": "PORT",
"label": "Welcome config example",
"params": {
"hostname": "127.0.0.1",
"port": 8080
}
}

监控HTTP

只需要填入对应的地址,然后还可以做简单的处理,还有可能监控对应的 http code 状态码

1
2
3
4
5
6
7
8
{
"type": "HTTP-RAW",
"label": "Monitoror stars",
"params": {
"url": "https://github.com/monitoror/monitoror",
"regex": "(\\d+) users starred"
}
}

多平台

https://monitoror.com/guides/

甚至可以将这个安装到树莓派上去,这个就很有意思了,因为轻量的关系,这个作为一个监控随便插到哪里,还蛮有意思的

总结

如果你需要最快速的搭建一个可用的监控大屏,或许这就是一个不错的选择;当然如果你需要更多的数据监控,需要一些流量数值等等还需要一些图表,那么或许它还没有那么强大。

后记

当前这个监控还没有通知模块,也就是说,也只能大屏盯着看,emmm…,这个还是有点小鸡肋的,因为确实不可能一直盯着看。当然已经有人提 issue 了,但是官方的 roadmap 里面还没有这个计划,于是我自己先加了一个钉钉的监控意思一下,这样至少能保证出现问题的时候有个反应提醒。比较隔壁的 grafana 做了那么久 alert 模块应该能直接抄过来吧。

dingding

地址:https://github.com/LinkinStars/monitoror/tree/add-notification

可以直接拿下来编译使用,注意需要配置:.env 文件

1
2
3
4
5
6
MO_CONFIG="./config.json"

# 钉钉的 webhook 地址
MO_MONITORABLE_DINGDING_WEBHOOK="https://oapi.dingtalk.com/robot/send?access_token=xxxxx"
# 钉钉的 secret 如果不配置 secret 使用 monitoror 关键字应该也可以
MO_MONITORABLE_DINGDING_SECRET="SECxxxxxx"

当前通知规则:

最大连续出错通知 3 次,超过这个次数不会继续通知,当服务恢复后计数清零,再次出现异常时会重新通知,同样是 3 次;(这个是临时设置的规则,等全部写完之后会抽离为配置或者调整为更加合适的规则)