Я настроил ElasticSearch в кластере Kubernetes. В кластере Kubernetes для приложения я настроил fluentd, используя схему управления 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, и я хочу, чтобы fluentdотправлять логи в Elasticsearch через этот вход nginx. В "OUTPUT_HOST" я использую публичный IP-адрес nginx. В «OUTPUT_PORT» я использовал «80», поскольку nginx прослушивает 80.
Я получаю следующую ошибку в fluentd:
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}"
Я могу догадаться, посмотрев журнал, эторассматривает "/astic" в качестве индекса.
В упомянутом ЗДЕСЬ используется аннотация "nginx.ingress.kubernetes.io/rewrite-target: /", но проблема сохраняется.
После этого я изменил nginx-ingress, чтобы прослушивать вызовы по "/" вместо "/astic". изменил "OUTPUT_PATH" в конфигурации fluentD.
Я мог видеть, что ошибка, которую я получал ранее, исчезла, но я все еще хотел бы использовать "/astic" вместо "/". Я не уверен, какой конфиг nginx мне нужно изменить, чтобы добиться этого. Пожалуйста, помогите мне здесь.
После этого я получил ошибку «слишком большая сущность запроса», которая была устранена путем добавления - «nginx.ingress.kubernetes.io/proxy-body-size: 100m» в аннотациях. По умолчанию его 1M, а для fluentD по умолчанию 2M. Это должно было произойти сбой.
Теперь я получаю ошибки, такие как:
2019-11-06 10:01:08 +0000 [warn]: сбросить событие ошибки: error_class= Fluent :: Plugin :: ConcatFilter :: TimeoutError error = "Сброс таймаута: kernel: default" location = nil tag = "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 "=," ="hostname" => "gke-dev - node-pool", "message" => "cbr0: порт 9 (vethe75a241b) вошел в отключенное состояние устройства vethe75a241b оставил беспорядочный режимcbr0: порт 9 (vethe75a241b) вошел в отключенное состояние IPv6: ADDRCONF (NETDEV_UP): veth630f6cb0: ссылка не готова IPv6: ADDRCONF (NETDEV_CHANGE): veth630f6cb0: ссылка становится готовойcbr0: порт 9 (veth630f6cb0) вошел в состояние блокировкиcbr0: порт 9 (veth630f6cb0) вошел в состояние отключенного состоянияпорт 9 (ветеринарh630f6cb0) вошел в состояние пересылки "," source_monotonic_timestamp "=>" 61153348174 "}
Может кто-нибудь помочь мне с этим?