Отказ от ответственности: я не являюсь разработчиком DevOps, но привык работать со стеком ELK с точки зрения пользователя.
Я думаю, что вы можете начать с 3 основных компонентов:
- Logstash (или filebeat)
- Сам ElasticSearch
- Kibana
Logstash должен читать журналы, которые создает NodeJS (записывает в некоторый файл), и отправлять их вElasticSearch.
Поскольку вы используете K8S, есть вероятность, что приложение Node развернуто внутри некоторого POD. В этом случае вы можете рассмотреть возможность добавления контейнера с коляской с процессом Logstash в качестве одного из возможных решений. IMO - это наиболее гибкий подход, хотя, если вы запускаете много модулей на одном компьютере (узле), процессы logstash сожрут ваши процессоры. Если это проблема, вы можете настроить некоторый том, который будет содержать журналы от модулей, и настроить выделенный модуль с LogStash, который будет отображать все журналы от всех POD на узле узла.
В любом случаеПредполагается, что Logstash отправляет данные в ElasticSearch и отслеживает то, что было отправлено до сих пор. Если у вас есть много журналов, рассмотрите возможность создания одного индекса в ES в день с некоторым временем жизни (срок хранения), например, 1 неделя. Затем ES удалит данные, автоматически удалив индекс
В случае с Kubernetes кластер ES также может быть развернут в POD, он должен предоставлять порты для доступа (по умолчанию 9200 для http и 9300 для двоичного доступа). Если у вас мало служб, возможно, 2-3 серверов будет достаточно, вы даже можете начать с одного работающего модуля, если вам не нужна высокая доступность
Теперь Kibana. Это пользовательский интерфейс, который подключается к Elastic Search и позволяет нарезать данные вашего журнала. Вы можете фильтровать по уровням, хостам, сообщениям, что угодно, ES очень хорош для поиска, поэтому этот вариант использования очень хорошо поддерживается.
Опять же, что касается K8S, вы можете развернуть Kibana в модуле с открытым портом HTTP длядоступ из браузера. Обратите внимание, что к этому HTTP-порту будет обращаться браузер, который технически не является частью вашего кластера kubernetes, поэтому определите инфраструктуру K8S соответственно.
Это базовый стек, хотя базовый по-прежнему очень гибкий и может работатьдля реальных проектов.