在K8s吊舱中运行的Logstash容器的http插件要使用哪个主机和端口?

时间:2019-07-11 23:47:12

标签: python kubernetes python-requests logstash logstash-configuration

尝试建立使用http输入插件的管道时,我在logstash中收到此错误Error: Cannot assign requested address

我正在尝试使用Python请求http库将数据从Python进程发送到logstash。我不确定在logstash http输入配置中使用哪个主机和端口。我应该使用默认值,logstash Pod ClusterIP服务IP,logstash Pod IP还是其他?

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

默认网址为0.0.0.0:80,但在Python端出现连接错误。我还尝试了运行logstash容器的Logstash K8s pod的URL,并在Logstash容器中获取Error: Cannot assign requested address

编辑:包括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 :(得分:0)

根据您的信息,您正在使用Helm进行部署,并且稳定图表上来自Elastic的docker映像的版本为7.1.1

如果您检查Dockerfile的that版本

他们创建了用户logstash here

在Dockerfile定义期间切换到root用户,但最后返回该用户,因为您不能使用端口80

尝试使用其他端口,例如8080,并调整所有需要连接到logstash的其他服务以使用新端口,或将服务上的该端口映射为在服务级别80上使用端口,但目标指向8080

答案 1 :(得分:0)

我最终切换到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 clusterIP服务的IP和端口1514或1515将消息发送到Logstash。