Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions docs/configuration.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -1116,10 +1116,13 @@ Endpoints de solo lectura:
- `GET /api/sessions` — sesiones SSH, tmux y screen actuales y estado de cada
origen configurado. Un origen SSH `partial` conserva cada sesión verificada
exactamente e informa cada terminal cuya ascendencia `sshd` no puede verificar
como incidencia no disponible sin acción de cierre; nunca lo suma como consola
local. Las filas exponen inactividad y, cuando son atribuibles, CPU, memoria
residente y tasas de IO del árbol de procesos; el inventario tmux y screen
sigue procediendo de muestras publicadas, no de ejecutar un cliente al leer HTTP.
como incidencia no disponible; nunca lo suma como consola local. En systemd,
una incidencia remota con líder utmp vivo puede cerrarse mediante login1 tras
revalidar la sesión exacta; no se señaliza ningún PID incierto. Las filas
exponen el PID separado del texto de sesión y, cuando son atribuibles,
inactividad, CPU, memoria residente y tasas de IO del árbol de procesos; el
inventario tmux y screen sigue procediendo de muestras publicadas, no de
ejecutar un cliente al leer HTTP.
- `GET /api/services/{name}/sla?since=24h` — historial de disponibilidad a la resolución
a la que esa ventana está almacenada (ver [Resolución del historial
almacenado](#resolución-del-historial-almacenado)); `since` es una duración, por
Expand Down
11 changes: 7 additions & 4 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -1075,10 +1075,13 @@ Read-only endpoints:
- `GET /api/sessions` — current SSH, tmux and screen sessions plus the state of
each configured session source. A `partial` SSH source keeps every exactly
verified session and reports each terminal whose `sshd` ancestry cannot be
verified as an unavailable issue without a close action; it never turns that
terminal into a local-console count. Rows expose idle time plus process-tree
CPU, resident memory and IO rates when attributable; tmux and screen inventory
still comes from published check samples rather than an HTTP-time client run.
verified as an unavailable issue; it never turns that terminal into a
local-console count. On systemd, a remote issue with a live utmp leader may be
closed through login1 after exact session revalidation; no uncertain PID is
signalled. Rows expose PID separately from the session text, plus idle time
and process-tree CPU, resident memory and IO rates when attributable; tmux and
screen inventory still comes from published check samples rather than an
HTTP-time client run.
- `GET /api/services/{name}/sla?since=24h` — availability history at the
resolution that window is stored at (see [Stored history
resolution](#stored-history-resolution)); `since` is a duration, default 24h,
Expand Down
5 changes: 4 additions & 1 deletion docs/rules.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -737,7 +737,10 @@ protegidas.
Este comportamiento de cierre seguro del check es independiente del inventario
del panel. El panel puede mostrar un origen `partial`: conserva las filas SSH
verificadas exactamente y expone cada terminal no verificable como una incidencia
no disponible y sin acción. Ese terminal no se cuenta como sesión de consola local.
no disponible. En systemd, una incidencia remota con líder utmp vivo solo puede
cerrarse mediante la identidad de sesión revalidada independientemente por
login1; Sermo nunca señaliza directamente ese PID incierto. Ese terminal no se
cuenta como sesión de consola local.

### Sesiones de terminal (`terminal_sessions`)

Expand Down
6 changes: 4 additions & 2 deletions docs/rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -724,8 +724,10 @@ assuming that no session is protected.

This fail-closed check behavior is independent from the dashboard inventory.
The dashboard may show a source as `partial`, retaining exactly verified SSH
rows while exposing each unverifiable terminal as an unavailable, non-actionable
issue. Such a terminal is not counted as a local console session.
rows while exposing each unverifiable terminal as an unavailable issue. On
systemd, a remote issue with a live utmp leader can be closed only through
login1's independently revalidated session identity; Sermo never signals that
uncertain PID directly. Such a terminal is not counted as a local console session.

### Terminal sessions (`terminal_sessions`)

Expand Down
6 changes: 5 additions & 1 deletion docs/safety.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,11 @@ terminal, PID de sesión y ticks de inicio del proceso. Si falta esa frontera, e
terminal cambió o el PID se recicló, se rechaza. Un cierre correcto envía un único `SIGTERM` al proceso de
sesión; nunca escala a `SIGKILL`.
Un terminal SSH cuya ascendencia no puede verificarse sigue visible como
incidencia no disponible, pero no ofrece acción de cierre ni aporta PID a la API.
incidencia no disponible. En systemd, una incidencia remota con un líder utmp
vivo también expone su PID y un cierre gestionado por login1. Esa vía no envía
señales al proceso incierto: justo antes de `TerminateSession` exige los ticks
de inicio sin cambios y un ID de sesión login1, PID líder, terminal,
`Remote=true` y `Service=sshd` exactos. Las demás incidencias siguen sin acción.

El check `terminal_sessions` es de solo observación: ejecuta una lista limitada
por argv de `tmux` o `screen` como la cuenta configurada explícitamente y no
Expand Down
6 changes: 5 additions & 1 deletion docs/safety.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,11 @@ Any missing boundary, changed terminal or recycled PID is rejected. A successful
close sends one `SIGTERM` to the per-session process; it never escalates to
`SIGKILL`.
An SSH terminal whose ancestry cannot be verified remains visible as an
unavailable issue, but has no close action and contributes no PID to the API.
unavailable issue. On systemd, a remote issue with a live utmp leader also
exposes its PID and a login1-managed close. That path sends no signal to the
uncertain process: immediately before `TerminateSession`, it requires unchanged
process start ticks plus an exact login1 session ID, leader PID, terminal,
`Remote=true` and `Service=sshd`. Other unavailable issues remain non-actionable.

The `terminal_sessions` check is observation-only. It runs a bounded,
argv-only `tmux` or `screen` listing as the explicitly configured account;
Expand Down
17 changes: 9 additions & 8 deletions docs/webui-representation.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ deterministas de la API.
| Flujo de cambios | `GET /api/stream` | canal Server-Sent Events que empuja una señal `change` sin payload con cada evento del daemon; el dashboard refresca de inmediato. Solo añade refrescos: el sondeo programado mantiene siempre la cadencia elegida en la barra superior, porque nada se empuja cuando cambia una muestra de métricas y las lecturas de host, servicios y watches dependen de ese sondeo |
| Disponibilidad | `GET /readyz?verbose` | `status:` del daemon en la barra superior (`starting` / `ok` / …) |
| Servicios | `GET /api/services` | servicios de runtime configurados cargados por sermod (no el inventario de catálogo de `sermoctl services`); `status_observed_at` identifica la muestra real de estado de init que hay detrás de una fila cacheada; `operation_active` es true mientras el motor mantiene el lock de operación del servicio, de modo que una acción lanzada desde cualquier cliente, `sermoctl` o la remediación automática se ve en curso y sus botones de acción siguen deshabilitados |
| Sesiones | `GET /api/sessions` | inventario global de SSH, tmux y screen; cada origen configurado presente informa `available`, `partial`, `collecting` o `unavailable`; un origen SSH parcial incluye sus sesiones verificadas y filas de incidencia no disponibles, sin acción, para los terminales que no pudieron atribuirse de forma segura; un servidor tmux disponible sin sesiones aparece como `empty`, mientras que un espacio tmux/screen ausente se omite; SSH usa la caché breve compartida del muestreador y tmux/screen solo leen muestras de `terminal_sessions` publicadas por el daemon |
| Sesiones | `GET /api/sessions` | inventario global de SSH, tmux y screen; cada origen configurado presente informa `available`, `partial`, `collecting` o `unavailable`; un origen SSH parcial incluye sesiones verificadas y filas de incidencia no disponibles para terminales que no pudieron atribuirse con seguridad; en systemd, una incidencia remota con líder utmp vivo puede ofrecer un cierre gestionado por login1; un servidor tmux disponible sin sesiones aparece como `empty`, mientras que un espacio tmux/screen ausente se omite; SSH usa la caché breve compartida del muestreador y tmux/screen solo leen muestras de `terminal_sessions` publicadas por el daemon |
| Expansión de servicio | `GET /api/services/{name}` | checks, información del proceso, reglas |
| Métricas de check del servicio | `GET /api/services/{name}/metrics?check=NAME[&metric=KEY]` | el detalle muestra la latencia cuando se omite `metric` y un gráfico por cada métrica numérica con nombre publicada por una comprobación |
| Métricas de runtime del servicio | `GET /api/services/{name}/runtime` | historial persistido de CPU/memoria/IO del servicio, de solo lectura y muestreado exclusivamente por ciclos del worker; `current` es la última muestra publicada y las lecturas del panel nunca repiten el descubrimiento de procesos |
Expand Down Expand Up @@ -179,7 +179,7 @@ con un cuerpo `{"ok": bool, "message": string}` para una acción atendida.
| --- | --- | --- |
| Acción de servicio | `POST /api/services/{name}/{action}[?no_cascade=1]` | `monitor`, `unmonitor`, `start`, `stop`, `restart`, `reload`, `resume`, `repair`; `restart` es la acción principal para servicios failed/inactive, mientras `repair` es una alternativa secundaria solo manual que usa la recuperación segura de pidfile obsoleto y estado fallido de init antes de arrancar; `reload` se ofrece solo cuando el servicio informa `can_reload` desde soporte de reload del backend de init o desde un fallback `reload:` válido; `no_cascade` omite los objetivos de `also_apply` en start/stop/restart |
| Preflight de servicio | `POST /api/services/{name}/preflight` | ejecuta las comprobaciones de preflight sin cambiar el estado del servicio |
| Cerrar sesión SSH | `POST /api/services/{name}/sessions/{pid}/close?start_ticks=TICKS&terminal=PTS` | solo admin y con confirmación: cierre elegante de un terminal SSH verificado; las filas de incidencia no disponibles nunca ofrecen esta acción; el backend redescubre el terminal, el ejecutable `sshd` configurado exacto y su usuario real, exige el mismo PID y ticks de inicio y solo envía `SIGTERM` |
| Cerrar sesión SSH | `POST /api/services/{name}/sessions/{pid}/close?start_ticks=TICKS&terminal=PTS[&managed_by_logind=true]` | solo admin y con confirmación. Las filas SSH verificadas redescubren el ejecutable `sshd` configurado exacto, usuario real, terminal, PID y ticks de inicio antes de un único `SIGTERM`. Una fila remota no disponible, solo en systemd, puede pedir la variante gestionada, que revalida la generación del proceso y el ID, PID líder, terminal, `Remote=true` y `Service=sshd` exactos de login1 antes de `TerminateSession`; nunca señaliza el PID incierto |
| Cerrar sesión de terminal | `POST /api/services/{name}/terminal-sessions/{check}/close?multiplexer=TYPE&session=NAME&user=USER&identity=IDENTITY` | solo admin y con confirmación: cierre de una sesión tmux/screen; el backend vuelve a listar el espacio configurado de usuario/socket, exige la misma identidad de generación y ejecuta únicamente el argv exacto de cierre del cliente |
| Cerrar servidor tmux vacío | `POST /api/services/{name}/terminal-sessions/{check}/close-empty` | solo admin y con confirmación; solo aparece para un origen tmux presente, vacío y con socket explícito configurado. El backend confirma que sigue vacío, ejecuta el argv exacto `kill-server` de tmux, verifica que el espacio desapareció y elimina solo el socket huérfano sin cambios que pueda quedar |
| Botón de operador | `POST /api/services/{name}/button/{button}` | solo-admin, tras confirmación; ejecuta el comando `buttons:` configurado del servicio exactamente como está escrito, acotado por su timeout, y registra un evento de acción con el resultado |
Expand Down Expand Up @@ -357,7 +357,8 @@ El panel superior Sessions combina terminales SSH interactivas con los espacios
de nombres configurados de tmux y GNU screen. La búsqueda cubre tipo, servicio,
usuario y sesión; los botones de tipo seleccionan SSH, tmux o screen. La tabla
muestra solo el usuario en la columna User y permite ordenar por tipo, usuario,
sesión, estado, idle, CPU, memoria o IO. El filtro de un tipo se oculta cuando no
sesión, PID, estado, idle, CPU, memoria o IO. El PID ocupa su propia columna y
no forma parte del texto de Sesión. El filtro de un tipo se oculta cuando no
hay sesiones activas de ese tipo, con el mismo comportamiento de filtros con
recuento que los demás paneles. Un origen sin sesiones solo gana fila
cuando tiene algo que decir: la espera de muestra y los errores de muestreo se
Expand All @@ -368,7 +369,7 @@ conectado — el de ssh ante todo — no dice nada y no renderiza fila; aparece
cuanto publique una sesión activa. Las filas atribuibles muestran idle y CPU,
memoria residente e IO de lectura/escritura del árbol de procesos. Un
administrador solo puede confirmar un cierre cuando el backend vuelve a validar
la identidad exacta de la sesión SSH o del multiplexor.
la identidad exacta de la sesión SSH, de systemd-login1 o del multiplexor.

Las expansiones abiertas de servicio obtienen y renderizan por completo detalle
fresco una vez por refresco del dashboard; las subpeticiones de SLA, métricas,
Expand Down Expand Up @@ -529,11 +530,11 @@ activity es un evento.
| Tipo de check | Columnas específicas |
| --- | --- |
| `storage` | Name, Usage, Filesystem, Mount point; filtra por filesystem si hay más de uno |
| `file` | Name, Path, edad actual, límite de edad configurado |
| `net` | Name, interfaz, enlace, velocidad, errores |
| `file` | Name, Path, edad, límite de edad configurado; si el check configura `summary`, conserva Age y sustituye el límite por Summary |
| `net` | Name, interfaz, driver, velocidad, direcciones IP asignadas, enlace, errores |
| `hdparm` | Name, dispositivo, bus, lectura buffered, lectura cached |
| `lvm` | Name, salud, VG, LV, tamaño de VG, libre en VG, motivos |
| `smart` | Name, dispositivo, bus, salud, modelo, número de serie, firmware, WWN, medio, capacidad, temperatura, sectores reasignados/pendientes, errores CRC de enlace y de medio, desgaste, tiempo encendido formateado, ciclos de encendido, último autotest |
| `smart` | Name, dispositivo, interfaz (bus del kernel), salud, temperatura, desgaste, sectores reasignados y tiempo encendido formateado; el desplegable incluye el resto de lecturas de identidad, salud y autotest |
| `diskio` | Name, dispositivo, bus, utilización, lectura, escritura, await, leído total, escrito total (acumulados desde el arranque, para distinguir un disco ocioso de uno que nadie toca nunca) |
| `cert` | Name, origen, días restantes, caducidad, emisor |
| `raid` | Name, array, tamaño, degradado, recuperando |
Expand Down Expand Up @@ -608,7 +609,7 @@ Expansión de fila:
| --- | --- |
| Config | tipo, categoría, intervalo, dispara (en fallo / en umbral), estado, flag de monitorización, hook, notifiers, dry run |
| Readings | lecturas actuales del host, seguidas de las condiciones y umbrales de la comprobación |
| Graphs | una gráfica por serie numérica que publica la comprobación, dibujada con el panel que recibe la métrica de una comprobación de servicio, sobre su propia ventana `1h/24h/7d/30d/1y`; una métrica de estado se dibuja como banda tipo disponibilidad en vez de línea, limitada a ámbar cuando su gravedad es warning; ausente cuando la comprobación no publica ningún número |
| Graphs | una gráfica por serie numérica que publica la comprobación, dibujada con el panel que recibe la métrica de una comprobación de servicio, sobre su propia ventana `1h/24h/7d/30d/1y`; una métrica de estado se dibuja como banda tipo disponibilidad en vez de línea, limitada a ámbar cuando su gravedad es warning; ausente cuando la comprobación no publica ningún número; SMART reduce la unión de métricas ATA/NVMe a los atributos observados para ese dispositivo (incluidos los últimos atributos conocidos conservados), por lo que un indicador no compatible no crea ni panel ni aviso de falta de datos |
| Availability | la sección de SLA del servicio, cuando la comprobación afirma disponibilidad; su ventana es independiente de la de Graphs, porque leen series distintas |
| Activity | eventos recientes del watch |
| Expand | acción de expansión de almacenamiento cuando está configurada |
Expand Down
Loading
Loading