Налаштування моніторингу бекенду мобільного додатку (Grafana/Prometheus)

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Налаштування моніторингу бекенду мобільного додатку (Grafana/Prometheus)
Середній
~2-3 дні
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Настройка мониторинга бэкенда мобільного приложення (Grafana/Prometheus)

Коли користувачі пишуть «приложение не працює», а Crashlytics мовчить — значить проблема на бекенді. Prometheus + Grafana дають видимість у те, що відбувається з API-серверами, базами даних та чергами прямо зараз — і показують деградацію до того, як вона стала інцидентом.

Що збираємо та навіщо

Для бекенду мобільного приложення критичні чотири групи метрик:

API-метрики — latency, error rate, throughput за кожним endpoint. Особливо важливий p95 та p99 latency: середні значення приховують хвостові затримки, а саме вони руйнують UX мобільного приложення. Користувач з p99 у 8 секунд піде, навіть якщо середнє — 200ms.

Метрики баз даних — active connections, query duration, lock waits, replication lag. pg_stat_statements через postgres_exporter дає зріз найповільніших запитів.

Метрики інфраструктури — CPU, RAM, disk I/O, network saturation на кожному вузлі.

Метрики черг — для приложень з фоновою обробкою: глибина черги RabbitMQ/Kafka, lag consumer groups, час обробки повідомлення.

Інструментування API-сервера

Prometheus очікує метрики у своєму форматі. Для різних мов — готові клієнтські бібліотеки:

# Python (FastAPI / Flask)
from prometheus_fastapi_instrumentator import Instrumentator

app = FastAPI()
Instrumentator().instrument(app).expose(app)
# Endpoint /metrics з'являється автоматично
// Go (Echo / Gin)
import "github.com/prometheus/client_golang/prometheus/promhttp"

func setupMetrics(e *echo.Echo) {
    httpRequestsTotal := prometheus.NewCounterVec(
        prometheus.CounterOpts{Name: "http_requests_total"},
        []string{"method", "path", "status"},
    )
    prometheus.MustRegister(httpRequestsTotal)

    e.Use(func(next echo.HandlerFunc) echo.HandlerFunc {
        return func(c echo.Context) error {
            err := next(c)
            httpRequestsTotal.WithLabelValues(
                c.Request().Method, c.Path(),
                strconv.Itoa(c.Response().Status),
            ).Inc()
            return err
        }
    })
    e.GET("/metrics", echo.WrapHandler(promhttp.Handler()))
}

Важливо: не створювати метрику з path як high-cardinality label — якщо в path є user_id або інші динамічні значення, Prometheus захлебнеться. Нормалізуй шлях: /users/12345/profile/users/:id/profile.

Конфігурація Prometheus

Базовий prometheus.yml для мобільного бекенду:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'api-server'
    static_configs:
      - targets: ['api:8080']
    metrics_path: /metrics

  - job_name: 'postgres'
    static_configs:
      - targets: ['postgres-exporter:9187']

  - job_name: 'redis'
    static_configs:
      - targets: ['redis-exporter:9121']

  - job_name: 'node'
    static_configs:
      - targets: ['node-exporter:9100']

Для production — Service Discovery через Consul або Kubernetes service discovery замість static_configs.

Дашборди в Grafana

Не потрібно будувати дашборди з нуля — Grafana.com/dashboards містить готові: ID 1860 для Node Exporter, ID 9628 для PostgreSQL через postgres_exporter. Імпортуються одним кліком.

Для API-мониторинга будуємо кастомний дашборд з ключовими панелями:

  • rate(http_requests_total[5m]) — RPS за endpoint
  • histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) — p95 latency
  • rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) — error rate

Алертинг через Alertmanager

Grafana Alerting або Alertmanager — настроюємо пороги для PagerDuty/Telegram/Slack. Мінімальний набір алертів для мобільного бекенду:

# alerting/rules.yml
groups:
  - name: api
    rules:
      - alert: HighErrorRate
        expr: rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.05
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "Error rate > 5% on {{ $labels.job }}"

      - alert: HighLatency
        expr: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) > 1
        for: 5m
        annotations:
          summary: "p95 latency > 1s"

for: 2m — не піднімати алерт при короткочасних всплесках, тільки при стійкій деградації.

Що входить у роботу

  • Docker Compose або Kubernetes маніфести для Prometheus, Grafana, Alertmanager
  • Інструментування API-сервера (Python / Go / Node.js / Java)
  • Підключення експортерів: postgres_exporter, redis_exporter, node_exporter
  • Кастомні дашборди в Grafana під специфіку приложення
  • Настройка алертів з маршрутизацією в Telegram / Slack / PagerDuty
  • Документація з метрик та порогів алертів

Строки

Базова установка з готовими дашбордами та алертами: 2–3 дні. Повний стек з кастомними метриками, інструментуванням коду та production-ready конфігурацією: 4–6 днів. Вартість розраховується індивідуально.