Kener:现代且功能丰富的状态页系统

我们之前有介绍过两个状态监控系统:Grafana、Beszel,然而这两个都是同样的 Hub / Agent 结构,被监控节点需要安装 Agent 才能收集数据。但是还有一种场景是,你部署了一个应用服务,而且你只是想知道这个服务的可用状态,此时可能只是一个简单的 Ping 就能解决问题。本文将要介绍的 Kener 就是这样一种无 Agent 监控系统。

Kener 简介

先导文中说道,Kener 是一个无 Agent 监控系统,目前这类监控系统使用的更多的是 UptimeKuma,当然对 UptimeKuma 的介绍基本满大街都是,而且它被使用的多的理由也很简单:原生中文支持、操作极其简单、支持的监控方式多、支持自定义监控页。那我这样说的情况下你应该能猜到 Kener 在中文社区无人问津的巨大原因:没有中文。

那么为什么我还会写文章介绍它呢,因为相比 UptimeKuma:

  • Kener 的自定义能力更强,主题可选样式更多、监控状态更多、事件管理可选更多状态......

  • Kener SEO 能力更强,支持更多 Analytics 服务

  • Kener 支持事件订阅,且可以控制能够订阅的事件种类

那么缺点呢?

  • Kener 只能有一个状态页(相比 Uptime Kuma 最大的缺点)

  • 状态页可支持多语言,但管理面板仅限英文

  • 不支持添加 Docker 宿主机来监控单独容器状态

  • 没有第三方插件支持,不能通过插件拓展能力

所以基本上只有在你不需要多状态页、不喜欢 UptimeKuma 的界面样式的时候,可以考虑使用 Kener。

Kener 部署

你可以使用以下编排文件来部署 Kener:

services:
  kener-app:
    container_name: kener-app
    depends_on:
      kener-db:
        condition: service_healthy
    environment:
      TZ: Asia/Shanghai
      DATABASE_URL: postgresql://postgres:postgres@kener-db:5432/postgres
      KENER_SECRET_KEY: __请随机生成一串字符串作为密钥替换此处__ # 请务必保持此值私密
      ORIGIN: __主机IP/域名__ # 比如 http://192.168.10.10:3000 或 https://example.com
    image: rajnandan1/kener:alpine
    ports:
      - 3000:3000
    restart: unless-stopped
    volumes:
      - ./data/uploads:/app/uploads

  kener-db:
    container_name: kener-db
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      start_period: 30s
      interval: 10s
      timeout: 5s
      retries: 3
    image: postgres:17-alpine
    restart: unless-stopped
    volumes:
      - ./data/db:/var/lib/postgresql/data

启动容器编排后,在 http://<Server-IP>:3000 即可访问 Kener 状态页:

状态页

Kener 使用

初始化管理员账户

在 Kener 状态页,点击右上角的“Setup Kener”可以进入登录页,由于我们还没有初始化账户,所以在登录页随便输入任何用户名和密码点击“Sign In”就可以进入管理员初始化页面:

管理员初始化

在这个页面中,输入你的管理员名称、邮箱和密码,点击“Let's Go”即可完成账户初始化。

站点设置

当你完成账户初始化后,你转到的第一个页面是站点设置页:

站点设置

这里设置的是你的站点基本信息:

  • Site Title:站点标题,控制你的站点在浏览器标签页上显示的标题

  • Site Name:站点名,控制状态页左上角展示的名称

  • Site URL:站点 URL,主要用于 SEO,首页不展示

  • Home Location:点击导航栏中的 Logo 时跳转的链接

  • Logo / Favicon:分别控制状态页左上角和浏览器 Tab 中的图标

同时,在左侧,你可以看到 Kener 全部功能的入口,它们分别是:

  • Site:站点基础信息设置

  • SEO:SEO 服务配置

  • Home:站点首页配置,主要调整站点首页 Banner、导航栏等基本结构样式

  • Theme:主题配置,主要调整监控项如何展示

  • Monitors:监控项设置

  • Triggers:消息通知服务设置

  • Alerts:历史警告消息查看列表

  • Events:事件管理

  • Badges:自定义徽章配置

  • API Keys:API 服务密钥管理

  • Users:系统用户管理

  • Subscription:消息订阅管理

  • Profile:当前用户的档案管理

