5 个版本 (重大变更)
新版本 0.8.0 | 2024 年 8 月 22 日 |
---|---|
0.7.0 | 2024 年 7 月 15 日 |
0.6.0 | 2024 年 4 月 28 日 |
0.5.0 | 2024 年 4 月 13 日 |
0.0.3 |
|
#271 in 命令行工具
每月 26 次下载
200KB
4.5K SLoC
AutoKuma 🐻
AutoKuma 是一个工具,可以根据 Docker 容器标签自动创建 Uptime Kuma 监视器。使用 AutoKuma,您可以在 Uptime Kuma UI 中消除手动创建监视器的需求。
如何安装 📦
支持的平台
平台 | 架构 | Docker 镜像 | 预构建的二进制文件 | 注意 |
---|---|---|---|---|
Windows | x64 | ⛔︎ | ✅ | |
Windows | arm64 | ⛔︎ | ⛔︎ | |
Linux | x64 | ✅ | ✅ | |
Linux | arm64 | ⚠️* | ⛔︎ | 实验性/仅发布构建 |
Mac | x64 | ⛔︎ | ⛔︎ | |
Mac | arm64 | ⛔︎ | ⚠️* | 实验性 |
为 windows、linux 和 mac 提供了二进制文件,可在 GitHub 发布 中找到,此外 AutoKuma 还可在 GitHub 容器注册表(GHCR) 上作为 Docker 容器使用。要安装,只需使用以下命令拉取容器:
最新发布版
docker pull ghcr.io/bigboot/autokuma:latest
开发版本
docker pull ghcr.io/bigboot/autokuma:master
❗ 开发版本可能存在破坏或不警告的破坏性更改,不建议在生产系统上使用。
示例 Docker Compose 🚀
以下是一个 docker-compose.yml
示例
version: '3'
services:
autokuma:
image: ghcr.io/bigboot/autokuma:latest
restart: unless-stopped
environment:
AUTOKUMA__KUMA__URL: http://localhost:3001
# AUTOKUMA__KUMA__USERNAME: <username>
# AUTOKUMA__KUMA__PASSWORD: <password>
# AUTOKUMA__KUMA__MFA_TOKEN: <token>
# AUTOKUMA__KUMA__HEADERS: "<header1_key>=<header1_value>,<header2_key>=<header2_value>,..."
# AUTOKUMA__KUMA__CALL_TIMEOUT: 5
# AUTOKUMA__KUMA__CONNECT_TIMEOUT: 5
# AUTOKUMA__TAG_NAME: AutoKuma
# AUTOKUMA__TAG_COLOR: "#42C0FB"
# AUTOKUMA__DEFAULT_SETTINGS: |-
# docker.docker_container: {{container_name}}
# http.max_redirects: 10
# *.max_retries: 3
# AUTOKUMA__SNIPPETS__WEB: |-
# {{container_name}}_http.http.name: {{container_name}} HTTP
# {{container_name}}_http.http.url: https://{{@0}}:{{@1}}
# {{container_name}}_docker.docker.name: {{container_name}} Docker
# {{container_name}}_docker.docker.docker_container: {{container_name}}
# AUTOKUMA__DOCKER__HOSTS: unix:///var/run/docker.sock
# AUTOKUMA__DOCKER__LABEL_PREFIX: kuma
volumes:
- /var/run/docker.sock:/var/run/docker.sock
配置 🔧
AutoKuma 可以使用以下环境变量/配置键进行配置
环境变量 | 配置键 | 描述 |
---|---|---|
AUTOKUMA__STATIC_MONITORS |
static_monitors |
AutoKuma 将在其中搜索静态监视器定义的文件夹路径 |
AUTOKUMA__TAG_NAME |
tag_name |
AutoKuma 标签的名称,用于跟踪管理的容器 |
AUTOKUMA__TAG_COLOR |
tag_color |
AutoKuma 标签的颜色 |
AUTOKUMA__DEFAULT_SETTINGS |
default_settings |
默认设置应用于所有生成的监视器,请参阅上面的示例了解语法 |
AUTOKUMA__LOG_DIR |
log_dir |
日志文件存储的目录路径 |
AUTOKUMA__ON_DELETE |
on_delete |
指定如果找不到 autokuma id 时监视器应如何处理,可以是 delete 或 keep |
AUTOKUMA__SNIPPETS__<SNIPPET> |
snippets.<snippet> |
定义一个名为 <snippet> 的代码片段,请参阅 代码片段 了解详细信息 |
AUTOKUMA__KUMA__URL |
kuma.url |
AutoKuma 应用于连接到 Uptime Kuma 的 URL |
AUTOKUMA__KUMA__USERNAME |
kuma.username |
登录 Uptime Kuma 的用户名(除非禁用身份验证,否则是必需的) |
AUTOKUMA__KUMA__PASSWORD |
kuma.password |
登录 Uptime Kuma 的密码(除非禁用身份验证,否则是必需的) |
AUTOKUMA__KUMA__MFA_TOKEN |
kuma.mfa_token |
登录 Uptime Kuma 的 MFA 令牌(如果启用了 MFA 则必需) |
AUTOKUMA__KUMA__HEADERS |
kuma.headers |
连接到 Uptime Kuma 时发送的 HTTP 头列表 |
AUTOKUMA__KUMA__CONNECT_TIMEOUT |
kuma.connect_timeout |
与 Uptime Kuma 的初始连接超时时间 |
AUTOKUMA__KUMA__CALL_TIMEOUT |
kuma.call_timeout |
对 Uptime Kuma 服务器执行调用时的超时时间 |
AUTOKUMA__DOCKER__HOSTS |
docker.hosts |
Docker 主机列表。使用分号分隔的字符串来设置使用环境变量。 |
AUTOKUMA__DOCKER__LABEL_PREFIX |
docker.label_prefix |
扫描容器标签时使用的前缀 |
AUTOKUMA__DOCKER__SOURCE |
docker.source |
监视器应从 container 或 service 标签(或 both )创建。 |
AUTOKUMA__DOCKER__TLS__VERIFY |
docker.tls.verify |
是否验证 TLS 证书。 |
AUTOKUMA__DOCKER__TLS__CERT |
docker.tls.cert |
PEM 格式自定义 TLS 证书的路径。 |
AutoKuma 将从当前目录以及以下位置读取配置文件,文件名为 autokuma.{toml,yaml,json}
平台 | 值 | 示例 |
---|---|---|
Linux | $XDG_CONFIG_HOME /autokuma/config.{toml,yaml,json} |
/home/alice/.config/autokuma/config.toml |
macOS | $HOME /Library/Application Support/autokuma/config.{toml,yaml,json} |
/Users/Alice/Library/Application Support/autokuma/config.toml |
Windows | %LocalAppData% \\autokuma\\config.{toml,yaml,json} |
C:\\Users\\Alice\\AppData\\Local\\autokuma\\config.toml |
以下是一个示例 .toml
配置
[kuma]
url = "http://localhost:3001/"
username = "<username>"
password = "<password>"
用法 💡
AutoKuma 以以下格式解释 Docker 容器标签
<prefix>.<id>.<type>.<setting>: <value>
<prefix>
: 默认为kuma
,除非使用DOCKER__LABEL_PREFIX
环境变量更改。<id>
: 监视器的唯一标识符(确保在所有监视器之间唯一)。<type>
:在 Uptime Kuma 中配置的监控器的类型。<setting>
:要设置的值的键。<value>
:选项的值。
标签根据 <id>
分组到一个监控器中。例如,要创建一个简单的 HTTP 监控器,请使用以下标签
kuma.example.http.name: "Example"
kuma.example.http.url: "https://example.com"
查看所有可用的监控器类型及其相应的设置:所有可用的监控器类型
AutoKuma 还提供创建和分配组的功能
kuma.mygroup.group.name: "This is a Group"
kuma.mymonitor.http.name: "This is a Monitor assigned to a Group"
kuma.mymonitor.http.parent_name: "mygroup"
kuma.mymonitor.http.url: "https://example.com"
AutoKuma 允许在标签和 片段 中使用 Tera 模板,以下变量可用
模板 | 描述 | 示例值 | |
---|---|---|---|
容器 | |||
container_id |
容器 ID | 92366941fb1f211c573c56d261f3b3e5302f354941f2aa295ae56d5781e97221 | |
image_id |
容器镜像的 Sha256 | sha256:c2e38600b252f147de1df1a5ca7964f9c8e8bace97111e56471a4a431639287a | |
image |
容器镜像名称 | ghcr.io/immich-app/immich-server:release | |
container_name |
容器名称 | immich-immich-1 | |
container |
包含容器详细信息的嵌套结构 | 有关可用数据的更多信息,请参阅 Docker 引擎文档 | |
服务 | |||
service |
包含服务详细信息的嵌套结构 | 有关可用数据的更多信息,请参阅 Docker 引擎文档 |
片段 📝
警告:片段目前是实验性的,将来可能会更改。
AutoKuma 提供了定义可重用片段的功能。片段需要在配置中定义,例如,使用环境变量
AUTOKUMA__SNIPPETS__WEB: |-
{{ container_name }}_http.http.name: {{ container_name }} HTTP
{{ container_name }}_http.http.url: https://{{ args[0] }}:{{ args[1] }}
{{ container_name }}_docker.docker.name: {{ container_name }} Docker
{{ container_name }}_docker.docker.docker_container: {{ container_name }}
或在等效的 TOML 配置文件中
[snippets]
web = '''
{{ container_name }}_http.http.name: {{ container_name }}
{{ container_name }}_http.http.url: https://{{ args[0] }}:{{ args[1] }}
{{ container_name }}_docker.docker.name: {{ container_name }}_docker
{{ container_name }}_docker.docker.docker_name: {{ container_name }}
'''
这些定义了一个名为 web
的片段。
片段可以有可变数量的参数,这些参数可以通过 {{ args[0] }}
、{{ args[1] }}
、{{ args[2] }}
等方式使用,如上所示。
要在容器上使用片段,请以以下格式分配标签
<prefix>.__<snippet>: <arguments>
例如,可以使用以下标签包含上述片段
kuma.__web: '"example.com", 443'
片段也使用 Tera,这允许使用一些相当高级的模板,以下是上述示例的扩展版本
{# Assign the first snippet arg to args to make access easier #}
{% set args = args[0] %}
{# Generate an autokuma id by slugifying the "name" arg #}
{% set id = args.name | slugify %}
{# if we have a "keyword" generate a "keyword" monitor, otherwise generate a "http" monitor #}
{% if args.keyword %}
{% set type = "keyword" %}
{% else %}
{% set type = "http" %}
{% endif %}
{# below are the actual lines which end up defining the monitor #}
{{ id }}-group.group.name: {{ args.name }}
{{ id }}-http.{{ type }}.name: {{ args.name }} (HTTP)
{{ id }}-http.{{ type }}.parent_name: {{ id }}-group
{{ id }}-http.{{ type }}.url: {{ args.url }}
{% if args.keyword %}
{{ id }}-http.{{ type }}.keyword: {{ args.keyword }}
{% endif %}
{% if args.status_code %}
{{ id }}-http.{{ type }}.status_code: {{ args.status_code }}
{% endif %}
{{ id }}-http-container.docker.name: {{ args.name }} (Container)
{{ id }}-http-container.docker.parent_name: {{ id }}-group
其用法如下:只是一个基本的 http 监控器
kuma.__web: '{ "name": "Example HTTP", "url": "https://example.com" }'
关键字监控器,具有自定义状态码
kuma.__web: '{ "name": "Example HTTP", "url": "https://example.com", "keyword": "Example Domain", "status_codes": ["200"] }'
静态监控器 📊
除了从 Docker 标签中读取监控器外,AutoKuma 还可以从文件中创建监控器。如果您希望 AutoKuma 管理与容器不直接相关的监控器,这可能很有用。
要创建静态监控器,只需在由 AUTOKUMA__STATIC_MONITORS
指定的目录中添加一个 .json 或 .toml 文件,请参考 此处示例。
静态监控器的默认目录为
平台 | 值 | 示例 |
---|---|---|
Linux | $XDG_CONFIG_HOME /autokuma/static-monitors/ |
/home/alice/.config/autokuma/static-monitors/ |
macOS | $HOME /Library/Application Support/autokuma/static-monitors/ |
/Users/Alice/Library/Application Support/autokuma/static-monitors/ |
Windows | %LocalAppData% \\autokuma\\static-monitors\\ |
C:\\Users\\Alice\\AppData\\Local\\autokuma\\static-monitors\\ |
在静态监控器的情况下,id 由文件名(不含扩展名)确定。
依赖项
~39–59MB
~1M SLoC