Ambassador Diagnostics {% if method or resource %} for {% if method %}{{ method }}{% endif %} {% if resource %}{{ resource }}{% endif %} {% endif %}

Ambassador version {{ system.version }}
Hostname {{ system.hostname }}
Configuration from {{ system.boot_time }} -- {{ system.hr_uptime }} ago
{% if envoy_status.ready %} Envoy ready, last status report {{ envoy_status.since_update }} {% elif envoy_status.alive %} Envoy alive but not yet ready, running {{ envoy_status.uptime }} {% else %} Envoy not running!! {% endif %}
{% if error %}
ERROR: {{ error }}
{% else %}
YAML input files -- these are the files that Ambassador is currently using for its configuration. {% for source in sources %}
{{ source['filename'] }}{%- if not source.description -%}.{{ source['index'] }}{%- endif -%} {% if not source.description %} -- object {{ source.index }} in {{ source.filename }}
Ambassador {% if source['target'] %}{% endif %} {{ source['kind'] }} {% if source['target'] %}{% endif %} {% if source.errors %} {% for error in source.errors %}
ERROR: {{ error.summary }} {% endfor %} {% endif %} {% endif %}
{% if not source.description %}
{{ source['yaml'] }}
{% else %} {{ source['description'] }} {% endif %}
{% endfor %}
Currently active Envoy Routes generated from the input files above {% for route in routes | sort(attribute = '_source') %}
{{ route.get('_method', 'GET') }} {{ route['prefix'] }} -> {{ route['cluster'] }}{{ "/" if not route['prefix_rewrite'].startswith('/') }}{{ route['prefix_rewrite'] }}
created by {{ route['_source'] }}
{{ route | pretty_json }}
{% endfor %}
Currently active Envoy Clusters generated from the input files above {% for cluster in clusters | sort(attribute = 'name') %}
{{ cluster['name'] }} -- {% if cluster_stats[cluster.name].valid %} {{ cluster_stats[cluster.name].healthy_percent }}% healthy {% else %} unknown health ({{ cluster_stats[cluster.name].reason }}) {% endif %}
referenced by {% for ref in cluster['_referenced_by'] | sort %} {{ ref }}{{ "," if not loop.last }} {% endfor %}
{{ cluster | pretty_json }}
{% endfor %}
{% if breakers %}
Currently active Envoy Circuit Breakers generated from the input files above {% for breaker in breakers | sort(attribute = 'name') %}
{{ breaker['name'] }}
referenced by {% for ref in breaker['_referenced_by'] | sort %} {{ ref }}{{ "," if not loop.last }} {% endfor %}
{{ breaker | pretty_json }}
{% endfor %}
{% endif %} {% if outliers %}
Currently active Envoy Outlier Detection configuration generated from the input files above {% for outlier in outliers | sort(attribute = 'name') %}
{{ outlier['name'] }}
referenced by {% for ref in outlier['_referenced_by'] | sort %} {{ ref }}{{ "," if not loop.last }} {% endfor %}
{{ outlier | pretty_json }}
{% endfor %}
{% endif %} {% endif %}