Налаштування кастомних дашбордів моніторингу інфраструктури (Grafana)

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

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

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

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

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування кастомних дашбордів моніторингу інфраструктури (Grafana)
Середня
~2-3 робочих дні
Часті питання

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

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

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

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Налаштування користувальницьких дашбордів моніторингу (Grafana)

Grafana дашборди — це візуальна мова стану інфраструктури. Типові дашборди з community часто перевантажені ненужними панелями і не відповідають на конкретні запитання вашого сервісу. Користувальницький дашборд будується від запитань, які задає команда, а не від доступних метрик.

Принципи побудови ефективного дашборду

Ієрархія інформації. Верхній рядок — найважливіше: сервіс працює або ні. Деталізація нижче. Не змушуйте очі шукати статус.

Actionable метрики. Кожна панель відповідає на запитання, яке впливає на рішення. «CPU 67%» — не actionable. «CPU 67%, target 60%, trending up, 3 інстанси масштабуються» — actionable.

Часові змінні. $__timeRange та $__interval дозволяють змінювати період перегляду та зберігати дозвіл графіків.

Структура дашборду для веб-приложення

Row 1: Service Health (великі stat панелі)
  [Error Rate %] [P95 Latency ms] [Uptime %] [Active Users]

Row 2: Traffic & Performance
  [RPS - timeseries] [Response time P50/P95/P99 - timeseries] [HTTP status breakdown]

Row 3: Infrastructure
  [CPU % per host] [Memory % per host] [Disk I/O] [Network I/O]

Row 4: Database
  [DB Connections active/max] [Query latency P95] [Slow queries count]

Row 5: Cache
  [Redis hit rate %] [Redis memory usage] [Evictions per sec]

Prometheus запити для ключових панелей

Error Rate:

sum(rate(http_requests_total{status=~"5..", job="app"}[5m]))
/
sum(rate(http_requests_total{job="app"}[5m]))
* 100

P95 Latency:

histogram_quantile(0.95,
  sum(rate(http_request_duration_seconds_bucket{job="app"}[5m])) by (le)
)

Active DB Connections:

pg_stat_activity_count{datname="mydb", state="active"}

Redis Hit Rate:

rate(redis_keyspace_hits_total[5m])
/
(rate(redis_keyspace_hits_total[5m]) + rate(redis_keyspace_misses_total[5m]))
* 100

Змінні дашборду

Змінні роблять дашборд універсальним:

{
  "templating": {
    "list": [
      {
        "name": "environment",
        "type": "custom",
        "options": [
          {"text": "production", "value": "production"},
          {"text": "staging", "value": "staging"}
        ]
      },
      {
        "name": "instance",
        "type": "query",
        "query": "label_values(up{job='app', env='$environment'}, instance)"
      }
    ]
  }
}

Використання у запитах: {job="app", env="$environment", instance="$instance"}.

Аннотації деплоїв

Вертикальна лінія на графіках при кожному деплої — швидко видно кореляцію між деплоєм та деградацією:

# CI/CD: відправити аннотацію після деплою
import requests

def create_grafana_annotation(grafana_url: str, api_key: str, text: str, tags: list):
    requests.post(
        f"{grafana_url}/api/annotations",
        headers={"Authorization": f"Bearer {api_key}"},
        json={
            "text": text,
            "tags": tags,
            "time": int(time.time() * 1000)  # milliseconds
        }
    )

# У CI/CD конвеєрі після успішного деплою:
create_grafana_annotation(
    GRAFANA_URL, API_KEY,
    text=f"Deploy v{VERSION} to production",
    tags=["deploy", "production"]
)

Dashboard as Code (Grafonnet / Terraform)

Зберігати дашборди у git, а не тільки у UI:

// Grafonnet: dashboard as code
local grafana = import 'grafonnet/grafana.libsonnet';
local dashboard = grafana.dashboard;
local graphPanel = grafana.graphPanel;

dashboard.new(
  'Application Overview',
  time_from='now-1h',
  refresh='30s',
)
.addPanel(
  graphPanel.new(
    'Error Rate',
    datasource='Prometheus',
  )
  .addTarget(
    grafana.prometheus.target(
      'sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) * 100',
      legendFormat='Error Rate %'
    )
  ),
  gridPos={ x: 0, y: 0, w: 12, h: 8 }
)

Або через Terraform Grafana провайдер: resource "grafana_dashboard" "app".

Спільний доступ та дозвіл

  • Read-only публічний URL — для статус-панелі в офісі
  • Snapshot — поділитися поточним станом із кимось без доступу до Grafana
  • Вбудовані панелі — вбудувати у внутрішній портал команди

Часова шкала створення

  • Базові панелі (error rate, latency, traffic) — 1-2 дні
  • Повний дашборд приложення (всі шари) — 3-5 днів
  • Dashboard as code + git workflow — 1-2 дні
  • Аннотації деплоїв — 1 день