通过kubernetes-ingress精通Elasticsearch

我已经在Kubernetes集群上配置了ElasticSearch。在适用的Kubernetes集群中,我使用THIS头盔图表,并使用以下参数来进行流畅的配置:

    spec:
      containers:
      - env:
        - name: FLUENTD_ARGS
          value: --no-supervisor -q
        - name: OUTPUT_HOST
          value: x.x.x.x
        - name: OUTPUT_PORT
          value: "80"
        - name: OUTPUT_PATH
          value: /elastic
        - name: LOGSTASH_PREFIX
          value: logstash
        - name: OUTPUT_SCHEME
          value: http
        - name: OUTPUT_SSL_VERIFY
          value: "false"
        - name: OUTPUT_SSL_VERSION
          value: TLSv1_2
        - name: OUTPUT_TYPE_NAME
          value: _doc
        - name: OUTPUT_BUFFER_CHUNK_LIMIT
          value: 2M
        - name: OUTPUT_BUFFER_QUEUE_LIMIT
          value: "8"
        - name: OUTPUT_LOG_LEVEL
          value: info

在ElasticSearch集群中,我配置了nginx-ingress控制器,并且我想通过该nginx入口流利地将日志发送到Elasticsearch。在“ OUTPUT_HOST”中,我正在使用nginx-ingress公共IP。在“ OUTPUT_PORT”中,我使用了“ 80”,因为nginx正在监听80。

我正在流利地遇到以下错误:

2019-11-06 07:16:46 +0000 [warn]: [elasticsearch] failed to flush the buffer. retry_time=40 next_retry_seconds=2019-11-06 07:17:18 +0000 chunk="596a7f6afffad60f2b28a5e13f" error_class=Fluent::Plugin::ElasticsearchOutput::RecoverableRequestFailure error="could not push logs to Elasticsearch cluster ({:host=>\"x.x.x.x\",:port=>80,:scheme=>\"http\",:path=>\"/elastic\"}): [405] {\"error\":\"Incorrect HTTP method for uri [/] and method [POST],allowed: [HEAD,GET,DELETE]\",\"status\":405}"

我可以通过查看日志来猜测,它正在将“ /弹性”作为索引。

提到的HERE使用了注释“ nginx.ingress.kubernetes.io/rewrite-target:/”,但问题仍然存在。

此后,我将nginx-ingress更改为在“ /”而不是“ / elastic”处收听呼叫。也更改了fluentD配置中的“ OUTPUT_PATH”。

我可以看到我早些时候遇到的错误消失了,但是我仍然想使用“ / elastic”而不是“ /”。我不确定要实现此目标需要更改哪些Nginx配置。请在这里帮助我。

此后,我收到“请求实体太大”错误,此错误通过在注释中添加-“ nginx.ingress.kubernetes.io/proxy-body-size:100m”解决。默认情况下为1M,fluentD默认为2M。它注定会失败。

现在我遇到类似这样的错误:

  

2019-11-06 10:01:08 +0000 [警告]:转储错误事件:error_class = Fluent :: Plugin :: concatFilter :: TimeoutError error =“超时刷新:kernel:default” location = nil标签=“ kernel” time = 2019-11-06 10:01:08.267224927 +0000 record = {“ transport” =>“ kernel”,“ syslog_facility” =>“ 0”,“ syslog_identifier” =>“ kernel”,“ boot_id “ =>” 6e4ca7b1c1a11b74151a12979“,” machine_id“ =>” 89436ac666fa120304f2077f3bf2“,” priority“ =>” 6“,” hostname“ =>” gke-dev--node-pool“,”消息“ =>” cbr0:端口9(vethe75a241b)进入禁用状态设备vethe75a241b左进入混杂模式cbr0:端口9(vethe75a241b)进入禁用状态IPv6:ADDRCONF(NETDEV_UP):veth630f6cb0:链路未准备好IPv6:ADDRCONF(NETDEV_CHANGE):veth630f6cb0:进入veth630f6cb0:veth630f6cb0:阻塞状态cbr0:端口9(veth630f6cb0)进入禁用状态设备veth630f6cb0进入混杂模式cbr0:端口9(veth630f6cb0)进入阻塞状态cbr0:端口9(veth630f6cb0)进入转发状态“,” source_monotonic_timestamp“ =>” 61153348174 “}

有人可以帮我吗?

yyuuzzjj 回答:通过kubernetes-ingress精通Elasticsearch

  1. 关于nginx配置:here是有关重写的官方文档。如前所述,您可以在fluentD config中与OUTPUT_PATH一起根据需要进行调整。

  2. 关于错误事件:超时刷新只是表明已发生刷新。使用timeout_label处理发生刷新的条目。通常最好分派消息而不是发出错误事件。

请让我知道是否有帮助。

本文链接:https://www.f2er.com/3153220.html

大家都在问