Какой хост и порт использовать для плагина http для контейнера Logstash, запущенного в модуле K8s? - PullRequest
1 голос
/ 12 июля 2019

Я получаю эту ошибку Error: Cannot assign requested address в logstash при попытке установить конвейер, использующий плагин ввода http.

Я пытаюсь отправить данные из процесса Python в logstash с использованием библиотеки http запросов Python,Я не уверен, какой хост и порт использовать в моих http-конфигах logstash.Должен ли я использовать значения по умолчанию, IP-адрес службы кластеров logstash pod, IP-адрес модуля logstash или что-то еще?

input {
    http {
        host => "0.0.0.0"
        port => 80
    }
  }

URL-адрес по умолчанию - 0.0.0.0:80, но я получаю ошибку соединения на Pythonбоковая сторона.Я также попробовал URL-адрес модуля Logstash K8s, в котором запущен контейнер logstash, и получил Error: Cannot assign requested address в контейнере logstash.

Редактировать: включены подробности службы logstash

Name:              central-logstash
Namespace:         default
Labels:            app=logstash
                   chart=logstash-1.10.0
                   heritage=Tiller
                   release=central-logstash
Annotations:       <none>
Selector:          app=logstash,release=central-logstash
Type:              ClusterIP
IP:                10.110.133.189
Port:              beats  5044/TCP
TargetPort:        beats/TCP
Endpoints:         192.168.0.79:5044
Session Affinity:  None
Events:            <none>

Ответы [ 2 ]

0 голосов
/ 18 июля 2019

Я закончил тем, что переключился на TCP, чтобы избежать заголовков HTTP в моих сообщениях.

В моей конфигурации Logstash Helm (https://github.com/helm/charts/tree/master/stable/logstash), я настроил службу следующим образом:

service:
  type: ClusterIP
  annotations: {}
  ports:
     tcp-data:
       port: 1514
       targetPort: tcp-data
       protocol: TCP
     tcp-event:
       port: 1515
       targetPort: tcp-event
       protocol: TCP

ports:
  - name: tcp-data
    containerPort: 1514
    protocol: TCP
  - name: tcp-event
    containerPort: 1515
    protocol: TCP

И плагин TCP:

inputs:
 data: |-
    input {
        tcp {
            port => 1514
            type => json
        }
      }
 event: |-
    input {
        tcp {
            port => 1515
            type => json
        }
      }

А затем на стороне Python я смог использовать библиотеку сокетов для отправки сообщений в Logstash, используя IP-адрес сервиса кластера Logstash и порт 1514 или 1515.

0 голосов
/ 12 июля 2019

Согласно вашей информации, вы используете helm для развертывания, и версия образа докера из эластичного на стабильной диаграмме равна 7.1.1

Если вы проверяете файл Docker для , то version

Они создают logstash пользователя здесь

И во время определения Dockerfile переключаются на root, но возвращаются в конце этому пользователю, из-за того, что вы не можете использовать порт80

Попробуйте использовать другой порт, такой как 8080, и настройте все другие службы, которые необходимо подключить к logstash, для использования нового порта или сопоставьте этот порт в службе для использования на уровне служб *Порт 1016 *, но цель указывает на 8080

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...