其中,Site / Home / Theme 共同决定了 Kener 状态页的最终展示样式,它们之间的关系大抵如下:

页面配置功能分划

其中,橙色部分为 Site 配置,绿色部分为 Home 配置,蓝色部分为 Theme 配置。

监控项配置

点击侧边 Monitor 即可进行监控项配置:

监控项列表

默认打开的是监控项列表页,每一个监控项的右上角为相关操作,它们分别是:

  • Test Monitor:手动给定数据刷新监控面板用于测试

  • 铃铛图标:警报规则设定

  • 数据库图标:手动新增监控数据

  • 新建页图标:打开一个包含此单一监控项的状态页

  • 齿轮图标:监控项配置

点击已有监控项的齿轮图标,或者点击监控项页面右上角的“Add Monitor”均可打开监控项编辑页:

监控项配置

你可以在“Monitor Type”处调整你的监控项类型,这里与 UptimeKuma 不同的是,部分监控项比如 Ping、TCP、SSL 等除了预定义的配置项以外,还支持你直接修改判断源码来实现更强大的自定义监控,代码为 Javascript 编写,只需要按需修改底部的代码区域后点击“Save”保存即可。

另外一个不同是“Day Degraded Minimum Count”,此项用于配置每天检查多少次失败后更改服务状态为 Degraded(降级),相当于在常见的 Up / Down 状态外新增了一个中间状态 Degraded。

另外,与 UptimeKuma 相同,监控项的分组也是需要点击“Add Monitor”,并将“Monitor Type”改为“GROUP”才能创建分组。

监控项分组

但是不同的是,此处由于 Kener 只能有一个状态页,如果你需要监控某些服务但是不希望它展示在状态页上的话,你必须通过创建组并按照上图中勾选“Hide Grouped Monitors from Home View”才能实现隐藏监控项。

在监控项列表页,点击每个监控项上的铃铛图标,可以设置警报规则:

警报规则配置

你可以在此设定当服务 Down(离线)或是 Degraded(降级)时对你发出警报,此功能生效的前提是需要配置好 Trigger 中的通知服务。

事件管理

点击侧边的“Events”可以打开事件管理页:

事件列表

在这里点击右上角的“New Event”可以创建事件:

事件创建编辑

在这个页面里,最顶端可以选择是“Incident”(事件)还是“Maintenance”(维护),维护是与 UptimeKuma 一致的定义,在维护期间内选定的服务异常不会被处理。不同的是 Kener 多了一个事件类型,你可以通过此类型创建一个可更新的事件,此事件会用特殊方式展示在状态页上:

事件创建

事件随着调查的深入状态会发生变化,在事件管理页,点击对应事件末尾的“Update”可以更新事件状态:

事件更新编辑

你可以在中间选择事件的状态,并且附上一段备注用来更新当前事件进展到什么步骤,点击“Add Comment”可以更新事件状态:

事件更新

对应的,当你的事件解决完成后,会在状态页展示完整的事件回顾:

事件解决

要删除历史的某个事件,在事件列表页删除对应记录即可。

其他功能

当然本文并未完全介绍全部功能,比如“Subscription”会在你的状态页添加一个消息订阅按钮,可以让访客订阅你的服务器状态;“Badges”可以将任何监控项转换成一个小状态徽章。

但是这些功能都非常简单,就像上文介绍的站点设置和监控项配置一样,如果你需要的话自部署后稍作探索即可掌握。而本文至此只是对 Kaner 进行基础介绍,如果它符合你的需求,你可以试试部署一个玩一下,体验下不一样的状态页。


Kener:现代且功能丰富的状态页系统
https://blog.tihus.com/archives/591fbd22-ac23-40f7-bf68-67bca0828e04
作者
Yuki
发布于
2025年05月09日
许可协议