Установка и использование Grafana на Ubuntu: полное руководство

Настройте Grafana для мониторинга и визуализации

Содержимое страницы

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

grafana Это скриншот с сайта Grafana.

Что такое Grafana?

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

Основные возможности:

  • Универсальная панель управления Создавайте красивые, динамические панели с гибким шаблонированием
  • Множество источников данных Подключайтесь к 150+ источникам данных, включая Prometheus, InfluxDB, Elasticsearch, MySQL, PostgreSQL и другим
  • Оповещения Единая система оповещений с каналами уведомлений (Slack, PagerDuty, email, вебхуки)
  • Командная работа Делитесь панелями, создавайте команды и управляйте правами пользователей
  • Экосистема плагинов Расширяйте функциональность с помощью панелей, источников данных и приложений
  • Совместимость с облачными технологиями Идеально подходит для Kubernetes, Docker и облачных сред

Почему Grafana на Ubuntu?

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

Преимущества включают:

  • Долгосрочная поддержка и обновления безопасности
  • Большое сообщество и обширная документация
  • Нативная поддержка репозиториев APT от Grafana Labs
  • Отличная совместимость с Docker
  • Идеально подходит как для разработки, так и для производственных сред

Методы установки

Метод 1: Установка через APT-репозиторий (Рекомендуется)

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

Шаг 1: Установка предварительных требований

sudo apt-get install -y apt-transport-https software-properties-common wget

Шаг 2: Добавление ключа GPG Grafana

sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

Шаг 3: Добавление APT-репозитория Grafana

Для стабильных релизов:

echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Шаг 4: Обновление и установка Grafana

sudo apt-get update
sudo apt-get install grafana

Шаг 5: Запуск и включение службы Grafana

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server.service

Шаг 6: Проверка установки

sudo systemctl status grafana-server

Grafana теперь будет работать на http://localhost:3000

Метод 2: Установка с использованием Docker

Docker обеспечивает изоляцию и более простое управление контейнеризированными развертываниями.

Шаг 1: Установка Docker (если еще не установлен)

sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker
sudo systemctl enable docker

Шаг 2: Запуск контейнера Grafana

docker run -d \
  --name=grafana \
  -p 3000:3000 \
  -v grafana-storage:/var/lib/grafana \
  grafana/grafana-oss

Для сохранения конфигурации:

docker run -d \
  --name=grafana \
  -p 3000:3000 \
  -v grafana-storage:/var/lib/grafana \
  -v $(pwd)/grafana.ini:/etc/grafana/grafana.ini \
  -e "GF_SERVER_ROOT_URL=http://your-domain.com" \
  -e "GF_SECURITY_ADMIN_PASSWORD=your-secure-password" \
  grafana/grafana-oss

Метод 3: Установка с использованием Docker Compose

Создайте файл docker-compose.yml:

version: '3.8'

services:
  grafana:
    image: grafana/grafana-oss:latest
    container_name: grafana
    restart: unless-stopped
    ports:
      - '3000:3000'
    volumes:
      - grafana-storage:/var/lib/grafana
      - ./grafana/provisioning:/etc/grafana/provisioning
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=your-secure-password
      - GF_USERS_ALLOW_SIGN_UP=false
      - GF_SERVER_ROOT_URL=http://your-domain.com

volumes:
  grafana-storage:

Запустите с помощью:

docker-compose up -d

Начальная конфигурация

Первый вход

  1. Перейдите по адресу http://your-server-ip:3000
  2. Стандартные учетные данные:
    • Имя пользователя: admin
    • Пароль: admin
  3. Вас попросят сразу же изменить пароль (это очень рекомендуется!)

Настройка первого источника данных

Пример: Добавление Prometheus

  1. Нажмите Configuration (иконка шестеренки) → Data Sources
  2. Нажмите Add data source
  3. Выберите Prometheus
  4. Настройте:
    • Name: Prometheus
    • URL: http://localhost:9090 (настройте для вашей инстанции Prometheus)
    • Access: Server (по умолчанию)
  5. Нажмите Save & Test

Пример: Добавление InfluxDB

  1. Выберите InfluxDB в качестве источника данных
  2. Настройте:
    • Query Language: Flux или InfluxQL
    • URL: http://localhost:8086
    • Database: your_database_name
    • User/Password: ваши учетные данные
  3. Нажмите Save & Test

Создание первой панели управления

  1. Нажмите Create (+ иконка) → Dashboard
  2. Нажмите Add new panel
  3. Выберите ваш источник данных
  4. Напишите ваш запрос (пример для Prometheus):
rate(http_requests_total[5m])
  1. Настройте визуализацию:
    • Выберите тип панели (График, Манометр, Статистика, Таблица и т.д.)
    • Настройте легенды, оси, пороги
    • Добавьте преобразования, если необходимо
  2. Нажмите Apply для сохранения панели
  3. Нажмите Save dashboard (иконка диска)

