statsd - Envoy 和 statsd 错误:需要节点 'id' 和 'cluster' id
问题描述
我正在尝试配置统计信息接收器以将统计信息收集到statsd
.
我已将 envoy.yaml 配置如下:
admin:
access_log_path: /logs/envoy_access.log
address:
socket_address:
protocol: TCP
address: 0.0.0.0
port_value: 8001
stats_sinks:
name: envoy.statsd
config:
tcp_cluster_name: statsd-exporter
static_resources:
...
clusters:
- name: app
connect_timeout: 0.25s
type: strict_dns
lb_policy: round_robin
hosts:
- socket_address:
address: {{appName}}
port_value: {{appPort}}
- name: statsd-exporter
connect_timeout: 0.25s
type: strict_dns
lb_policy: round_robin
hosts:
- socket_address:
address: statsd_exporter
port_value: 9125
statsd
构建为同一 docker 网络中的容器。
当我使用 Envoy 和 statsd 运行 docker 容器时,Envoy 显示以下错误:
proxy_1 | [2019-05-06 04:50:38.006][27][info][main] [source/server/server.cc:516] exiting
proxy_1 | tcp statsd: node 'id' and 'cluster' are required. Set it either in 'node'
config or via --service-node and --service-cluster options.
template-starter-windows_proxy_1 exited with code 1
如何解决此错误?
更新
我能够通过为 envoy 命令设置 --service-cluster 和 --service-node 参数来解决错误:
envoy -c /etc/envoy/envoy.yaml --service-cluster 'front-envoy' --service-node 'front-envoy'
我不确定为什么使用 statsd sink 需要设置这些参数。并且 envoy 的文档没有提到这些信息,
解决方案
推荐阅读
- c# - 替换 if (Convert.ToString(rdr["Data"]) != bItems)
- tesseract - 如何配置 tesseract 来识别这个数字?
- java - 如何在Java中使用分隔符在所有大写单词之后拆分字符串?
- firefox - 如何在我当前的浏览器中测试 web-ext
- python - numpy中dtype转换的原理是什么?
- javascript - 使用对象外的变量作为对象变量
- python-3.x - Python 3.8(Luhn's Algorithm Alternative):如何将列表转换为字符串?
- haskell - 在 Haskell 中返回一个数字的所有素数的函数
- javascript - 在单页应用程序中设置 CSP(帧祖先)
- javascript - MessageEmbed 字段值不能为空 discord.js v13