Логирование — это критически важный аспект работы с любым приложением в Kubernetes. Оно помогает отслеживать работоспособность и эффективность приложения, быстро устранять неисправности. Команда VK Cloud перевела статью о логах и лучших приемах логирования в среде Kubernetes.

Что такое логирование в Kubernetes


Логирование в Kubernetes — это процесс сбора и хранения данных лога, генерируемых кластером и работающими на нем приложениями. Эти данные включают в себя информацию об эффективности работы приложения, ошибки, предупреждения и другие события. Логи Kubernetes критически важны для отладки и устранения проблем в распределенной системе; разработчики, операторы и команды по информационной безопасности используют их для мониторинга и поддержания работоспособности приложения.

Как работает логирование в Kubernetes


Логи Kubernetes генерируют разные компоненты кластера Kubernetes: API-сервер Kubernetes, kubelet, среда запуска контейнеров и приложения, работающие в кластере. Эти логи собирает и агрегирует агент логирования, который работает как под Kubernetes. Он отправляет логи в централизованное хранилище для хранения и анализа.

Чаще всего в качестве агента логирования в Kubernetes используется Fluentd. Это Open-Source-приложение для сбора данных, которое собирает, преобразует и направляет данные логов в разные системы, в том числе Elasticsearch, Splunk и Kafka. Другие популярные агенты логирования — это Logstash и Fluent Bit.

На этой схеме показано, как работает логирование в Fluentd:



Современные методы логирования в Kubernetes


Вот несколько советов по логированию в Kubernetes:

  1. Используйте централизованное решение логирования. Такое решение позволяет централизованно хранить и анализировать логи. С ним проще устранять неисправности и отслеживать эффективность работы приложения. Наиболее популярные централизованные решения логирования в Kubernetes — это Elasticsearch, Splunk и Loggly.
  2. Используйте структурированное логирование. Оно форматирует сообщения логов, придает им определенную структуру, упрощает поиск, фильтрацию и анализ данных из логов. Используйте JSON или другие структурированные форматы логирования вместо plain text — так будет проще извлекать информацию из логов.
  3. Не включайте в логи Kubernetes конфиденциальную информацию, например пароли, ключи API и другие учетные данные. Для защищенного хранения такой информации используйте переменные среды или секреты.
  4. Добавьте в логи контекстуальную информацию. Если в них есть метки времени, имя хоста и ID запроса, это упрощает корреляцию событий и устранение проблем.
  5. Создавайте теги для закрытой информации. Чтобы защитить конфиденциальную информацию, имеет смысл создавать для нее теги или маски. Для идентификации и маскировки конфиденциальных данных, таких как пароли, номера кредитных карт или идентифицирующие личность персональные данные (PII), можно использовать стандартизированный формат, например priv или ****.
  6. Используйте разные уровни логирования. Таким образом можно классифицировать сообщения логов по степени критичности или важности. Обычно логи подразделяют на DEBUG, INFO, WARNING, ERROR и CRITICAL. Используя соответствующие уровни логов, можно фильтровать и расставлять приоритеты для сообщений логов по степени значимости с точки зрения устранения проблем и отладки.
  7. Организуйте потоковую передачу логов на сервер логов. Советуем не полагаться сугубо на локальные файлы логов, а организовать их потоковую передачу на централизованный сервер логов или в систему управления логами. Таким образом сбор и хранение логов осуществляется централизованно, упрощая поиск, анализ и длительное хранение логов. К популярным серверам и системам управления логами относятся Elasticsearch, Splunk и Graylog.
  8. Включите ротацию логов. Если настроить ротацию логов, файлы логов перестанут увеличиваться до бесконечности и занимать слишком много дискового пространства. Указав параметры ротации логов, можно контролировать размер файла лога, количество сохраняемых файлов и периодичность ротации. Такой подход обеспечивает эффективную работу с логами и предотвращает проблемы с дисковым пространством.

kubectl logs — это стандартная команда Kubernetes для извлечения логов; но есть еще несколько Open-Source-CLI-инструментов, поддерживающих дополнительные функции и улучшенные возможности сбора логов. Один из таких инструментов — это kubetail, с помощью которого можно просматривать логи сразу с нескольких подов. Вот несколько Open-Source-CLI-инструментов, с помощью которых можно собирать логи в Kubernetes:

  1. Kubetail. Простая утилита, с помощью которой можно просматривать логи с нескольких подов в кластере Kubernetes. Она собирает логи с разных подов в кластере Kubernetes и в потоковом режиме направляет их на терминал, позволяя в реальном времени одновременно просматривать логи из разных источников. Kubetail особенно хорошо подходит для устранения неисправностей в распределенных системах или для мониторинга работы приложения в нескольких подах.
  2. Stern. Еще один мощный инструмент для просмотра логов, разработанный специально для Kubernetes. Он позволяет просматривать логи из разных подов и контейнеров в кластере, подсвечивая результаты разными цветами, чтобы в них проще было разобраться. Stern также поддерживает фильтры на основе регулярных выражений, помогающие сосредотачиваться на конкретных сообщениях или паттернах лога.
  3. Kail. Это CLI-инструмент, поддерживающий потоковую передачу и просмотр логов из разных подов в кластере Kubernetes. Он выводит результаты как в исходном формате, так и в JSON, что обеспечивает определенную гибкость для разных сценариев использования. Kail также поддерживает фильтрацию логов по меткам или пространствам имен, позволяя по необходимости сузить результаты поиска по логам.
  4. Logcli. Он входит в состав экосистемы Loki. Это интерфейс командной строки для выполнения запросов к логам, хранящимся в Loki, горизонтально масштабируемой системе агрегирования логов. Logcli позволяет искать и извлекать логи по разным параметрам, в том числе по меткам, диапазонам времени и уровням логов. Он подойдет, если вы используете централизованное решение логирования на основе Loki и хотите эффективно выполнять запросы и анализ логов.

