[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-nablyudaemost-chto-takoe-grafana-i-kak-vizualizirovat-metriki":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},763,"chto-takoe-grafana-i-kak-vizualizirovat-metriki",20,"nablyudaemost","Наблюдаемость","📊","Что такое Grafana и как визуализировать метрики?","Grafana — open-source платформа для визуализации, мониторинга и анализа данных из множества источников. Grafana не хранит данные — только визуализирует их из подключённых data sources.\n\n> **Аналогия из жизни:** Grafana — это телевизор с множеством входов (HDMI, USB, антенна). Он не создаёт контент, но показывает видео из любого подключённого источника в удобном формате.\n\n### Ключевые компоненты\n\n| Компонент | Описание |\n|-----------|----------|\n| Data Sources | Подключения к хранилищам: Prometheus (PromQL), Loki (LogQL), Tempo, Elasticsearch, PostgreSQL |\n| Dashboards | Набор панелей для визуализации данных |\n| Panels | Отдельные визуализации: Time series, Stat, Gauge, Table, Heatmap, Logs, Traces |\n\n\u003Cdetails>\u003Csummary>Настройка data sources (provisioning)\u003C\u002Fsummary>\n\n```yaml\n# grafana\u002Fprovisioning\u002Fdatasources\u002Fdatasources.yml\napiVersion: 1\ndatasources:\n  - name: Prometheus\n    type: prometheus\n    access: proxy\n    url: http:\u002F\u002Fprometheus:9090\n    isDefault: true\n    jsonData:\n      exemplarTraceIdDestinations:\n        - name: traceID\n          datasourceUid: tempo\n\n  - name: Loki\n    type: loki\n    access: proxy\n    url: http:\u002F\u002Floki:3100\n    jsonData:\n      derivedFields:\n        - name: TraceID\n          matcherRegex: \"traceId=(\\\\w+)\"\n          url: \"$${__value.raw}\"\n          datasourceUid: tempo\n\n  - name: Tempo\n    type: tempo\n    access: proxy\n    url: http:\u002F\u002Ftempo:3200\n    jsonData:\n      tracesToLogsV2:\n        datasourceUid: loki\n        filterByTraceID: true\n      tracesToMetrics:\n        datasourceUid: prometheus\n```\n\n\u003C\u002Fdetails>\n\n### Стандартные дашборды для Spring Boot\n\n| ID | Название | Что показывает |\n|----|---------|---------------|\n| 4701 | JVM (Micrometer) | Heap, non-heap, GC, threads, classloading |\n| 11378 | Spring Boot Statistics | HTTP requests, response times, error rates |\n| 6756 | HikariCP | Connections (active, idle, pending), timeouts |\n| 7362 | Kafka Consumer | Lag, records consumed, fetch latency |\n\n### Пример PromQL-запросов для дашборда\n\n```promql\n# HTTP Requests Rate (по статусу)\nsum by (status) (rate(http_server_requests_seconds_count{application=\"$application\"}[5m]))\n\n# HTTP Response Time (p99, p95, p50)\nhistogram_quantile(0.99, sum(rate(http_server_requests_seconds_bucket{application=\"$application\"}[5m])) by (le))\n\n# JVM Heap Used\njvm_memory_used_bytes{application=\"$application\", area=\"heap\"}\n\n# HikariCP Active Connections\nhikaricp_connections_active{application=\"$application\"}\n```\n\n### Переменные (Variables) в дашбордах\n\nПеременные позволяют создавать параметризованные дашборды:\n\n```\n# Variable: application\nType: Query\nQuery: label_values(jvm_memory_used_bytes, application)\n\n# Variable: instance\nType: Query\nQuery: label_values(jvm_memory_used_bytes{application=\"$application\"}, instance)\n```\n\nИспользуются в запросах как `$application`, `$instance`.\n\n\u003Cdetails>\u003Csummary>Docker Compose для локального observability-стека\u003C\u002Fsummary>\n\n```yaml\n# docker-compose-observability.yml\nversion: '3.8'\nservices:\n  prometheus:\n    image: prom\u002Fprometheus:v2.53.0\n    ports:\n      - \"9090:9090\"\n    volumes:\n      - .\u002Fprometheus\u002Fprometheus.yml:\u002Fetc\u002Fprometheus\u002Fprometheus.yml\n      - .\u002Fprometheus\u002Falert_rules.yml:\u002Fetc\u002Fprometheus\u002Falert_rules.yml\n    command:\n      - '--config.file=\u002Fetc\u002Fprometheus\u002Fprometheus.yml'\n      - '--storage.tsdb.retention.time=7d'\n      - '--web.enable-lifecycle'\n\n  grafana:\n    image: grafana\u002Fgrafana:11.1.0\n    ports:\n      - \"3000:3000\"\n    environment:\n      - GF_SECURITY_ADMIN_PASSWORD=admin\n      - GF_INSTALL_PLUGINS=grafana-clock-panel\n    volumes:\n      - .\u002Fgrafana\u002Fprovisioning:\u002Fetc\u002Fgrafana\u002Fprovisioning\n      - grafana-data:\u002Fvar\u002Flib\u002Fgrafana\n\n  loki:\n    image: grafana\u002Floki:3.1.0\n    ports:\n      - \"3100:3100\"\n    command: -config.file=\u002Fetc\u002Floki\u002Flocal-config.yaml\n\n  tempo:\n    image: grafana\u002Ftempo:2.5.0\n    ports:\n      - \"3200:3200\"\n      - \"4317:4317\"    # OTLP gRPC\n      - \"4318:4318\"    # OTLP HTTP\n    command: [\"-config.file=\u002Fetc\u002Ftempo\u002Ftempo.yaml\"]\n    volumes:\n      - .\u002Ftempo\u002Ftempo.yaml:\u002Fetc\u002Ftempo\u002Ftempo.yaml\n\n  promtail:\n    image: grafana\u002Fpromtail:3.1.0\n    volumes:\n      - \u002Fvar\u002Flog:\u002Fvar\u002Flog\n      - .\u002Fpromtail\u002Fconfig.yml:\u002Fetc\u002Fpromtail\u002Fconfig.yml\n    command: -config.file=\u002Fetc\u002Fpromtail\u002Fconfig.yml\n\nvolumes:\n  grafana-data:\n```\n\n\u003C\u002Fdetails>\n\n### Важное\n- Grafana **не хранит данные** — только визуализирует. Данные остаются в Prometheus, Loki, Tempo и т.д.\n- **Dashboard as Code**: дашборды можно хранить как JSON и версионировать в Git (provisioning).\n- **Корреляция сигналов**: настройте связи между Prometheus -> Tempo (exemplars), Loki -> Tempo (derived fields), Tempo -> Loki\u002FPrometheus (trace-to-logs\u002Fmetrics).\n- Grafana поддерживает **Explore** режим для ad-hoc запросов (отладки), в отличие от дашбордов, которые предназначены для постоянного мониторинга.\n\n### Частые ошибки\n- **Перегруженные дашборды**: 30 панелей на одном дашборде — нечитаемо. Разделяйте по уровням: Overview -> Service -> Detail.\n- **Хардкод значений**: используйте переменные (`$application`, `$instance`) вместо конкретных имён в запросах.\n- **Отсутствие документации на дашборде**: добавляйте Text-панели с описанием, что мониторится и какие пороговые значения нормальны.\n- **Не настроенные корреляции**: клик из графика метрик должен вести к трейсу, из трейса — к логам.\n\n### Как используется в 2026\n- **Grafana 11+** с нативной поддержкой AI-ассистента (Grafana LLM) для генерации PromQL\u002FLogQL запросов.\n- **Grafana Scenes** — новый фреймворк для программного создания дашбордов на TypeScript.\n- **Grafana OnCall** — встроенный инструмент для управления дежурствами и эскалациями.\n- **Unified Alerting** — единая система алертинга для всех data sources (Prometheus, Loki, SQL и др.).\n- **Grafana Cloud** с бесплатным уровнем — популярный выбор для стартапов.\n\n> **На собеседовании:** подчеркните, что Grafana — инструмент визуализации, а не хранения данных. Упомяните корреляцию сигналов (metrics -> traces -> logs) — это показывает зрелое понимание observability-стека. Знание конкретных dashboard ID (4701, 11378) производит хорошее впечатление.","","middle",[15],"observability",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Что такое Grafana и как визуализировать метрики? — Gymterview","Grafana — open-source платформа для визуализации, мониторинга и анализа данных из множества источников. Grafana не хранит данные — только визуализирует их из по","Grafana — open-source платформа для визуализации, мониторинга и анализа данных из множества источников. Grafana не храни",[15,13],"Grafana — open-source платформа для визуализации, мониторинга и анализа данных из множества источников. Grafana не хранит данные — только визуализирует их из подключённых data sources.",true]