Установка и использование Grafana на Ubuntu: полное руководство
Настройте 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
Начальная конфигурация
Первый вход
- Перейдите по адресу
http://your-server-ip:3000 - Стандартные учетные данные:
- Имя пользователя:
admin - Пароль:
admin
- Имя пользователя:
- Вас попросят сразу же изменить пароль (это очень рекомендуется!)
Настройка первого источника данных
Пример: Добавление Prometheus
- Нажмите Configuration (иконка шестеренки) → Data Sources
- Нажмите Add data source
- Выберите Prometheus
- Настройте:
- Name: Prometheus
- URL:
http://localhost:9090(настройте для вашей инстанции Prometheus) - Access: Server (по умолчанию)
- Нажмите Save & Test
Пример: Добавление InfluxDB
- Выберите InfluxDB в качестве источника данных
- Настройте:
- Query Language: Flux или InfluxQL
- URL:
http://localhost:8086 - Database: your_database_name
- User/Password: ваши учетные данные
- Нажмите Save & Test
Создание первой панели управления
- Нажмите Create (+ иконка) → Dashboard
- Нажмите Add new panel
- Выберите ваш источник данных
- Напишите ваш запрос (пример для Prometheus):
rate(http_requests_total[5m])
- Настройте визуализацию:
- Выберите тип панели (График, Манометр, Статистика, Таблица и т.д.)
- Настройте легенды, оси, пороги
- Добавьте преобразования, если необходимо
- Нажмите Apply для сохранения панели
- Нажмите 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: Настройка канала уведомлений
- Перейдите в Alerting → Contact points
- Нажмите New contact point
- Выберите тип (Email, Slack, PagerDuty, Webhook и т.д.)
- Настройте параметры (например, URL вебхука Slack)
- Проверьте и сохраните
Шаг 2: Создание правила оповещения
- Отредактируйте панель в вашей панели управления
- Нажмите вкладку Alert
- Настройте условия:
- When: avg()
- Of: query(A, 5m, now)
- Is Above: 80
- Установите интервал оценки
- Добавьте канал уведомлений
- Сохраните
Популярные сценарии использования
Мониторинг инфраструктуры
Стек: 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:
- Производительность запросов
- Пулы соединений
- Медленные запросы
- Статус репликации
Лучшие практики создания панелей
- Организуйте по назначению: Создавайте отдельные панели для разных команд/сервисов
- Используйте переменные: Создавайте динамические панели с шаблонными переменными
- Устанавливайте подходящие временные диапазоны: Устанавливайте значения по умолчанию для значимых временных окон
- Добавляйте аннотации: Помечайте развертывания и инциденты
- Используйте папки: Организуйте панели логически
- Включите версионирование: Отслеживайте изменения панелей
- Устанавливайте интервалы обновления: Балансируйте потребности в реальном времени с производительностью
- Добавляйте документацию: Используйте текстовые панели для объяснения метрик
Устранение распространенных проблем
Сервис 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
Усиление безопасности
- Измените стандартные учетные данные сразу после установки
- Используйте HTTPS с действительными сертификатами
- Настройте брандмауэр:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable - Отключите анонимный доступ
- Используйте надежную аутентификацию (LDAP, OAuth, SAML)
- Регулярные обновления Держите Grafana в актуальном состоянии
- Ограничьте права пользователей Используйте управление доступом на основе ролей
- Включите аудит-логирование
- Используйте только для чтения источники данных где это возможно
- Реализуйте ограничение скорости
Мониторинг самого Grafana
Мониторьте свою инсталляцию Grafana:
- Включите метрический endpoint в
grafana.ini:[metrics] enabled = true - Добавьте Grafana как цель Prometheus
- Импортируйте панель метрик 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 GitHub
- Документация Prometheus
- Документация InfluxDB
- Как установить Ubuntu 24.04 и полезные инструменты
- Приложения для мониторинга GPU в Linux / Ubuntu
- Сочетания клавиш Ubuntu: полная шпаргалка
- Шпаргалка по Bash
Заключение
Grafana на Ubuntu предоставляет мощную, гибкую платформу для мониторинга и наблюдения. Будь то мониторинг одного сервера или огромного кластера Kubernetes, богатые возможности визуализации Grafana, обширная поддержка источников данных и активное сообщество делают его отличным выбором для команд DevOps.
Начните с простой настройки с использованием метода APT-репозитория, подключите свой первый источник данных и постепенно расширяйте возможности мониторинга. Не забывайте приоритизировать безопасность, регулярное резервное копирование и оптимизацию производительности по мере роста вашей инсталляции Grafana.
С правильной настройкой и соблюдением лучших практик Grafana становится незаменимым инструментом в вашем стеке наблюдения, предоставляя действенные инсайты, которые помогают поддерживать надежные и производительные системы.