Application and server status for OTB Billing.
Healthy
{% else %}Degraded
{% endif %}App: {{ health.app_name }}
Host: {{ health.hostname }}
Toronto Time: {{ health.server_time_toronto }}
UTC Time: {{ health.server_time_utc }}
Connected
{% else %}Connection Error
{% endif %}Error: {{ health.database.error or "None" }}
Application: {{ health.app_uptime_human }}
Server: {{ health.server_uptime_human }}
1 min: {{ health.load_average["1m"] }}
5 min: {{ health.load_average["5m"] }}
15 min: {{ health.load_average["15m"] }}
Total: {{ health.memory.total_mb }} MB
Available: {{ health.memory.available_mb }} MB
Used: {{ health.memory.used_mb }} MB
Used %: {{ health.memory.used_percent }}%
Total: {{ health.disk_root.total_gb }} GB
Used: {{ health.disk_root.used_gb }} GB
Free: {{ health.disk_root.free_gb }} GB
Used %: {{ health.disk_root.used_percent }}%
{% if asset.explorer_url %}{{ asset.coin }}{% else %}{{ asset.coin }}{% endif %}: {% if asset.ok %} {{ asset.balance }} {% else %} error {% endif %}
{% endfor %}Wallet: {{ health.operations_balances.wallet }}
{% else %}Not available
{% endif %}{% if asset.explorer_url %}{{ asset.coin }}{% else %}{{ asset.coin }}{% endif %}: {% if asset.ok %} {{ asset.balance }} {% else %} error {% endif %}
{% endfor %}Wallet: {{ health.treasury_balances.wallet }}
{% else %}Not available
{% endif %}Timer: {% if health.crypto_reconcile.timer_active == "active" %} {{ health.crypto_reconcile.timer_active }} {% else %} {{ health.crypto_reconcile.timer_active }} {% endif %}
Service: {{ health.crypto_reconcile.service_active }}
{% if health.crypto_reconcile.payment_stats and health.crypto_reconcile.payment_stats.available %}Pending: {{ health.crypto_reconcile.payment_stats.pending }}
Confirmed Today: {{ health.crypto_reconcile.payment_stats.confirmed_today }}
Stale Pending: {% if health.crypto_reconcile.payment_stats.stale_pending and health.crypto_reconcile.payment_stats.stale_pending > 0 %} {{ health.crypto_reconcile.payment_stats.stale_pending }} {% else %} {{ health.crypto_reconcile.payment_stats.stale_pending }} {% endif %}
{% elif health.crypto_reconcile.payment_stats %}Stats: unavailable
Error: {{ health.crypto_reconcile.payment_stats.error }}
{% endif %} {% if request.args.get("reconcile") == "started" %}Manual reconcile started.
{% elif request.args.get("reconcile") == "failed" %}Manual reconcile failed to start.
{% elif request.args.get("reconcile") == "missing-worker" %}Worker script missing.
{% endif %} {% else %}Not available
{% endif %}