跳到正文

命令行 ​

Beacon 有三个二进制。beacon 是服务本身,以及运行和治理它的命令;beacon-probe 是跑在每个检测点上的探针 Agent;beacon-oncall 是 Beacon 唤醒 Agent 时所用参考执行器。三个都认 version(版本、提交和构建)和 help(完整用法)。

beacon ​

serve 运行服务。其余命令都通过管理套接字与运行中的服务通信,套接字在数据目录里,默认 /var/lib/beacon,也可用 BEACON_DATA_DIR 指定,因此要在容器里执行:

bash
docker exec beacon beacon token list
命令作用
serve运行服务:控制台、API 与 MCP、路由器与桥、网关和 SSH 通道。取 -config(默认 /etc/beacon/config.yaml),并在 SIGHUP 时重新导入它指名的目录、目标和模块文件;见 config.yaml
check-config校验配置文件、它指名的文件和数据库里的配置,不启动。取 -config
config数据库里的配置:import、export、history、revert
setup打印建立第一个成员(所有者)的一次性链接,30 分钟内有效
user成员:list、invite、disable、enable、role、reset
agent某个成员名下的 Agent:add、list、remove
token凭据:create、list、revoke、ssh-key、machines、claim
machine机器:add、connector、list、remove、ca
sshSSH 通道:pause、resume、status
enroll机器的网关令牌:probe、host 或 heartbeat
silence静默:create、list、expire
drill演练一次故障:fail、off、status
healthcheck服务应答则退出码为 0;镜像的健康检查。取 -url(默认 http://127.0.0.1:17001/healthz)
version版本、提交和构建
help完整用法,含角色、预设和 scope

beacon config ​

目录、检测目标和模块放在数据库里(检测一个服务);这些命令把它们作为一个带版本的变更修改。import 读 DIR/catalog、DIR/targets 和 DIR/targets/modules.yml,也就是 export 写出的布局。

子命令参数作用
import DIR-dry-run、-note把 DIR 下的文件作为一次变更设为目录、目标和模块。-dry-run 只说会改什么,不改动;-note 写明原因,随变更保存并显示在告警群
export DIR把配置按同样布局写到该目录,并删除配置里已不存在的文件
history-limit变更列表:版本、时间、谁、途径、动作、备注。-limit(默认 20)定条数
revert VERSION-note回到 history 里的某个版本

beacon setup, user, agent ​

成员自己的账号和他们的 Agent(邀请你的团队)。一次性链接和令牌明文只在标准输出打印一次;其余内容都走标准错误输出。setup 打印建立第一个成员(所有者)的一次性链接,只可用一次,30 分钟内有效。

beacon user —— 成员:

子命令参数作用
list成员、角色和 Agent,以及尚未使用的邀请
invite-role、-note一个加入某个角色的一次性链接。-role 取 viewer、oncall、operator、owner 之一;-note 写明给谁
disable NAME、enable NAME停用或恢复某人的登录
role NAME ROLE改角色;其会话和 Agent 随即跟上
reset NAME选择新密码的一次性链接;其登录随即全部结束

beacon agent —— 成员名下的 Agent:

子命令参数作用
add NAME-owner、-preset、-scopes、-machines、-expires、-ssh-key建一个成员的 Agent 和它的第一枚令牌,并打印使用它的命令片段。-owner 指名所有者;-preset 取 readonly、oncall 或 operator,即所有者角色所允许的最强预设;-scopes 用自定义 scope 代替预设;-machines 限定它能到达的机器;-expires(默认 365d);-ssh-key 加一把通道用的公钥,可直接给钥匙或 @FILE
list每个 Agent:所有者、预设、可做什么、机器、令牌、OAuth 登录、密钥
remove NAME删除一个 Agent,连同它的令牌、OAuth 登录和密钥

beacon token ​

按名字给 scope 的凭据,给机器和专家用;Agent 的令牌来自 beacon agent 或控制台。新令牌的明文只在标准输出打印一次。

子命令参数作用
create NAME-scopes、-expires、-ssh-key、-machines建一枚令牌。-scopes(默认 status:read),逗号分隔;-expires(默认 365d);-ssh-key 一把通道用的公钥,可直接给钥匙或 @FILE;-machines 它能到达的机器,缺省为全部
list每枚令牌:scope、到期、寿命、续期时间、谁建的
revoke NAME立即作废一枚令牌
ssh-key NAME add KEY给令牌加一把公钥(@FILE 从文件读)
ssh-key NAME remove FINGERPRINT删除令牌的一把密钥
machines NAME a,b令牌经通道能到达的机器;all 为全部
claim NAME-owner、-agent、-preset把一枚旧式令牌归为某个成员的 Agent。-owner 指名所有者;-agent 指名 Agent(默认用令牌自己的名字);-preset 取 readonly、oncall、operator 或 custom(保留原 scope)

beacon machine, ssh ​

机器和 SSH 通道(给 Agent 一台机器)。add 会打印机器一侧需要做的配置。

beacon machine:

子命令参数作用
add NAME HOST[:PORT]-user、-critical、-note、-replace、-key、-host-key固定机器的 host key 并按地址到达它。-user 是机器上的账号(默认 beacon);-critical 标记为关键机器;-note 写明它是什么;-replace 重新固定已添加机器的 host key
add NAME connector同上NAT 后的机器,用 ssh -R 向外连到 Beacon;-key 是它外连用的公钥,-host-key 它的 host key(缺省在首次连接时学习)
connector NAME-key设置或更换连接器机器外连用的密钥
list每台机器:地址、账号、host key、连接器是否在线
remove NAME删除一台机器
ca机器信任的 CA 公钥(TrustedUserCAKeys)

beacon ssh —— 掣动机器访问的刹车:

子命令作用
pause立即停止 Agent 对所有机器的访问;除每台机器自己的访问控制外唯一的刹车
resume恢复访问
status通道是否开启、自何时暂停、它的 host key

beacon enroll, silence, drill ​

beacon enroll —— 机器的网关令牌,单独且只打印一次到标准输出,部署脚本可以直接传给机器:

子命令参数作用
probe NAME-rotate检测点的令牌,带推送结果和拉取检测任务的 scope
host NAME-rotate主机的令牌,推送它自己的指标
heartbeat NAME-rotate任务的令牌,推送心跳

-rotate 替换已注册机器的令牌。

beacon silence:

子命令参数作用
create-matchers、-alert、-duration、-comment不再通知带指定标签的告警:-matchers 写成 alertname=X,service=Y,或 -alert 给告警组的 id。-duration(至多 24h)和 -comment 必填
list生效和待生效的静默,先结束的在前
expire ID立即结束一条静默,它盖住的告警恢复通知

beacon drill —— 演练一次故障(演练一次故障):

子命令作用
fail 15m让 /drill/healthz 在这段时间内应答 503,看告警是否如实触发
off结束演练
status是否在演练、到何时

beacon-probe ​

探针 Agent(检测点位置)。模块在 password_file 里指名的文件只从 -secrets-dir(默认 /etc/beacon-probe/secrets)按文件名读取;模块写了路径会被拒绝。

子命令参数作用
agent-gateway、-token-file、-state、-interval、-textfile、-proc、-listen、-secrets-dir推送模式:从网关(-gateway)拉取目标和模块,每 -interval(默认 1m)检测一轮并推送结果,-state(默认 /var/lib/beacon-probe)里的磁盘队列在网关够不着时排队。-token-file(默认 /etc/beacon-probe/token)存 beacon enroll probe 发的令牌。-textfile(默认 /var/lib/beacon-probe/textfile)读 *.prom 文件即心跳;-proc(默认 /proc)采集主机自身指标;-listen(默认 127.0.0.1:17009,留空关闭)上提供 /healthz 和 /metrics 供手工查看
serve-listen、-modules、-textfile、-proc、-secrets-dir拉取模式,像 Blackbox Exporter:给抓取方应答 /probe 和 /metrics。-modules(默认 /etc/beacon-probe/modules.yml)在 SIGHUP 时重载
check-modules校验模块文件,按中心导入时的同样规则
run MODULE TARGET-modules、-secrets-dir检测一次并打印结果
version版本、提交和构建

beacon-oncall ​

跑在 Agent 机器上的参考执行器(被 webhook 唤醒的 Agent):接下 Beacon 签名的 webhook,立刻应答,然后通过 /bin/sh -c 启动 -run 指名的程序,把负载放在标准输入、告警放进 BEACON_* 环境变量。执行器不做任何决定;程序自己决定。

参数默认值作用
-listen:17007接收 Beacon webhook 的地址
-secret-file必填存 hook 密钥的文件,与 Beacon 一侧的 secret_file 相同
-run必填处理 firing 事件的程序
-run-resolved无处理 resolved 事件的程序;不设则只确认、不运行
-concurrency2同时运行的程序数;其余排队。至多 32
-timeout30m超时后杀死程序的整个进程组
-log-dir/var/lib/beacon-oncall/logs每次运行的输出,文件名 <time>-<delivery>.log
-keep720h超过此时长的日志被清除;0 全部保留

beacon-oncall version 打印版本、提交和构建。Claude Code 与 Codex 的包装脚本和运行它的 unit 在仓库的 contrib/oncall 里。