Журналы не отображаются в порядке после отправки в Elasticsearch с помощью Fluentd - PullRequest
1 голос
/ 21 января 2020

У нас есть приложение, развернутое в Kubernetes, и все приложения настроены для входа в stdout. Мы используем fluentd DaemonSet для сбора журналов из папок /var/lib/docker/containers/ и отправки их в кластер ElasticSearch. Агрегированные файлы журналов k8s в /var/lib/docker/containers/ и kubectl logs <podname> оба имеют строки журнала в приложении заказа, которые выдают их правильно. Кластер ElasticSearch подключен к экземпляру Kibana, и журналы отображаются отсортированными по @timestamp, и здесь порядок журналов неправильный (не в том же порядке, что и в fl ie). Из-за характера приложения в одном и том же @timestamp создается несколько журналов, и только они не упорядочены правильно. Есть ли способ отправить номер строки или смещение (инкрементный номер) при отправке из fluentd и использовать комбинацию @timestamp и это значение для правильной сортировки? Или есть другой способ получить тот же порядок, который отображается с kubectl logs <podname> после индексации?

1 Ответ

0 голосов
/ 23 января 2020
Контейнеры

Docker настроены на использование отметки времени UT C, поэтому, если вы отправляете журналы docker в контейнер fluentd с помощью драйвера журнала fluentd, то в журналах будет проставлена ​​отметка UT контейнера Fluentd. C штамп. Но если вы отправите сообщение журнала в контейнер fluentd с помощью драйвера журнала journald, оно сохранит локальную отметку времени. Вы можете настроить временную метку контейнера на местное время в файле docker, например:

environment:
  - TZ=America/Los_Angeles debian:jessie date
...