Расширенная конфигурация

Настройка параметров Grafana

Отредактируйте основной файл конфигурации:

sudo nano /etc/grafana/grafana.ini

Важные параметры:

[server]
# Протокол (http, https, h2, socket)
protocol = http
http_port = 3000
domain = your-domain.com
root_url = http://your-domain.com

[security]
admin_user = admin
admin_password = your-secure-password
secret_key = your-secret-key

[users]
# Отключить регистрацию пользователей
allow_sign_up = false
allow_org_create = false

[auth.anonymous]
enabled = false

[smtp]
enabled = true
host = smtp.gmail.com:587
user = your-email@gmail.com
password = your-app-password
from_address = your-email@gmail.com
from_name = Grafana

Перезапустите после изменений:

sudo systemctl restart grafana-server

Настройка обратного прокси (Nginx)

Установка Nginx:

sudo apt install nginx

Создание конфигурации Nginx:

sudo nano /etc/nginx/sites-available/grafana
server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Включение и перезапуск:

sudo ln -s /etc/nginx/sites-available/grafana /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Включение HTTPS с Let’s Encrypt

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com

Настройка оповещений

Шаг 1: Настройка канала уведомлений

  1. Перейдите в AlertingContact points
  2. Нажмите New contact point
  3. Выберите тип (Email, Slack, PagerDuty, Webhook и т.д.)
  4. Настройте параметры (например, URL вебхука Slack)
  5. Проверьте и сохраните

Шаг 2: Создание правила оповещения

  1. Отредактируйте панель в вашей панели управления
  2. Нажмите вкладку Alert
  3. Настройте условия:
    • When: avg()
    • Of: query(A, 5m, now)
    • Is Above: 80
  4. Установите интервал оценки
  5. Добавьте канал уведомлений
  6. Сохраните

Популярные сценарии использования

Мониторинг инфраструктуры

Стек: Prometheus + Node Exporter + Grafana

Мониторинг системных метрик:

  • Использование CPU, памяти, диска
  • Сетевой трафик
  • Нагрузка системы
  • Ввод-вывод диска

Для мониторинга NVIDIA GPU в частности, вы можете рассмотреть специализированные приложения для мониторинга GPU в Linux/Ubuntu, которые хорошо интегрируются с Grafana.

Импортируйте ID панели: 1860 (Node Exporter Full)

Мониторинг Kubernetes

Стек: Prometheus + kube-state-metrics + Grafana

Мониторинг кластера K8s:

  • Метрики подов и контейнеров
  • Использование ресурсов кластера
  • Статус развертывания
  • Мониторинг ингрессов/сервисов

Импортируйте ID панели: 15757 (Kubernetes Cluster Monitoring)

Мониторинг производительности приложений

Стек: Loki + Promtail + Grafana

Мониторинг логов и метрик приложений:

  • Частота запросов и задержки
  • Частота ошибок
  • Агрегация и фильтрация логов
  • Распределенное трассирование

Мониторинг баз данных

Мониторинг MySQL, PostgreSQL, MongoDB:

  • Производительность запросов
  • Пулы соединений
  • Медленные запросы
  • Статус репликации

Лучшие практики создания панелей

  1. Организуйте по назначению: Создавайте отдельные панели для разных команд/сервисов
  2. Используйте переменные: Создавайте динамические панели с шаблонными переменными
  3. Устанавливайте подходящие временные диапазоны: Устанавливайте значения по умолчанию для значимых временных окон
  4. Добавляйте аннотации: Помечайте развертывания и инциденты
  5. Используйте папки: Организуйте панели логически
  6. Включите версионирование: Отслеживайте изменения панелей
  7. Устанавливайте интервалы обновления: Балансируйте потребности в реальном времени с производительностью
  8. Добавляйте документацию: Используйте текстовые панели для объяснения метрик

Устранение распространенных проблем

Сервис Grafana не запускается

# Проверка логов
sudo journalctl -u grafana-server -f

# Проверка конфигурации
sudo grafana-cli admin reset-admin-password newpassword

Проблемы с подключением источника данных

  • Проверьте сетевое подключение: telnet datasource-host port
  • Проверьте правила брандмауэра
  • Проверьте учетные данные
  • Проверьте логи сервиса источника данных

Проблемы с производительностью

  • Уменьшите диапазоны времени запросов
  • Оптимизируйте запросы к источнику данных
  • Увеличьте ресурсы сервера
  • Используйте кэширование при возможности
  • Рассмотрите кэширование результатов запросов

Панель не загружается

  • Очистите кэш браузера
  • Проверьте консоль браузера на наличие ошибок
  • Убедитесь, что JSON панели не поврежден
  • Проверьте логи сервера Grafana

Резервное копирование и обслуживание

Резервное копирование базы данных Grafana

# Остановка Grafana
sudo systemctl stop grafana-server

# Резервное копирование базы данных SQLite
sudo cp /var/lib/grafana/grafana.db /backup/grafana-$(date +%Y%m%d).db

