为了更多地了解Envoy的功能,首先要熟悉Envoy的Admin API。Admin API使我们能够深入了解代理Envoy的行为方式,访问其指标以及其配置。让我们从curl proxy:15000/stats开始吧,如下所示:
$ docker run -it --rm --link proxy tutum/curl \ curl -X GET http://proxy:15000/stats
响应应该是一长串的监听器,显示集群和服务器本身的统计信息和度量标准。使用grep只显示带有retry的统计信息,如下所示:
$ docker run -it --rm --link proxy tutum/curl \ curl -X GET http://proxy:15000/stats | grep retry cluster.httpbin_service.retry_or_shadow_abandoned: 0 cluster.httpbin_service.upstream_rq_retry: 0 cluster.httpbin_service.upstream_rq_retry_overflow: 0 cluster.httpbin_service.upstream_rq_retry_success: 0
如果直接调用Admin API,即直接访问根路径/,则应该能看到可以调用的其他端点的列表,如图3-7所示。

图3-7 Admin API
这些暴露的端点列表包括以下内容:
·/certs返回机器上的证书信息,例如返回如下内容:
{
"ca_cert": "Certificate Path: /etc/certs/root-cert.pem, Serial Number: 547687120
d5008dd56f56cab95350cc4, Days until Expiration: 359",
"cert_chain": "Certificate Path: /etc/certs/cert-chain.pem, Serial Number: b998
daa1938bd1765127ede73749e390, Days until Expiration: 88"
}
·/clusters返回上游集群状态信息,例如返回如下内容:
zipkin::default_priority::max_connections::1024 zipkin::default_priority::max_pending_requests::1024 zipkin::default_priority::max_requests::1024 zipkin::default_priority::max_retries::3 zipkin::high_priority::max_connections::1024
·/config_dump输出当前的Envoy配置,例如返回如下内容:
configs
listeners {…}
clusters {…}
bootstrap {…}
routes {…}
·/cpuprof iler开启/关闭CPU prof iler,例如通过设置如下参数进行开启或关闭:?enable=。
·/healthcheck/fail导致服务器运行状况检查失败。
·/healthcheck/ok使服务器通过运行状况检查。
·/help:打印出管理命令列表。
·/hot_restart_version返回热重启兼容版本,例如:10.200.16384.256.options=capacity=16384,num_slots=8209 hash=228984379728933363 size=4882536。
·/listeners:返回监听器地址,例如:["0.0.0.0:15090","172.16.2.152:9080",....]
·/logging查询/更改日志级别,例如返回如下内容:
usage: /logging?<name>=<level> (change single level) usage: /logging?level=<level> (change all levels) levels: trace debug info warning error critical off
·/quitquitquit指退出服务。
·/reset_counters将计数器重置。
·/runtime返回运行时值,例如返回如下内容:
{
"layers": [
"admin"
],
"entries": {}
}
·/runtime_modify修改运行时值,其用法如下所示:
usage: /runtime_modify?key1=value1&key2=value2&keyN=valueN use an empty value to remove a previously added override
·/server_info返回服务器版本/状态信息,例如返回如下内容:envoy 0/1.8.0-dev//RELEASE live 95647 183339 2
·/stats返回服务器状态统计信息,例如返回如下内容:
cluster.BlackHoleCluster.bind_errors: 0 cluster.BlackHoleCluster.lb_healthy_panic: 0 cluster.BlackHoleCluster.lb_local_cluster_not_ok: 0 cluster.BlackHoleCluster.lb_recalculate_zone_structures: 0 cluster.BlackHoleCluster.lb_subsets_active: 0 cluster.BlackHoleCluster.lb_subsets_created: 0 cluster.BlackHoleCluster.lb_subsets_fallback: 0
·/stats/prometheus返回prometheus格式的服务器状态统计信息,例如返回如下内容:
# TYPE envoy_listener_downstream_cx_destroy counter
envoy_listener_downstream_cx_destroy{listener_address="0.0.0.0_8060"} 0
`# TYPE envoy_listener_downstream_cx_total counter
envoy_listener_downstream_cx_total{listener_address="0.0.0.0_8060"} 0
`# TYPE envoy_listener_http_downstream_rq counter
envoy_listener_http_downstream_rq{response_code_class="5xx",http_conn_manager_listener_prefix="0.0.0.0_8060",listener_address="0.0.0.0_8060"} 0
envoy_listener_http_downstream_rq{response_code_class="4xx",http_conn_manager_listener_prefix="0.0.0.0_8060",listener_address="0.0.0.0_8060"} 0