DNS解析
许多 Envoy 组件解析 DNS:不同的集群类型( 严格 dns、 逻辑 dns);动态转发代理系统(由集群和过滤器组成);udp dns 过滤器等。Envoy 使用c-ares作为第三方 DNS 解析库。envoy.restart_features.use_apple_api_for_dns_lookups
在 Apple 操作系统上,Envoy 还通过运行时功能使用 Apple 特定的 API 提供解决方案 。
DNS解析内置扩展
- c-ares: CaresDnsResolverConfig
- Apple(仅限 iOS/macOS):AppleDnsResolverConfig
- getaddrinfo:GetAddrInfoDnsResolverConfig
DNS解析统计信息
基于c-ares的统计信息
Name | Type | Description |
resolve_total | Count | DNS 查询数 |
pending_resolutions | Gauge | 待处理的 DNS 查询数 |
not_found | Counter | 返回 NXDOMAIN 或 NODATA 响应的 DNS 查询数 |
timeout | Counter | 导致超时的 DNS 查询数 |
get_addr_failure | Counter | DNS 查询期间的一般故障数 |
基于Apple 的统计信息
Name | Type | Description |
connection_failure | Counter | 尝试连接 DNS 服务器失败的次数 |
get_addr_failure | Counter | 调用 GetAddrInfo API 时的一般失败次数 |
network_failure | Counter | 由于网络连接而导致的故障数 |
processing_failure | Counter | 处理来自 DNS 服务器的数据时的失败次数 |
socket_failure | Counter | 尝试获取到 DNS 服务器的套接字的文件描述符的失败次数 |
timeout | Counter | 导致超时的查询数 |
参考文档
https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/dns_resolution