Zainstaluj i skorzystaj z Grafany na Ubuntu: Kompletny przewodnik
Zdobądź wiedzę na temat konfiguracji Grafana do monitorowania i wizualizacji
Grafana to prowadzony platforma open-source do monitorowania i obserwacji, która przekształca metryki, logi i śledzenia w działania wizualizacji, które dają wgląd w działania.
To screenshot z witryny Grafana.
Co to jest Grafana?
Grafana to aplikacja webowa, która jest wieloplatformową, open-source analizą i interaktywną wizualizacją. Zapewnia wykresy, grafy i alerty w sieci, gdy jest połączona z obsługiwanej źródła danych. Grafana jest szeroko wykorzystywana w DevOps do monitorowania infrastruktury, aplikacji i usług.
Główne funkcje:
- Uniwersalny panel – tworzenie pięknych, dynamicznych paneli z elastycznym szablonem
- Wiele źródeł danych – połączenie z ponad 150 źródłami danych, w tym Prometheus, InfluxDB, Elasticsearch, MySQL, PostgreSQL i wiele innych
- Ostrzeżenie – zintegrowany system ostrzeżeń z kanałami powiadomień (Slack, PagerDuty, e-mail, webhooki)
- Współpraca w zespole – udostępnianie paneli, tworzenie zespołów i zarządzanie uprawnieniami użytkowników
- Eko-system wtyczek – rozszerzanie funkcji za pomocą paneli, źródeł danych i aplikacji
- Cloud Native – idealna do Kubernetes, Docker i środowisk chmurowych
Dlaczego Grafana na Ubuntu?
Wersje Ubuntu LTS oferują stabilną, bezpieczną podstawę do hostowania Grafany. Jeśli zaczynasz od zera lub potrzebujesz ustawienia nowego środowiska Ubuntu do infrastruktury monitorowania, sprawdź nasz kompletny przewodnik dotyczący jak zainstalować Ubuntu 24.04 z przydatnymi narzędziami, aby przygotować system.
Zalety obejmują:
- Długoterminowa obsługa i aktualizacje bezpieczeństwa
- Duża społeczność i szeroka dokumentacja
- Obsługa lokalnego repozytorium APT od Grafana Labs
- Wysoka kompatybilność z Dockerem
- Idealna zarówno dla środowisk deweloperskich, jak i produkcyjnych
Metody instalacji
Metoda 1: Instalacja za pomocą repozytorium APT (Zalecana)
To najprostszy sposób, który zapewnia automatyczne aktualizacje przez menedżera pakietów Ubuntu. Jeśli jesteś nowy w pracy z terminalami Ubuntu lub chcesz zwiększyć swoją wydajność, nasz przewodnik z cheat sheetem klawiszy skrótów Ubuntu może pomóc Ci lepiej nawigować po systemie.
Krok 1: Zainstaluj wymagania wstępne
sudo apt-get install -y apt-transport-https software-properties-common wget
Krok 2: Dodaj GPG klucz Grafany
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
Krok 3: Dodaj repozytorium APT Grafany
Dla stabilnych wersji:
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
Krok 4: Zaktualizuj i zainstaluj Grafanę
sudo apt-get update
sudo apt-get install grafana
Krok 5: Uruchom i włącz usługę Grafany
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server.service
Krok 6: Sprawdź instalację
sudo systemctl status grafana-server
Grafana będzie teraz działać na http://localhost:3000
Metoda 2: Instalacja za pomocą Docker
Docker zapewnia izolację i łatwiejsze zarządzanie wdrożeniami w kontenerach.
Krok 1: Zainstaluj Docker (jeśli jeszcze nie jest zainstalowany)
sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker
sudo systemctl enable docker
Krok 2: Uruchom kontener Grafany
docker run -d \
--name=grafana \
-p 3000:3000 \
-v grafana-storage:/var/lib/grafana \
grafana/grafana-oss
Dla trwałości z konfiguracją:
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
Metoda 3: Instalacja za pomocą Docker Compose
Utwórz plik 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:
Uruchom za pomocą:
docker-compose up -d
Pierwsza konfiguracja
Pierwszy login
- Przejdź do
http://your-server-ip:3000 - Domyślne dane logowania:
- Użytkownik:
admin - Hasło:
admin
- Użytkownik:
- Natychmiast zostaniesz poproszony o zmianę hasła (bardzo zalecane!)
Konfiguracja pierwszego źródła danych
Przykład: Dodanie Prometheus
- Kliknij Konfiguracja (ikona koła zębatego) → Źródła danych
- Kliknij Dodaj źródło danych
- Wybierz Prometheus
- Skonfiguruj:
- Nazwa: Prometheus
- URL:
http://localhost:9090(dostosuj do swojej instancji Prometheus) - Dostęp: Serwer (domyślnie)
- Kliknij Zapisz i przetestuj
Przykład: Dodanie InfluxDB
- Wybierz InfluxDB jako źródło danych
- Skonfiguruj:
- Język zapytań: Flux lub InfluxQL
- URL:
http://localhost:8086 - Baza danych: twoja nazwa bazy danych
- Użytkownik/Hasło: twoje dane logowania
- Kliknij Zapisz i przetestuj
Tworzenie pierwszego panelu
- Kliknij Utwórz (+ ikona) → Panel
- Kliknij Dodaj nowy panel
- Wybierz źródło danych
- Napisz swoje zapytanie (przykład dla Prometheus):
rate(http_requests_total[5m])
- Dostosuj wizualizację:
- Wybierz typ panelu (Wykres, Wskazówka, Statystyka, Tabela itp.)
- Skonfiguruj legendy, osie, progry
- Dodaj przekształcenia, jeśli są potrzebne
- Kliknij Zastosuj, aby zapisać panel
- Kliknij Zapisz panel (ikona dysku)
Zaawansowana konfiguracja
Konfiguracja ustawień Grafany
Edytuj główny plik konfiguracyjny:
sudo nano /etc/grafana/grafana.ini
Ważne ustawienia:
[server]
# Protokół (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]
# Wyłącz rejestrację użytkownika
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
Uruchom ponownie po zmianach:
sudo systemctl restart grafana-server
Konfiguracja odwrotnego proxy (Nginx)
Zainstaluj Nginx:
sudo apt install nginx
Utwórz konfigurację 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;
}
}
Włącz i uruchom ponownie:
sudo ln -s /etc/nginx/sites-available/grafana /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Włączenie HTTPS z Let’s Encrypt
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
Konfiguracja ostrzeżeń
Krok 1: Skonfiguruj kanał powiadomienia
- Przejdź do Ostrzeżenia → Punkty kontaktowe
- Kliknij Nowy punkt kontaktowy
- Wybierz typ (E-mail, Slack, PagerDuty, Webhook itp.)
- Skonfiguruj ustawienia (np. URL webhooka Slack)
- Przetestuj i zapisz
Krok 2: Utwórz regułę ostrzeżenia
- Edytuj panel w swoim dashboard
- Kliknij Ostrzeżenie
- Skonfiguruj warunki:
- Kiedy: avg()
- Z: query(A, 5m, now)
- Powyżej: 80
- Ustaw interwał oceny
- Dodaj kanał powiadomienia
- Zapisz
Popularne przypadki użycia
Monitorowanie infrastruktury
Stack: Prometheus + Node Exporter + Grafana
Monitoruj metryki systemowe:
- CPU, pamięć, wykorzystanie dysku
- Ruch sieciowy
- Obciążenie systemu
- Wejścia/wyjścia dysku
Dla monitorowania NVIDIA GPU, możesz chcieć eksplorować specjalistyczne aplikacje monitorowania GPU w Linux/Ubuntu, które dobrze współpracują z Grafaną.
Importuj ID panelu: 1860 (Node Exporter Full)
Monitorowanie Kubernetes
Stack: Prometheus + kube-state-metrics + Grafana
Monitoruj klastrowe K8s:
- Metryki kontenerów i podów
- Wykorzystanie zasobów klastra
- Stan wdrożeń
- Monitorowanie wdrożeń i usług
Importuj ID panelu: 15757 (Monitorowanie klastra Kubernetes)
Monitorowanie wydajności aplikacji
Stack: Loki + Promtail + Grafana
Monitoruj logi i metryki aplikacji:
- Prędkości i opóźnienia żądań
- Stawki błędów
- Agregacja i filtrowanie logów
- Śledzenie rozproszonego
Monitorowanie baz danych
Monitoruj MySQL, PostgreSQL, MongoDB:
- Wydajność zapytań
- Pule połączeń
- Wolne zapytania
- Stan replikacji
Najlepsze praktyki dotyczące paneli
- Organizuj według celu: Twórz osobne panele dla różnych zespołów/usług
- Używaj zmiennych: Twórz dynamiczne panele z zmiennymi szablonu
- Ustaw odpowiednie zakresy czasowe: Domyślnie ustaw na znaczące okna czasowe
- Dodaj anotacje: Oznacz wdrożenia i incydenty
- Używaj folderów: Organizuj panele logicznie
- Włącz wersjonowanie: Śledź zmiany paneli
- Ustaw interwały odświeżania: Zrównoważ potrzeby czasu rzeczywistego z wydajnością
- Dodaj dokumentację: Użyj paneli tekstowych, aby wyjaśnić metryki
Rozwiązywanie typowych problemów
Grafana nie uruchamia się
# Sprawdź logi
sudo journalctl -u grafana-server -f
# Sprawdź konfigurację
sudo grafana-cli admin reset-admin-password newpassword
Problemy z połączeniem źródła danych
- Sprawdź łączność sieciową:
telnet datasource-host port - Sprawdź reguły zapory ogniowej
- Sprawdź dane logowania
- Sprawdź logi źródła danych
Problemy z wydajnością
- Zmniejsz zakres czasu zapytań
- Optymalizuj zapytania źródła danych
- Zwiększ zasoby serwera
- Użyj cache, jeśli to możliwe
- Rozważ cache wyników zapytań
Panel nie ładuje się
- Wyczyść pamięć podręczną przeglądarki
- Sprawdź konsolę przeglądarki na błędy
- Sprawdź, czy JSON panelu nie jest uszkodzony
- Sprawdź logi serwera Grafany
Zapasowe kopie i utrzymanie
Zapasowa kopia bazy danych Grafany
# Zatrzymaj Grafanę
sudo systemctl stop grafana-server
# Zapasowa kopia bazy danych SQLite
sudo cp /var/lib/grafana/grafana.db /backup/grafana-$(date +%Y%m%d).db
# Zapasowa kopia konfiguracji
sudo cp /etc/grafana/grafana.ini /backup/grafana-ini-$(date +%Y%m%d).bak
# Uruchom Grafanę
sudo systemctl start grafana-server
Skrypt automatycznej zapasowej kopii
Oto skrypt bash do automatyzacji zapasowych kopii Grafany. Jeśli potrzebujesz szybkiego odniesienia do składni i poleceń skryptu bash, sprawdź nasz przewodnik z cheat sheetem bash dla pomocnych wskazówek i przykładów.
#!/bin/bash
BACKUP_DIR="/backup/grafana"
mkdir -p $BACKUP_DIR
DATE=$(date +%Y%m%d_%H%M%S)
# Zapasowa kopia bazy danych
sudo cp /var/lib/grafana/grafana.db $BACKUP_DIR/grafana-$DATE.db
# Zapasowa kopia paneli za pomocą 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
# Zachowaj tylko ostatnie 30 dni
find $BACKUP_DIR -mtime +30 -delete
Aktualizacja Grafany
# Metoda APT
sudo apt update
sudo apt upgrade grafana
# Metoda Docker
docker pull grafana/grafana-oss:latest
docker-compose down
docker-compose up -d
Wzmocnienie bezpieczeństwa
- Zmień domyślne dane logowania natychmiast
- Użyj HTTPS z ważnymi certyfikatami
- Skonfiguruj zapory ogniowe:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable - Wyłącz dostęp anonimowy
- Użyj silnej autentykacji (LDAP, OAuth, SAML)
- Regularne aktualizacje – utrzymuj Grafanę zaktualizowaną
- Ogranicz uprawnienia użytkowników – użyj kontroli dostępu opartej na rolach
- Włącz logowanie audytowe
- Użyj tylko do odczytu źródeł danych, jeśli to możliwe
- Zaimplementuj ograniczenie przepływu
Monitorowanie samej Grafany
Monitoruj swoją instancję Grafany:
- Włącz punkt końcowy metryk w
grafana.ini:[metrics] enabled = true - Dodaj Grafanę jako cel Prometheus
- Zaimportuj panel metryk Grafany
Przydatne wtyczki
Zainstaluj wtyczki za pomocą CLI:
sudo grafana-cli plugins install <plugin-id>
sudo systemctl restart grafana-server
Zalecane wtyczki:
- grafana-piechart-panel: Zwiększone wykresy kołowe
- grafana-worldmap-panel: Wizualizacja danych geograficznych
- grafana-clock-panel: Wyświetlanie czasu i daty
- grafana-simple-json-datasource: Połączenie z niestandardowymi API JSON
- alexanderzobnin-zabbix-app: Integracja z Zabbix
Przykłady integracji
Grafana + Prometheus + Node Exporter
Kompletna konfiguracja stosu monitorowania:
# Zainstaluj 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
# Utwórz usługę 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 z InfluxDB i Telegraf
Konfiguracja monitorowania serii czasowych:
# Zainstaluj 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
# Zainstaluj Telegraf
sudo apt install telegraf
sudo systemctl start telegraf
sudo systemctl enable telegraf
Optymalizacja wydajności
Optymalizacja zapytań
- Użyj odpowiednich zakresów czasowych
- Ogranicz zwracane punkty danych
- Użyj strategii cache
- Agreguj dane w źródle, jeśli to możliwe
- Użyj reguł zapisu w Prometheus
Optymalizacja serwera
[database]
# Zwiększ maksymalną liczbę połączeń
max_open_conn = 300
max_idle_conn = 100
[dataproxy]
# Ustawienia timeout
timeout = 30
keep_alive_seconds = 30
[rendering]
# Włącz limit renderowania równoległego
concurrent_render_limit = 10
Przydatne linki
- Oficjalna dokumentacja
- Repozytorium Grafany na GitHub
- Dokumentacja Prometheus
- Dokumentacja InfluxDB
- Jak zainstalować Ubuntu 24.04 & przydatne narzędzia
- Aplikacje monitorowania GPU w Linux / Ubuntu
- Skróty klawiaturowe Ubuntu: Pełny cheat sheet
- Cheat sheet bash
Podsumowanie
Grafana na Ubuntu oferuje potężną, elastyczną platformę do monitorowania i obserwacji. Niezależnie od tego, czy monitorujesz pojedynczy serwer, czy ogromny klastrowy Kubernetes, bogate możliwości wizualizacji Grafany, szeroka obsługa źródeł danych i aktywna społeczność sprawiają, że jest to świetny wybór dla zespołów DevOps.
Zacznij od prostego ustawienia za pomocą metody repozytorium APT, połącz swoje pierwsze źródło danych i stopniowo rozbuduj swoje możliwości monitorowania. Pamiętaj, aby priorytetyzować bezpieczeństwo, regularne kopie zapasowe i optymalizację wydajności w miarę rozwoju swojej instalacji Grafany.
Z odpowiednią konfiguracją i najlepszymi praktykami Grafana staje się nieodzownym narzędziem w swoim stosie obserwacji, dostarczając działania wizualizacji, które pomagają utrzymać niezawodne, wydajne systemy.