We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

К списку статей

Настройка Observability Stack: Prometheus, Grafana и Loki для мониторинга микросервисов на FastAPI и Symfony

В современном мире разработки программного обеспечения, особенно при создании микросервисных архитектур, критически важно иметь эффективную систему мониторинга и отслеживания. Observability (наблюдаемость) позволяет не только видеть, что происходит в системе, но и понимать, почему это происходит. В данной статье мы рассмотрим построение надежного Observability Stack, основанного на Prometheus, Grafana и Loki, для мониторинга микросервисов, разработанных на популярных фреймворках FastAPI и Symfony. Мы также уделим внимание вопросам соответствия требованиям законодательства РФ в части обработки данных и защиты персональных данных.

Выбор инструментов: Prometheus, Grafana и Loki – основа надежного мониторинга

Prometheus – это система мониторинга и оповещения с открытым исходным кодом. Он собирает метрики с целевых сервисов, хранит их в виде временных рядов и предоставляет API для запросов и визуализации данных. Prometheus хорошо подходит для мониторинга производительности сервисов, использования ресурсов и других важных показателей.

Grafana – это платформа визуализации данных, которая позволяет создавать информативные дашборды на основе данных, собранных Prometheus и других источников. Grafana предлагает широкий выбор визуальных элементов и позволяет настраивать оповещения.

Loki – это система агрегации и поиска логов, разработанная Grafana Labs. Она позволяет собирать логи с различных сервисов, индексировать их и выполнять поиск по ним. Loki помогает выявлять причины проблем и отслеживать события в системе.

Архитектура Observability Stack для микросервисов

Рекомендуемая архитектура включает в себя следующие компоненты:

  • Экспортеры Prometheus: Необходимо разработать экспортеры Prometheus для ваших микросервисов на FastAPI и Symfony. Эти экспортеры будут собирать метрики из ваших приложений и отправлять их в Prometheus. Для FastAPI можно использовать пакет prom-client, а для Symfony – prometheus_client (или аналогичные).
  • Prometheus Server: Центральный сервер Prometheus, который собирает и хранит метрики.
  • Grafana Server: Сервер Grafana, который визуализирует данные, собранные Prometheus.
  • Loki Container/Server: Сервер Loki, который агрегирует и индексирует логи. Часто Loki развертывается в виде контейнера Kubernetes.
  • Log shippers: Сервисы, которые собирают логи с ваших сервисов и отправляют их в Loki. Например, Fluentd или Filebeat.

Настройка экспортеров для FastAPI и Symfony

FastAPI

pip install prom-client

from prometheus_client import start_http_server, Summary, Counter

REQUEST_TIME = Summary('request_processing_seconds', 'Time spent processing request')
TOTAL_REQUESTS = Counter('total_requests_count', 'Total number of requests')

@app.route('/my_endpoint')
def my_endpoint():
    REQUEST_TIME.observe(request_time)
    TOTAL_REQUESTS.inc()
    return 'OK' 

if name == 'main':
    start_http_server(8000) 

Symfony

composer require prometheus/client

use Prometheus

public function index(): Response {
    $client = new Prometheus
    $client->increment('total_requests_count')
    $client->observe('request_processing_seconds', microtime(true) - $this->request->get('_time'))
    return new Response('OK')
}

Настройка Prometheus, Grafana и Loki

После настройки экспортеров необходимо настроить Prometheus, Grafana и Loki. Это включает в себя конфигурацию Prometheus для сбора метрик с ваших сервисов, настройку Grafana для подключения к Prometheus и Loki, а также настройку Loki для обработки логов.

Для развертывания и настройки этих компонентов часто используют инструменты оркестрации контейнеров, такие как Kubernetes.

Соответствие законодательству РФ

При сборе и хранении данных для мониторинга необходимо соблюдать требования законодательства РФ, в частности Федерального закона № 152-ФЗ «О персональных данных». Необходимо обеспечить анонимизацию или псевдонимизацию персональных данных, если они содержатся в логах или метриках. Также необходимо разработать политики хранения данных и обеспечить защиту данных от несанкционированного доступа.

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

Заключение

Внедрение Observability Stack на основе Prometheus, Grafana и Loki позволяет существенно повысить надежность и прозрачность микросервисной архитектуры. Правильная настройка и использование этих инструментов помогает быстро выявлять и устранять проблемы, а также оптимизировать производительность сервисов. Не забывайте о соблюдении требований законодательства РФ при сборе и обработке данных.

РыбинскЛАБ – команда опытных разработчиков, специализирующихся на создании надежных и масштабируемых систем мониторинга и observability. Мы предлагаем полный спектр услуг по разработке микросервисов на FastAPI и Symfony, включая проектирование архитектуры, разработку экспортеров Prometheus, настройку Grafana и Loki, а также помощь в обеспечении соответствия законодательству РФ. Свяжитесь с нами для обсуждения вашего проекта!

Материал подготовлен и отредактирован для практического применения. Перед внедрением в продакшен проверьте код и команды на своём окружении.

Поделиться материалом

Нужна сложная backend-разработка?

Проектирование архитектуры, PHP/Python backend, интеграции API, боты, автоматизация и оптимизация существующих систем.

Обсудить проект
Поддержать проект