我有 2 台 kvm 虚拟化服务器。每台服务器都有一个面向互联网的接口ens3
和一个ens6
用于主机之间 VLAN 的接口。我运行的是 Ubuntu 18.04。
我已经通过 配置了接口netplan
。
network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: yes
ens6:
dhcp4: no
addresses: [10.0.0.10/24]
另一台机器有10.0.0.20/24
。
一台机器运行多个服务,另一台机器运行 Prometheus。我node_exporter
在两台机器上都进行了设置,并监听了私有网络的 IP 地址。我可以从一台机器 ping 到另一台机器,也可以通过它们之间进行连接ssh
。看来连接总体上是可行的。
node_exporter
我甚至可以从第二台机器卷曲
curl http://10.0.0.10:9100 -v
* Rebuilt URL to: http://10.0.0.10:9100/
* Trying 10.0.0.10...
* TCP_NODELAY set
* Connected to 10.0.0.10 (10.0.0.10) port 9100 (#0)
> GET / HTTP/1.1
> Host: 10.0.0.10:9100
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Mon, 31 Dec 2018 09:00:42 GMT
< Content-Length: 150
< Content-Type: text/html; charset=utf-8
<
<html>
<head><title>Node Exporter</title></head>
<body>
<h1>Node Exporter</h1>
<p><a href="/metrics">Metrics</a></p>
</body>
* Connection #0 to host 10.0.0.10 left intact
现在,问题出现在实际尝试提取指标时:
curl http://10.0.0.10:9100/metrics -v
* Trying 10.0.0.10...
* TCP_NODELAY set
* Connected to 10.0.0.10 (10.0.0.10) port 9100 (#0)
> GET /metrics HTTP/1.1
> Host: 10.0.0.10:9100
> User-Agent: curl/7.58.0
> Accept: */*
>
^C
连接就挂起了。
curl
当从另一台机器执行相同的命令时,它会按预期工作。 我也尝试将绑定node_exporter
到0.0.0.0
。 这也有效,我可以通过服务器的公共 IP 地址获取指标。
我很困惑,为什么调用http://10.0.0.10:9100
有效,但调用 无效http://10.0.0.10:9100/metrics
。我的日志中没有任何错误或任何内容。知道这是什么原因吗?
答案1
根据 VLAN 的实现,您可能需要降低 MTU。
尝试将接口的 MTU 降低到 1400,如下所示:
ifconfig ens6 mtu 1400