Zainstaluj i skorzystaj z Grafany na Ubuntu: Kompletny przewodnik

Zdobądź wiedzę na temat konfiguracji Grafana do monitorowania i wizualizacji

Page content

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.

grafana 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

  1. Przejdź do http://your-server-ip:3000
  2. Domyślne dane logowania:
    • Użytkownik: admin
    • Hasło: admin
  3. Natychmiast zostaniesz poproszony o zmianę hasła (bardzo zalecane!)

Konfiguracja pierwszego źródła danych

Przykład: Dodanie Prometheus

  1. Kliknij Konfiguracja (ikona koła zębatego) → Źródła danych
  2. Kliknij Dodaj źródło danych
  3. Wybierz Prometheus
  4. Skonfiguruj:
    • Nazwa: Prometheus
    • URL: http://localhost:9090 (dostosuj do swojej instancji Prometheus)
    • Dostęp: Serwer (domyślnie)
  5. Kliknij Zapisz i przetestuj

Przykład: Dodanie InfluxDB

  1. Wybierz InfluxDB jako źródło danych
  2. Skonfiguruj:
    • Język zapytań: Flux lub InfluxQL
    • URL: http://localhost:8086
    • Baza danych: twoja nazwa bazy danych
    • Użytkownik/Hasło: twoje dane logowania
  3. Kliknij Zapisz i przetestuj

Tworzenie pierwszego panelu

  1. Kliknij Utwórz (+ ikona) → Panel
  2. Kliknij Dodaj nowy panel
  3. Wybierz źródło danych
  4. Napisz swoje zapytanie (przykład dla Prometheus):
rate(http_requests_total[5m])
  1. Dostosuj wizualizację:
    • Wybierz typ panelu (Wykres, Wskazówka, Statystyka, Tabela itp.)
    • Skonfiguruj legendy, osie, progry
    • Dodaj przekształcenia, jeśli są potrzebne
  2. Kliknij Zastosuj, aby zapisać panel
  3. 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

  1. Przejdź do OstrzeżeniaPunkty kontaktowe
  2. Kliknij Nowy punkt kontaktowy
  3. Wybierz typ (E-mail, Slack, PagerDuty, Webhook itp.)
  4. Skonfiguruj ustawienia (np. URL webhooka Slack)
  5. Przetestuj i zapisz

Krok 2: Utwórz regułę ostrzeżenia

  1. Edytuj panel w swoim dashboard
  2. Kliknij Ostrzeżenie
  3. Skonfiguruj warunki:
    • Kiedy: avg()
    • Z: query(A, 5m, now)
    • Powyżej: 80
  4. Ustaw interwał oceny
  5. Dodaj kanał powiadomienia
  6. 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

  1. Organizuj według celu: Twórz osobne panele dla różnych zespołów/usług
  2. Używaj zmiennych: Twórz dynamiczne panele z zmiennymi szablonu
  3. Ustaw odpowiednie zakresy czasowe: Domyślnie ustaw na znaczące okna czasowe
  4. Dodaj anotacje: Oznacz wdrożenia i incydenty
  5. Używaj folderów: Organizuj panele logicznie
  6. Włącz wersjonowanie: Śledź zmiany paneli
  7. Ustaw interwały odświeżania: Zrównoważ potrzeby czasu rzeczywistego z wydajnością
  8. 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

  1. Zmień domyślne dane logowania natychmiast
  2. Użyj HTTPS z ważnymi certyfikatami
  3. Skonfiguruj zapory ogniowe:
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw enable
    
  4. Wyłącz dostęp anonimowy
  5. Użyj silnej autentykacji (LDAP, OAuth, SAML)
  6. Regularne aktualizacje – utrzymuj Grafanę zaktualizowaną
  7. Ogranicz uprawnienia użytkowników – użyj kontroli dostępu opartej na rolach
  8. Włącz logowanie audytowe
  9. Użyj tylko do odczytu źródeł danych, jeśli to możliwe
  10. Zaimplementuj ograniczenie przepływu

Monitorowanie samej Grafany

Monitoruj swoją instancję Grafany:

  1. Włącz punkt końcowy metryk w grafana.ini:
    [metrics]
    enabled = true
    
  2. Dodaj Grafanę jako cel Prometheus
  3. 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

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.