82. EFK Stack

Обновлено: 2024-03-12
4 мин

EFK Stack

В предыдущем разделе мы говорили о ELK Stack, который использует Logstash в качестве сборщика логов в стеке, в EFK Stack мы меняем его на FluentD или FluentBit.

Наша задача в этом разделе - отслеживать журналы Kubernetes с помощью EFK.

Обзор EFK

Мы развернем следующее в нашем кластере Kubernetes.

Стек EFK представляет собой набор из 3 программ, объединенных вместе, включая:

  • Elasticsearch : NoSQL база данных используется для хранения данных и предоставляет интерфейс для поиска и журнал запросов.

  • Fluentd : Fluentd - это сборщик данных с открытым исходным кодом для унифицированного уровня логирования. Fluentd позволяет унифицировать сбор и потребление данных для лучшего использования и понимания данных.

  • Kibana : Интерфейс для управления и статистики журналов. Отвечает за чтение информации из elasticsearch .

Развертывание EFK на Minikube

Мы будем использовать наш надежный кластер minikube для развертывания нашего стека EFK. Давайте запустим кластер с помощью minikube start на нашей системе. Я использую ОС Windows с включенным WSL2.

Я создал efk-stack.yaml, который содержит все необходимое для развертывания стека EFK в нашем кластере, используя команду kubectl create -f efk-stack.yaml мы видим, что все развернуто.

В зависимости от вашей системы и если вы уже выполняли эту процедуру и получили изображения, теперь вам нужно посмотреть, как стручки переходят в состояние готовности, прежде чем мы сможем двигаться дальше, вы можете проверить прогресс с помощью следующей команды. kubectl get pods -n kube-logging -w Это может занять несколько минут.

Приведенная выше команда позволяет нам следить за ситуацией, но я люблю уточнять, все ли в порядке, выполняя следующую команду kubectl get pods -n kube-logging, чтобы убедиться, что все pods теперь работают.

После того, как мы запустили все наши pods, и на этом этапе мы должны увидеть

  • 3 стручка, связанные с ElasticSearch
  • 1 стручок, связанный с Fluentd
  • 1 стручок, связанный с Kibana

Мы также можем использовать kubectl get all -n kube-logging, чтобы показать все в нашем пространстве имен, fluentd, как объяснялось ранее, развернут как набор демонов, kibana как развертывание и ElasticSearch как набор состояний.

Теперь все наши pods работают, и мы можем ввести в новом терминале команду port-forward, чтобы мы могли получить доступ к нашей приборной панели kibana. Обратите внимание, что имя вашего pod будет отличаться от команды, которую мы видим здесь. kubectl port-forward kibana-84cf7f59c-v2l8v 5601:5601 -n kube-logging.

Теперь мы можем открыть браузер и перейти по этому адресу, http://localhost:5601 вас встретит либо экран, который вы видите ниже, либо вы можете увидеть экран с примерами данных, либо продолжить и настроить самостоятельно. В любом случае и непременно посмотрите на эти тестовые данные, это то, что мы рассмотрели при изучении стека ELK в предыдущей сессии.

Далее нам нужно перейти на вкладку “discover” в левом меню и добавить “*” к нашему шаблону индекса. Перейдите к следующему шагу, нажав кнопку “Следующий шаг”.

На шаге 2 из 2 мы будем использовать опцию @timestamp из выпадающего списка, так как это позволит отфильтровать наши данные по времени. Когда вы нажмете кнопку создать шаблон, это может занять несколько секунд.

Если через несколько секунд мы вернемся на вкладку “discover”, вы должны увидеть данные, поступающие с вашего кластера Kubernetes.

Теперь, когда у нас установлен и работает стек EFK и мы собираем журналы с нашего кластера Kubernetes через Fluentd, мы можем взглянуть на другие источники, которые мы можем выбрать. Если вы перейдете на главный экран, нажав на логотип Kibana в левом верхнем углу, вас встретит та же страница, которую мы видели при первом входе в систему.

У нас есть возможность добавить APM, данные журнала, метрические данные и события безопасности из других плагинов или источников.

Если мы выберем “Добавить данные журнала”, то увидим ниже, что у нас есть большой выбор, откуда мы хотим получать наши журналы, вы можете увидеть, что там упоминается Logstash, который является частью стека ELK.

Под данными метрик вы увидите, что можно добавить источники для Prometheus и многих других сервисов. Переведено с помощью <www.DeepL.com/Translator> (бесплатная версия)

APM (Мониторинг производительности приложений)

Также есть возможность собрать APM (мониторинг производительности приложений), который собирает подробные показатели производительности и ошибки изнутри вашего приложения. Он позволяет отслеживать производительность тысяч приложений в режиме реального времени.

Я не буду здесь углубляться в APM, но вы можете узнать больше на сайте Elastic.

Ресурсы

See you on Day 83