{% extends "base.html" %} {% from "_monitoring_widgets.html" import context_help, normalized_widget with context %} {% block content %} {% set check_state_badges = {"ok": "status-success", "warning": "status-warning", "high": "status-warning", "critical": "status-danger", "down": "status-danger", "error": "status-danger", "affected": "status-warning", "unknown": "status-warning", "no_checks": "status-neutral"} %} {% set capability_state_badges = {"supported_active": "status-success", "not_collected": "status-warning", "supported_not_configured": "status-neutral", "unsupported": "status-neutral"} %} {% macro observation_list(observations) %} {% endmacro %} {% macro topology_resource_group(branch, group) %}

{{ group.label }}

{% if group.partially_collected %}Partial{% elif group.id == "traffic" and group.collected_asset_count %}Cumulative totals{% elif group.collected %}Observed{% else %}Not collected{% endif %}
{% if group.id == "traffic" %}

{{ group.collected_asset_count }} active · {{ group.observed_interface_count }} observed interfaces

{{ group.nonzero_total_count }} non-zero · {{ group.zero_total_count }} all-zero cumulative RX/TX pairs

{% else %}

{{ group.collected_asset_count }} of {{ group.asset_count }} assets observed

{{ group.observation_count }} latest values

{% endif %}
View complete {{ group.label }} detail
{% for asset_state in group.asset_states %}
{{ asset_state.name }}{% if group.id == "traffic" %}{{ asset_state.state }}{% endif %}
{% if group.id == "traffic" and asset_state.widget %}{{ normalized_widget(asset_state.widget, asset_state.id ~ '-router-traffic-widget-title', (branch.id|urlencode) ~ '|' ~ (group.id|urlencode) ~ '|' ~ (asset_state.id|urlencode)) }}{% elif asset_state.collected %}{{ observation_list(asset_state.observations) }}{% else %}

{{ asset_state.state_description if group.id == "traffic" else 'Not collected' }}

{% endif %}
{% endfor %}
{% endmacro %}

Live monitoring

Operations overview

Current estate, topology branch, alert, and observation status.

Browse inventory
{% call context_help("How to use Operations") %}

Start with overall health and current alerts, then use the asset and topology summaries to locate attention. Complete check observations remain available in the check details disclosure below.

{% endcall %} {% macro estate_summary() %}

Estate summary

{{ snapshot.estate.attention_message }}

{{ snapshot.estate.attention_label }}

Active assets

{{ snapshot.estate.asset_count }}

Across {{ snapshot.estate.topology_root_count }} topology roots

Active locations

{{ snapshot.estate.location_count }}

Physical inventory locations

Enabled checks

{{ snapshot.estate.enabled_check_count }}

{{ snapshot.estate.observed_check_count }} with current observations · {{ snapshot.estate.not_collected_check_count }} not collected

Checks by state

{% if snapshot.estate.enabled_check_count %}{% for state, count in snapshot.estate.check_state_counts.items() %}{% if count %}{{ state }} {{ count }}{% endif %}{% endfor %}{% else %}No enabled checks{% endif %}

Stale observations

{{ snapshot.estate.stale_check_count }}

Age exceeds the check interval × 2

Current alerts

{{ snapshot.estate.current_alert_count }}

Read-only unacknowledged alerts

{% endmacro %} {% macro root_causes() %}

Attention required

What is affected, whether it is an operational fault or monitoring issue, and what action is required.

{% for root in snapshot.root_causes %}

{{ root.title }} — {{ root.state_label }}

{{ root.classification_label }}

{{ root.reason }}

First seen {{ root.first_seen_display }}Last seen {{ root.last_seen_display }}{{ root.affected_count }} affected dependents

Action: {{ root.action }} Open Asset monitoring

Technical details

Check ID: {{ root.check_id }}

Raw state: {{ root.state }}

{% endfor %}
{% endmacro %} {% macro operational_groups() %}

Check coverage by asset

Attention-first grouping from enabled checks and their current server-derived state.

{{ snapshot.operational_groups|length }} assets
{% for group in snapshot.operational_groups %}

{% if group.asset_href %}{{ group.asset_name }}{% else %}{{ group.asset_name }}{% endif %}

{% if group.application_service_state_label %}{% endif %}
{{ group.attention_label }}

{{ group.attention_message }}

Technical details

Asset ID: {{ group.asset_id }}

Raw rollup state: {{ group.state }}

{% else %}

No active checks

There are no active checks in this view.

{% endfor %}
{% endmacro %} {% macro topology_branches() %}

Topology branches

Worst child wins
{% for branch in snapshot.topology_branches %}

{{ branch.name }}

{{ 'No checks' if branch.state == 'no_checks' else branch.state }}
{% for group in branch.resource_groups %}{{ topology_resource_group(branch, group) }}{% endfor %}
{% if branch.unavailable_resource_groups %}
Show unavailable capabilities ({{ branch.unavailable_resource_groups|length }})
    {% for group in branch.unavailable_resource_groups %}
  • {{ group.label }}{{ group.message }}
  • {% endfor %}
{% endif %}
{% else %}

No topology branches

Active root assets will appear after registry activation.

{% endfor %}
{% endmacro %} {% macro current_alerts() %}

Current alerts

{{ snapshot.current_alerts|length }} total
{% for alert in snapshot.current_alerts %}

{{ alert.attention.title }}

{{ alert.attention.label }}

{{ alert.attention.state_label }}. {{ alert.attention.reason }}

Open Asset monitoring

Technical details

Severity: {{ alert.severity }} · Raw state: {{ alert.current_state }}

Check ID: {{ alert.check_id }}

{% else %}

No current alerts

No unacknowledged, unrecovered alerts exist for enabled checks in this view.

{% endfor %}
{% endmacro %} {% macro ecosystems() %}

Ecosystems

{{ snapshot.ecosystems|length }} total
{% if snapshot.ecosystems %}
{% for ecosystem in snapshot.ecosystems %}

{{ ecosystem.name }}

{{ ecosystem.lifecycle }}

{{ ecosystem.timezone }}

{% endfor %}
{% else %}

Your infrastructure starts here

Create your first ecosystem, then add your own locations and assets.

Create infrastructure
{% endif %}
{% endmacro %} {% macro check_details() %}
Complete check detailsAll enabled checks and latest observations{{ snapshot.checks|length }} total
{% for check in snapshot.checks %}

{{ check.name }}

{% if check.asset_href %}{% else %}{% endif %}
{{ check.dependency_state.state }}{% if check.result and check.stale %}Stale{% elif not check.result %}Not collected{% endif %}
{% if check.observations %}{{ observation_list(check.observations) }}{% else %}

Observations: Not collected

{% endif %}
{% else %}

No active checks

There are no active checks in this view.

{% endfor %}
Live refresh unavailableShowing the last server-rendered snapshot.
{% endmacro %} {% set dashboard_section_renderers = { "estate_summary": estate_summary, "root_causes": root_causes, "operational_groups": operational_groups, "topology_branches": topology_branches, "current_alerts": current_alerts, "ecosystems": ecosystems, "check_details": check_details } %} {% for section in dashboard_sections %}{{ dashboard_section_renderers[section.key]() }}{% endfor %} {% endblock %} {% block scripts %}{% endblock %}