Envoy 运维调试

2021-01-04  本文已影响0人  坚持到底v2

统计信息分类

Envoy 的主要目标之一是使网络易于理解。 Envoy 会发出大量其配置方式的统计信息。 通常,统计信息分为三类:

v2 API 开始, Envoy 支持自定义的可插拔的 sinks(接收器) . Envoy 包含了一些标准的接收器实现 。 一些接收器还支持带有 tags/dimensions 的统计信息。

统计信息 通过规范的字符串形式进行标识。 可以从这些字符串中动态剥离部分出来以成为 tags(标签) . 用户可以通过 Tag Specifier 配置此行为。


统计信息的值类型

Envoy 发出三种类型的值作为统计信息:

在内部, countersgauges 定期批量写入以提升性能。 Histograms 在接收时即刻写入。


命令行选项

Envoy 可以由 JSON配置文件命令行选项 驱动。 下面是 Envoy 支持的命令行选项(节选了部分):

--admin-address-path <path string>
  (optional) The output file path where the admin address and port will be written.

-l <string>, --log-level <string>
  (optional) The logging level. Non developers(非开发人员) should generally never set this option.   
  See the help text for the available log levels and the default.

--component-log-level <string>
  (optional) The comma separated list(逗号分隔的列表) of logging level per component.   
  Non developers(非开发人员) should generally never set this option.   
  For example, if you want upstream component to run at debug level and connection component to run at trace level,   
  you should pass "upstream:debug,connection:trace"(示例) to this flag.   
  See ALL_LOGGER_IDS in /source/common/common/logger.h for a list of components.

--log-path <path string>
  (optional) The output file path where logs should be written.   
  This file will be re-opened when SIGUSR1 is handled.   
  If this is not set, log to stderr(默认值).

--log-format <format string>
--log-format-escaped

--version
  显示版本号

--mode <string>
  serve/validate , serve 是默认值,如果希望验证配置文件的有效性,使用 --mode validate  


Administration interface

Envoy 暴露了一个本地管理界面,该界面可用于 查询和修改 服务器的不同方面:

v3 API reference 配置本地管理界面:

{
  "access_log_path": "...",
  "profile_path": "...",
  "address": "{...}",
  "socket_options": []
}

注意
当前形式的管理界面不仅 允许执行破坏性操作 (例如,关闭服务器),而且还可能 公开私有信息 (例如,统计信息,群集名称,证书信息等)。
因此 仅允许通过安全网络访问管理界面 非常重要。 将访问管理界面的主机仅连接到安全网络也很重要(即,避免CSRF攻击)。 这涉及设置适当的防火墙,或者最好只允许通过本地主机访问管理侦听器。 这可以通过v2配置完成,如下所示:

admin:
  access_log_path: /tmp/admin_access.log
  profile_path: /tmp/envoy.prof
  address:
    socket_address: { address: 127.0.0.1, port_value: 9901 }

将来,其他安全选项将添加到管理界面。
所有变动服务器配置的操作 必须以 HTTP POST 发送。 通过GET请求时返回 HTTP 400(无效请求)响应。

提示:
使用 ?format=json 以json序列化 。
具有默认值的字段不会呈现 。 例如,对于 /clusters?format=json ,当断路器阈值优先级字段的值为DEFAULT优先级时,将忽略该字段,如下所示:

{
 "thresholds": [
  {
   "max_connections": 1,
   "max_pending_requests": 1024,
   "max_requests": 1024,
   "max_retries": 1
  },
  {
   "priority": "HIGH",
   "max_connections": 1,
   "max_pending_requests": 1024,
   "max_requests": 1024,
   "max_retries": 1
  }
 ]
}

管理界面的endpoint

上一篇下一篇

猜你喜欢

热点阅读