domino_admin_toolkit.analyzers.container_restarts module
Container restart severity classification.
Restart count is not a verdict: the same counter increments for a rollout SIGTERM, a recovered app error, an OOM kill, and a container that never started. Severity is instead recent frequency x termination reason x current readiness x namespace class.
Deliberately absent: any threshold on the lifetime restart count. Treating an old cumulative count as an incident is what made the previous generation of this check fail everywhere.
- pydantic model domino_admin_toolkit.analyzers.container_restarts.ComputeRestartConcentrationAnalyzer
Bases:
DataFrameAnalyzerBaseEscalates compute restarts to FAIL when they look like a shared fault.
One workload dying repeatedly is that customer’s bug. Several independent workloads dying the same forcible death on one node is a property of the node. Deeper node analysis belongs to test_node_oom_kills / test_nodes_with_container_errors.
- Fields:
- analyze(data)
Analyzes the full DataFrame and returns a list of CheckResult instances.
- Return type:
- Args:
data: The full DataFrame. Called once per
check_df()invocation.- Returns:
List[CheckResult]: A list containing the results of the analysis.
- Raises:
NotImplementedError: If this method is not implemented by subclasses.
- name: ClassVar[str] = 'ComputeRestartConcentrationAnalyzer'
- pydantic model domino_admin_toolkit.analyzers.container_restarts.ContainerRestartAnalyzer
Bases:
AnalyzerBase[ContainerRestartRow]Classifies one container’s restart history into a severity tier.
Compute rows never FAIL here — a customer workload crashing is not platform degradation. Escalation back to FAIL belongs to
ComputeRestartConcentrationAnalyzer.- Fields:
- analyze(data)
Analyzes one row and returns a list of CheckResult instances.
- Return type:
- Args:
data: One row dict (
TRow). The Runner calls this once per DataFrame row.- Returns:
List[CheckResult]: A list containing the results of the analysis.
- Raises:
NotImplementedError: If this method is not implemented by subclasses.
- name: ClassVar[str] = 'ContainerRestartAnalyzer'
- class domino_admin_toolkit.analyzers.container_restarts.ContainerRestartRow
Bases:
TypedDictOne container’s restart history, post-pandas coercion.
restarts_24his NaN — never 0 — when Prometheus reported no rate.last_finished_within_lookbackis derived in the collector to keep this module free of wall-clock dependencies.
- pydantic model domino_admin_toolkit.analyzers.container_restarts.ContainerRestartSignalAvailability
Bases:
DataFrameAnalyzerBaseNamespace-wide guard: does every container that restarted have a 24h restart count?
A row without one is judged on recency and readiness alone, so its missing FAIL is not an all-clear. That is the only case worth an admin’s attention. Where the count came from (Prometheus, or the pod’s own restart count when it is younger than the window) does not change what the admin should do, so it is not surfaced here. Prometheus’ own health, and whether it scrapes kube-state-metrics, is for the Prometheus checks to report.
Checked once, not per row — a per-row ERROR would produce hundreds of identical results.
- Fields:
- analyze(data)
Analyzes the full DataFrame and returns a list of CheckResult instances.
- Return type:
- Args:
data: The full DataFrame. Called once per
check_df()invocation.- Returns:
List[CheckResult]: A list containing the results of the analysis.
- Raises:
NotImplementedError: If this method is not implemented by subclasses.
- name: ClassVar[str] = 'ContainerRestartSignalAvailability'