monitoror/monitoror 最轻量的监控大屏

前言

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

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

image.png

demo & repo

https://demo.monitoror.com/

https://github.com/monitoror/monitoror

优点

  • 部署轻量

  • 配置简单

  • 大屏简洁

部署

二进制部署

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

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

chmod +x monitoror
./monitoror

配置文件.env

MO_CONFIG="./config.json"

配置文件config.json

{
  "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 部署

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 的配置很简单

监控端口

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

{
  "type": "PORT",
  "label": "Welcome config example",
  "params": {
    "hostname": "127.0.0.1",
    "port": 8080
  }
}

监控HTTP

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

{
  "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 文件

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 次;(这个是临时设置的规则,等全部写完之后会抽离为配置或者调整为更加合适的规则)

推荐阅读更多精彩内容