Эти Open-Source-CLI-инструменты делают сбор и анализ логов в Kubernetes более гибким благодаря дополнительным функциям. В зависимости от конкретных требований можно выбрать инструмент, который лучше всего подходит под ваши потребности и хорошо интегрируется с вашей инфраструктурой логирования.

Если вы используете сторонние инструменты, убедитесь, что они попали к вам из надежных источников, и изучите инструкции по установке и эксплуатации в документации к ним.

В среде Kubernetes есть разные команды для проверки логов. Вот список команд, которые можно использовать с kubetail для проверки логов Kubernetes:

1. Для просмотра логов из конкретного пода:

kubetail <pod-name>

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

2. Для просмотра логов из подов, соответствующих селектору меток:

kubetail -l <label-selector>

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

3. Для просмотра логов с подов в конкретном пространстве имен:

kubetail -n <namespace>

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

4. Для просмотра логов из нескольких подов с помощью Wildcard-выражений:

kubetail <pod-name-1> <pod-name-2> ...

С помощью этой команды можно указать имена нескольких подов или использовать Wildcard-выражения, чтобы просматривать логи из нескольких подов. Например:

kubetail my-app-*

Таким образом можно просматривать логи со всех подов, которые начинаются с my-app-.

5. Для добавления в результаты меток времени:

kubetail -t <pod-name>

С помощью этой команды логи отображаются с метками времени. Так можно увидеть, когда были созданы сообщения лога.

6. Для прекращения просмотра логов с конкретного пода:

kubetail --stop <pod-name>

Эта команда останавливает потоковую передачу и отображение логов из конкретного пода.

Это распространенные команды, которые можно использовать с kubetail для эффективного просмотра логов из нескольких подов в кластере Kubernetes. Прежде чем использовать их, обязательно установите и настройте kubetail. Инструкции по установке и информацию о дополнительных функциях можно найти в его документации.

При использовании kubetail можно также просматривать логи компонентов панели управления Kubernetes, указав имена подов. Вот некоторые команды:

1. Чтобы просмотреть логи API-сервера Kubernetes:

kubetail -n kube-system kube-apiserver-<node-name> 

Замените <node-name> на фактическое имя ноды, на которой работает под API-сервера. Эта команда позволяет просматривать логи API-сервера.

2. Чтобы просмотреть логи диспетчера контроллера Kubernetes:

kubetail -n kube-system kube-controller-manager-<node-name> 

Замените <node-name> на имя ноды, на которой работает под диспетчера контроллера. Эта команда позволяет просматривать логи диспетчера контроллера.

3. Чтобы просмотреть логи планировщика Kubernetes:

kubetail -n kube-system kube-scheduler-<node-name> 

Замените <node-name> на имя ноды, на которой работает под планировщика.
Эта команда позволяет просматривать логи планировщика.

4. Чтобы просмотреть логи кластера etcd:
kubetail -n kube-system etcd-<node-name> 

Замените <node-name> на имя ноды, на которой работает под etcd. Эта команда позволяет просматривать логи кластера etcd.

С помощью флага -n kube-system укажите пространство имен, в котором обычно развертываются компоненты панели управления.

Просматривая логи этих компонентов панели управления, можно отслеживать их действия, выявлять неисправности или ошибки и получать аналитику по работе кластера Kubernetes.

Заключение


Логирование в Kubernetes — это критически важный аспект работы приложений. К передовым приемам логирования в среде Kubernetes относятся централизованное решение логирования, структурированное логирование, грамотная работа с конфиденциальной информацией и добавление контекстуальных данных. Применяя эти приемы, можно обеспечить защищенное хранение логов Kubernetes, удобство поиска и анализа и быстрое устранение проблем и неисправностей.

Вы прямо сейчас можете воспользоваться Kubernetes от VK Cloud. Для тестирования мы начисляем новым пользователям 3000 бонусных рублей и будем рады вашей обратной связи.

Stay tuned

Присоединяйтесь к телеграм-каналу «Вокруг Kubernetes», чтобы быть в курсе новостей из мира K8s: регулярные дайджесты, полезные статьи, а также анонсы конференций и вебинаров.

Комментарии (0)