首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从logstash连接logstash?

如何从logstash连接logstash?
EN

Stack Overflow用户
提问于 2020-12-21 21:29:19
回答 1查看 145关注 0票数 0

我想使用一个logstash将数据发送到多个logstash服务。

如果我在k8s中使用此设置,它可以工作。

service.yml

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  labels:
    app: logstash
  name: logstash
spec:
  selector:
    app: logstash
  ports:
    - name: "5044"
      port: 5044
      targetPort: 5044

filebeat.yml

代码语言:javascript
复制
    filebeat.inputs:
      - type: log
        enabled: true
        paths:
          - /var/log/log1.json
        tags: ["log1"]

    processors:
      - decode_json_fields:
          fields: ["message"]
          process_array: true
          max_depth: 1
          target: ""
          overwrite_keys: true
          add_error_key: false

    output.logstash:
      hosts: ["logstash-log1.default.svc.cluster.local:5044"]

logstash.yml

代码语言:javascript
复制
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: configmap-logstash
data:
  logstash.yml: |
    http.host: "0.0.0.0"
    path.config: /usr/share/logstash/pipeline
    xpack.monitoring.enabled: false
  logstash.conf: |
    input {
      beats {
        port => 5044
      }
    }

    filter {
    }

    output {
      stdout { codec => rubydebug }
    }

但如果我更改为另一种方式,则将另一个logstash实例的输出设置为:

k8s服务:

代码语言:javascript
复制
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: logstash-log1
  name: logstash-log1
spec:
  selector:
    app: logstash-log1
  ports:
    - name: "5044"
      port: 5044
      targetPort: 5044

logstash.yml

代码语言:javascript
复制
    output {
      if "log1" in [tags] {
        stdout { codec => rubydebug }
        tcp {
          mode => "client"
          host => "logstash-log1.default.svc.cluster.local"
          port => 5044
          codec => "json"
        }
      }
    }

目标日志堆栈的logstash.yml

代码语言:javascript
复制
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: configmap-logstash
data:
  logstash.yml: |
    http.host: "0.0.0.0"
    path.config: /usr/share/logstash/pipeline
    xpack.monitoring.enabled: false
  logstash.conf: |
    input {
      tcp {
        port => 5044
      }
    }

    filter {
    }

    output {
      stdout { codec => rubydebug }
    }

这种通信是可以被证实的,它是有效的。但这些数据似乎并没有发送给logstash-log1.default.svc.cluster.local:5044

如果使用curl从原始logstash进行测试,

代码语言:javascript
复制
curl logstash-log1.default.svc.cluster.local:5044

可以获取目标logstash中的日志数据:

代码语言:javascript
复制
{
  "port" => 37424,
  "host" => "10.12.8.213"
}
{
  "port" => 37424,
  "host" => "10.12.8.213"
}
{
  "port" => 37424,
  "host" => "10.12.8.213"
}
{
  "port" => 37424,
  "host" => "10.12.8.213"
}

所以问题可能出在两个logstash之间的配置上。tcp输入/输出方法不起作用吗?

EN

回答 1

Stack Overflow用户

发布于 2021-03-23 07:13:33

尝试使用lumberjack outputbeats input

这是logstash到logstash通信的推荐方法,在logstash文档中有详细的here解释。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65393663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档