SadServers
  • Scenarios
  • Labs
    All Labs Linux & Bash Web Servers Databases Data Processing Docker Kubernetes CI/CD Infrastructure as Code Tooling / Applications
  • Dashboard
  • Solutions
    For Individuals For Businesses
  • Ranking
  • Newsletter
  • Documentation
    FAQ Support Pro Accounts Pro+ Accounts Business Accounts Gift API CLI/TUI Privacy Troubleshooting Interviews
  • Blog
  • Pricing
  • Gift
    Gift Purchase Gift Redeem
  • About
Log In - Sign Up
  1. Labs
  2. Envoy
  3. Cheatsheet

Guide

Concepts and learning path

Troubleshooting

Failure modes and fixes

Cheatsheet

Commands to keep handy

Envoy cheatsheet

Run and validate

CommandDescription
envoy -c /etc/envoy/envoy.yamlStart with config
envoy --mode validate -c envoy.yamlValidate config only
envoy --versionBinary version
ss -tlnp | grep envoyListener ports

Admin interface (default :9901)

URLDescription
curl -s localhost:9901/server_infoVersion, uptime, state
curl -s localhost:9901/listenersActive listeners
curl -s localhost:9901/clustersCluster health, connections
curl -s localhost:9901/statsAll statistics
curl -s localhost:9901/stats/prometheusPrometheus metrics
curl -s localhost:9901/config_dumpFull effective config (JSON)

Istio sidecar admin (often :15000)

kubectl exec POD -c istio-proxy -- curl -s localhost:15000/clusters kubectl exec POD -c istio-proxy -- curl -s localhost:15000/config_dump | jq . istioctl proxy-status istioctl analyze

Useful stats grep

curl -s localhost:9901/stats | grep -E 'upstream_rq_|cx_|rq_5xx|rq_4xx' curl -s localhost:9901/stats | grep cluster.my_service

Minimal static config sketch

admin: address: socket_address: { address: 127.0.0.1, port_value: 9901 } static_resources: listeners: - name: listener_0 address: socket_address: { address: 0.0.0.0, port_value: 10000 } filter_chains: - filters: - name: envoy.filters.network.http_connection_manager typed_config: "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager stat_prefix: ingress_http route_config: virtual_hosts: - name: backend domains: ["*"] routes: - match: { prefix: "/" } route: { cluster: service_backend } http_filters: - name: envoy.filters.http.router clusters: - name: service_backend connect_timeout: 5s type: STRICT_DNS load_assignment: cluster_name: service_backend endpoints: - lb_endpoints: - endpoint: address: socket_address: { address: backend.local, port_value: 8080 }

Admin CLI helpers

CommandDescription
curl -X POST localhost:9901/healthcheck/failFail health check (testing)
curl -X POST localhost:9901/logging?level=debugRaise log level (runtime)
curl -X POST localhost:9901/quitquitquitGraceful shutdown

Access log response flags

FlagMeaning
UFUpstream connection failure
UHNo healthy upstream host
NRNo route matched
UOUpstream overflow (circuit breaker)
DCDownstream connection termination

Pro tips

  • /clusters shows health_flags — healthy vs failed hosts
  • config_dump is the source of truth for what Envoy actually runs
  • 503 + UH in access log → no healthy endpoints in cluster
  • Validate before deploy: envoy --mode validate -c envoy.yaml
  • Mesh issues? Pair with istioctl proxy-status and Kubernetes lab

Practice scenarios

Hands-on Envoy scenarios on live Linux VMs: envoy

SadServersSadServers

Real-world Linux and DevOps scenarios for hands-on learning and technical assessment.

Uptime Robot ratio (30 days)
Product
  • Scenarios
  • For Individuals
  • For Businesses
  • Pricing
Resources
  • FAQ
  • Blog
  • Newsletter
Company
  • About Us
  • Support
  • Privacy Policy
  • Terms of Service
  • Contact
Connect With Us
info@sadservers.com

Made in Canada 🇨🇦
Updated: 2026-06-13 16:06 UTC – 2d2950a