监控远程网站
Este conteúdo não está disponível em sua língua ainda.
一个DumbMonit,几个网络。一个在远程网站安装的中继代理代表服务器运行你分配给它的监控项探针,并通过它已经用于推送自己指标的相同出站连接报告结果。在远程网站没有要打开的东西、没有VPN、没有第二个实例要查看。
总部 远程网站(NAT、防火墙)┌──────────────────┐ HTTPS、出站 ┌──────────────────────────────┐│ DumbMonit服务器 │◀────────────────│ 中继代理 ││ 调度器 │ 要运行的探针──▶ │ 运行SNMP/Proxmox/HTTP等 │──▶ 交换机、NAS、│ 警报、UI │◀── 样本、结论 │ 推送其自己的指标 │ 管理程序...└──────────────────┘ └──────────────────────────────┘1. 通过HTTPS发布服务器
Section titled “1. 通过HTTPS发布服务器”中继从服务器获取其作业:服务器必须从远程网站可到达,通常 https://monitor.example.org 在反向代理后。两件事在该链接上传导:
- 注册令牌 (
dmon_…),在每个请求的Authorization标头中——对任何代理如此; - 中继探针的监控项凭证(SNMP社区、Proxmox API令牌…),解密,在每个探针作业内。
Web 端口只接受 HTTPS,因此两者在途中都是加密的。在互联网上,请把服务器放在带公共证书的反向代理之后(它通过 HTTPS 连接 DumbMonit);在 LAN 或 VPN 上,自签名证书即可,并由所显示命令中的指纹固定。令牌是在你分配监控项给中继前唯一在途的密钥。凭证从不写到任何一方上的磁盘:探针作业生活在服务器的内存中直到中继报告它,代理在两个探针间保留无。
反向代理必须转发 /api/agent/relay 如 /api/ingest,允许请求体最多16MB(一个忙碌的管理程序报告数千样本),并保留闲置连接打开至少60秒:服务器持有中继请求最多25秒等待工作(长轮询)。
2. 创建注册令牌
Section titled “2. 创建注册令牌”添加一个监控项,选择安装了代理的服务器并勾选此代理是远程站点的中继(或打开添加页面的 Relay 入口)。为站点命名并创建令牌:令牌自带中继模式和站点,机器上无需修改任何内容。复制 dmon_… 值:它只显示一次;随后页面会等待第一次上报。
3. 在远程网站启动中继
Section titled “3. 在远程网站启动中继”任何在远程网站有Docker的机器,使用来自仓库的 docker-compose.agent.yml:
DUMBMONIT_AGENT_URL=https://monitor.example.org \DUMBMONIT_AGENT_TOKEN=dmon_… \DUMBMONIT_AGENT_HOSTNAME=relay-lyon \DUMBMONIT_AGENT_RELAY=true \DUMBMONIT_AGENT_SITE="Lyon office" \docker compose -f docker-compose.agent.yml up -d或用一行安装器安装的常规代理,在 /etc/dumbmonit/agent.yaml 中有两个额外的密钥:
relay: truesite: Lyon office机器在几秒内出现在DumbMonit中,作为常规代理监控项,其页面说中继·网站Lyon办公室·中继0监控项。代理的日志说中继模式启用:等待来自服务器的探针一旦其第一个批被接受。
4. 分配监控项给中继
Section titled “4. 分配监控项给中继”如常添加远程监控项——SNMP交换机、Proxmox节点、HTTP检查——用其地址如从远程网站看的 (192.168.10.1、https://pve.lan:8006)。在监控项表中,在更多选项下,设置通过…到达给中继代理而非直接。现有监控项可以以相同方式切换;切换回直接让服务器再次轮询它们。
从那时起:
- 服务器将探针排队给监控项在每个间隔;中继在几毫秒内取上它(它在服务器上等待工作),运行收集器并报告;
- 立即探针和监控项页面上的文件检测通过中继进行;
- 监控项的最后探针和错误跟随中继的结论。当中继没有及时取起一个探针时,监控项显示超时:中继代理…未取起探针——检查代理用
relay: true运行; - 代理的页面显示N个监控项的中继,
GET /api/relays列出中继及其网站和计数。
5. 在中继后安装代理
Section titled “5. 在中继后安装代理”防火墙后的站点常有一些服务器根本无法到达 DumbMonit:只有中继能出网。这些服务器仍然可以运行完整的代理(系统、磁盘、服务、容器、备份):它们连接到中继的网关,由中继把连接带到服务器。
remote site (only the relay goes out) head office ┌────────────┐ TLS 1.3, mTLS ┌──────────────┐ tunnel inside the ┌──────────────────┐ │ agent │═════════════════▶│ relay agent │═ relay's own mTLS ═▶│ DumbMonit server │ │ (server A) │ to the relay's │ gateway │ connection, TCP │ agent port 8443 │ └────────────┘ port 8443 └──────────────┘ 8443 outbound └──────────────────┘ └──────────── one TLS session, end to end, agent ⇄ server ─────────────┘在 DumbMonit 中添加一个监控项,选择安装了代理的服务器,并在机器如何到达此服务器?下选择通过 <中继>(站点)。填写站点访问中继所用的地址(IP 或本地名称)。显示的命令——Linux/macOS、Windows、Docker——随即指向中继的网关(--url=http://192.168.10.5:8443 --tls-url=https://192.168.10.5:8443),并且仍带有服务器证书颁发机构的指纹。接着流程会等待第一次连接,让你不离开页面就为机器命名、放入文件夹并归到某个站点。从按站点添加中的某个站点进入时,安装了代理的服务器会预选该站点的中继;中继自己的页面上有通过它安装代理。
为某次安装选择中继,会请它在下次上报时打开网关(默认端口 8443)。中继页面的 Relay 面板显示网关——正在监听端口 8443 — 已连接 3 个代理——并允许修改端口和地址,或关闭网关。在中继自身的防火墙上开放该端口,仅对站点网络开放。对于 Docker 中继,发布该端口(-p 8443:8443,或 docker-compose.agent.yml 中被注释的 ports:)。中继 agent.yaml 中的 gateway_listen: 0.0.0.0:9443(DUMBMONIT_AGENT_GATEWAY_LISTEN)优先于界面中的设置。
经由中继传输的内容:
- 代理的加密通道,原封不动。中继识别 TLS ClientHello,并把字节双向复制到一条隧道中,这条隧道是它以自己的客户端证书连到服务器代理端口的(在
/api/agent/relay/tunnel上的 HTTP 升级)。随后服务器与站点的代理进行 TLS 1.3 握手,就像代理直接连接一样:代理的客户端证书、固定的证书颁发机构、令牌和绑定密钥都由服务器端到端校验。注册也走同一条路。 - 安装程序和二进制文件,由中继通过自己的通道从服务器获取,并在同一端口提供(仅
/install.sh、/install.ps1、/download/<文件>)。安装命令带有每个二进制文件的 SHA-256:脚本会拒绝其他任何文件。
服务器会为每个代理记录它经由的中继。代理页面显示经由中继 … 到达此服务器;拓扑图把中继画成它的父节点;中继宕机时,其后的代理显示为被该中继 suppressed,而不是许多独立的故障。代理之后若改为直连(或经由另一个中继),会在下次上报时更新。
Active Directory 套件提供同样的选择:在 Route 下选择中继,域中的服务器就会从它下载代理并经由它上报。
警报当中继断掉
Section titled “警报当中继断掉”一个停止讲话的中继带上其监控项:它们的探针停止,它们都会立即成为无法到达。中继被对待作为每个监控项的父级它探针(除了你可能已设置的父级):当中继本身无法到达时,其监控项的警报显示为 suppressed 有 suppressed_by = 中继,只有一个通知出去——对中继。你明确设置的父级保留其角色并赢当两者断掉。
- 每个监控项一个中继。由中继探针的监控项也不被服务器探针。
- 代理类型的监控项从不经由中继探测(它们自己推送指标);但代理可以经由中继的网关连接(见上文)。中继总是直连:不存在中继后面再接中继。
- 中继的网关默认同时接受 64 个连接,每条隧道每个方向 4 MiB/s(
gateway_max_connections、gateway_rate_kib);服务器每个中继接受 256 条隧道。 - 中继最多同时运行8个探针;一个探针由服务器的探针超时绑定 (
DUMBMONIT_PROBE_TIMEOUT_SECS),在代理上覆盖最多120秒。 - 一个中继代理需要编译中的收集器:比该功能更旧的代理忽略
relay: true,服务器报告其探针超时。用当前二进制或镜像重新安装。