首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prometheus IPv6在“连接:无效参数”中失败

Prometheus IPv6在“连接:无效参数”中失败
EN

Stack Overflow用户
提问于 2019-08-19 09:07:35
回答 1查看 1.1K关注 0票数 0

我目前正在尝试建立一个必须使用IPv6的内部Prometheus监控系统。但是,我的静态配置不起作用:

代码语言:javascript
复制
- targets: ['[fe80::3086:7bff:fed8:f402]:9100']

这与错误失败。

获取http://[fe80::3086:7bff:fed8:f402]:9100/metrics:拨号tcp fe80:3086:7bff:fed8 8:f 402:9100: connect:无效参数

我尝试使用CURL来查看是否可以连接到节点导出程序运行的远程服务器。

这不管用:curl -g -6 'http://[fe80::3086:7bff:fed8:f402]:9100/metrics'

但这确实奏效了:curl -g -6 'http://[fe80::3086:7bff:fed8:f402%ens17]:9100/metrics'

这表明我实际上能够连接到服务器,但必须添加连接IPv6网络顶部的网络接口。我真的不知道为什么。

但是现在,相同的URL不适用于prometheus,它仍然存在一个错误:

代码语言:javascript
复制
- targets: ['[fe80::3086:7bff:fed8:f402%ens17]:9100']

Get http://[fe80::3086:7bff:fed8:f402%25ens17]:9100/metrics: dial tcp [fe80::3086:7bff:fed8:f402%ens17]:9100: connect: invalid argument
EN

回答 1

Stack Overflow用户

发布于 2019-08-19 13:30:58

由于您使用的是IPv6链接-本地寻址,您必须添加区域ID (在您的情况下是%ens17)来解释哪个接口是指哪个接口。每个接口都有相同的,所以您必须区分哪个接口,区域ID为您完成这个任务。

这一点在几个RFCs中得到了详细说明。您至少应该熟悉RFC 2732,网址中文字IPv6地址的格式RFC 4007,IPv6作用域地址体系结构RFC 6874,表示地址文字和统一资源标识符中的IPv6区域标识符

不幸的是,并不是所有的事情似乎都已经解决了这个问题,而%经常被用作转义字符。您真正应该做的是将ULA寻址(fc00::/7)分配给主机。将L位设置为1 (fd00::/8),然后选择一个随机的40位全局ID (fdxx:xxxx:xxxx:xxxx::/64),并从您派生的前缀中为您的主机分配地址。如果您有多个网络,您可以使用相同的方法为每个网络获取一个前缀,并且可以在您自己的站点内路由ULA寻址(不像)。

RFC 4193,唯一的本地IPv6单播地址解释IPv6 ULA地址。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57553577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档