# Резервное копирование конфигурации
sudo cp /etc/grafana/grafana.ini /backup/grafana-ini-$(date +%Y%m%d).bak

# Запуск Grafana
sudo systemctl start grafana-server

Автоматизированный скрипт резервного копирования

Вот bash-скрипт для автоматизации резервного копирования Grafana. Если вам нужна быстрая справка по синтаксису и командам bash, ознакомьтесь с нашим Шпаргалкой по Bash для полезных советов и примеров.

#!/bin/bash
BACKUP_DIR="/backup/grafana"
mkdir -p $BACKUP_DIR
DATE=$(date +%Y%m%d_%H%M%S)

# Резервное копирование базы данных
sudo cp /var/lib/grafana/grafana.db $BACKUP_DIR/grafana-$DATE.db

# Резервное копирование панелей через API
curl -H "Authorization: Bearer YOUR_API_KEY" \
  http://localhost:3000/api/search?type=dash-db | \
  jq -r '.[] | .uid' | \
  xargs -I{} curl -H "Authorization: Bearer YOUR_API_KEY" \
  http://localhost:3000/api/dashboards/uid/{} > $BACKUP_DIR/dashboards-$DATE.json

# Оставляем только последние 30 дней
find $BACKUP_DIR -mtime +30 -delete

Обновление Grafana

# Метод APT
sudo apt update
sudo apt upgrade grafana

# Метод Docker
docker pull grafana/grafana-oss:latest
docker-compose down
docker-compose up -d

Усиление безопасности

  1. Измените стандартные учетные данные сразу после установки
  2. Используйте HTTPS с действительными сертификатами
  3. Настройте брандмауэр:
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw enable
    
  4. Отключите анонимный доступ
  5. Используйте надежную аутентификацию (LDAP, OAuth, SAML)
  6. Регулярные обновления Держите Grafana в актуальном состоянии
  7. Ограничьте права пользователей Используйте управление доступом на основе ролей
  8. Включите аудит-логирование
  9. Используйте только для чтения источники данных где это возможно
  10. Реализуйте ограничение скорости

Мониторинг самого Grafana

Мониторьте свою инсталляцию Grafana:

  1. Включите метрический endpoint в grafana.ini:
    [metrics]
    enabled = true
    
  2. Добавьте Grafana как цель Prometheus
  3. Импортируйте панель метрик Grafana

Полезные плагины

Установка плагинов через CLI:

sudo grafana-cli plugins install <plugin-id>
sudo systemctl restart grafana-server

Рекомендуемые плагины:

  • grafana-piechart-panel: Улучшенные круговые диаграммы
  • grafana-worldmap-panel: Визуализация географических данных
  • grafana-clock-panel: Отображение времени и даты
  • grafana-simple-json-datasource: Подключение к пользовательским JSON API
  • alexanderzobnin-zabbix-app: Интеграция с Zabbix

Примеры интеграции

Grafana + Prometheus + Node Exporter

Полная настройка мониторинга:

# Установка Node Exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvfz node_exporter-1.7.0.linux-amd64.tar.gz
sudo cp node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
sudo useradd -rs /bin/false node_exporter

# Создание systemd сервиса
sudo tee /etc/systemd/system/node_exporter.service << EOF
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl start node_exporter
sudo systemctl enable node_exporter

Grafana с InfluxDB и Telegraf

Настройка мониторинга временных рядов:

# Установка InfluxDB
wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
sudo apt update && sudo apt install influxdb
sudo systemctl start influxdb
sudo systemctl enable influxdb

# Установка Telegraf
sudo apt install telegraf
sudo systemctl start telegraf
sudo systemctl enable telegraf

Оптимизация производительности

Оптимизация запросов

  • Используйте подходящие диапазоны времени
  • Ограничьте количество возвращаемых точек данных
  • Используйте стратегии кэширования
  • Агрегируйте данные на источнике при возможности
  • Используйте правила записи в Prometheus

Оптимизация сервера

[database]
# Увеличьте максимальное количество подключений
max_open_conn = 300
max_idle_conn = 100

[dataproxy]
# Настройки таймаута
timeout = 30
keep_alive_seconds = 30

[rendering]
# Включите ограничение параллельного рендеринга
concurrent_render_limit = 10

Полезные ссылки

Заключение

Grafana на Ubuntu предоставляет мощную, гибкую платформу для мониторинга и наблюдения. Будь то мониторинг одного сервера или огромного кластера Kubernetes, богатые возможности визуализации Grafana, обширная поддержка источников данных и активное сообщество делают его отличным выбором для команд DevOps.

Начните с простой настройки с использованием метода APT-репозитория, подключите свой первый источник данных и постепенно расширяйте возможности мониторинга. Не забывайте приоритизировать безопасность, регулярное резервное копирование и оптимизацию производительности по мере роста вашей инсталляции Grafana.

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