我们有一个设置,其中Metricbeat作为DaemonSet部署在Kubernetes集群(特别是AWS EKS)上。
所有功能似乎都正常运行,但是 kubelet 连接。
为澄清,以下模块:
- module: kubernetes
enabled: true
metricsets:
- state_pod
period: 10s
hosts: ["kube-state-metrics.system:8080"]
工作正常(事件流入对数/弹性)。
但是,此模块配置不适用于主机值的任何变体(localhost
/ kubernetes.default
/任何):
- module: kubernetes
period: 10s
metricsets:
- pod
hosts: ["localhost:10255"]
enabled: true
add_metadata: true
in_cluster: true
注意:使用群集IP而不是localhost(以便转到 控制平面)也可以工作(尽管不会检索所需的 信息,当然)。
以上配置直接来自Metricbeat 文档并立即让我感到奇怪-本地主机如何 (从Metricbeat泊坞窗内)转换为对应的 小菜吗?
错误是,正如您所期望的,鉴于上述情况:
error making http request: Get http://localhost:10255/stats/summary:
dial tcp [::1]:10255: connect: cannot assign requested address
表明存在某种连通性问题。
但是,在将SSH连接到任何节点Metricbeat时,http://localhost:10255/stats/summary
提供正确的输出:
{
"node": {
"nodeName": "...",
"systemContainers": [
{
"name": "pods",
"startTime": "2018-12-06T11:22:07Z",
"cpu": {
"time": "2018-12-23T06:54:06Z",
...
},
"memory": {
"time": "2018-12-23T06:54:06Z",
"availableBytes": 17882275840,
....
我一定很想念一些明显的东西。任何建议都可以。
注意:我在Elasticsearch Forums上张贴了相同的帖子(几天没有得到回复)
答案 0 :(得分:2)
通过valueFrom
列表中的env:
提供者注入Pod的节点IP:
env:
- name: HOST_IP
valueFrom:
fieldRef: status.hostIP
,然后更新metricbeat配置文件以使用主机的IP:
hosts: ["${HOST_IP}:10255"]
哪个metricbeat将通过其environment variable config injection来解决