У нас есть установка, в которой Metricbeat развертывается как DaemonSet в кластере Kubernetes (в частности, AWS EKS).
Вроде все работает нормально, но подключение кубелет.
Чтобы уточнить, следующий модуль:
- module: kubernetes
enabled: true
metricsets:
- state_pod
period: 10s
hosts: ["kube-state-metrics.system:8080"]
работает правильно (события перетекают в logstash / elastic).
Однако эта конфигурация модуля не работает ни при каких вариантах значения хоста (_2 _ / _ 3_ / независимо):
- 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
hostNetwork: true
, localhost означает локальный хост Pod, а не локальный хост узла. Возможно, вам будет удобнее ввестиstatus.hostIP
пода в metricbeat и позволить ему связываться с узлом по IP-адресу, а не по локальному хосту. Ваш DShostNetwork: true
? - person mdaniel   schedule 25.12.2018localhost
не может работать сlogstash.namespace
одновременно. - person ZenMaster   schedule 25.12.2018{"env":[{"name": "POD_IP", "valueFrom": {"fieldRef": "status.hostIP"}}]}
или вы также можете попробовать указать DNS контейнера на DNS кластера, даже в режимеhostNetworking: true
- person mdaniel   schedule 26.12.2018hostIP
через нисходящий API и оставилhostNetworking
по умолчанию, то естьfalse
. Хотите превратить это в ответ, чтобы я его принял? - person ZenMaster   schedule 29.12.2018