Wizualizacja metryk Influx za pomocą Grafany

Maciej Szafraniec

Zaktualizowaliśmy ten tekst dla Ciebie!
Data aktualizacji: 22.01.2025
Autor aktualizacji: Piotr Merynda

Grafana to narzędzie do wizualizacji danych i monitorowania, umożliwiające wyświetlanie metryk przechowywanych na przykład w InfluxDB w formie wykresów. Daje możliwość tworzenia dashboardów łączących wykresy lub histogramy w połączone grupy. Dzięki wbudowanej obsłudze InfluxDB automatycznie obsługuje dostarczone funkcje agregacji. Edytor zapytań obsługuje również uzupełnianie tagów lub pól.

Oto kilka kroków, które należy wykonać, aby wizualizować dane:

Pomiar InfluxDB

Musisz zacząć od danych, które chcesz pokazać na wykresie. Jako przykład użyjmy następującego pomiaru o nazwie „simple_measurement” w bazie danych „test”
Ma ona 4 tagi i 2 pola

Źródło danych Grafana

Następnym krokiem po utworzeniu danych do wyświetlenia jest zdefiniowanie ich w Grafanie jako źródła danych. W aplikacji Grafana przejdź do Configuration->Data Sources i znajdź przycisk „Add data source”.

Następnie należy wybrać typ InfluxDB, wpisać nazwę i podać szczegóły InfluxDB oraz dane uwierzytelniające.

Na koniec należy podać nazwę bazy danych i dane uwierzytelniające.
Kliknij przycisk, aby zweryfikować poprawność wprowadzonych informacji.

Grafana dashboard

Ostatnim krokiem jest utworzenie dashboardu z panelem wykresów. Po kliknięciu przycisku „Home” znajduje się przycisk „New dashboard”, który przeniesie Cię do kreatora dashboardów, gdzie możesz dodać panel z odpowiednim wykresem – Graph.

Następnie należy zdefiniować prawidłowe źródło danych i zapytania w edytorze wykresów, aby wyświetlić określone dane – value_1 i value_2 (pola).

Jest to tylko podstawowy wykres pokazujący wszystkie rekordy z bazy danych bez żadnego zawężenia. Jeśli chcesz mieć konkretny wykres z ograniczonymi danymi, musisz użyć klauzuli „where” w edytorze wykresów i wybrać tag i wartość tagu (np. customer=’jlabs’ lub version=’1.0′).

Powyższe kroki są proste, ale nieefektywne w przypadku większej liczby dashboardów lub wykresów do utworzenia. Grafana udostępnia również API do zarządzania swoją zawartością – dodawania lub modyfikowania dashboardów, dodawania paneli itp. Jest ono dostępne pod adresem.

http://<grafana_url>:<grafana_port>/api/dasboards/db

gdzie można wysłać żądanie POST z treścią JSON zawierającą definicję dashboardu. Aby osiągnąć wyniki podobne do ręcznych kroków, należy utworzyć JSON.

json = {
    "dashboard": {
        "id": None,
        "sharedCrosshair": True,
        "title": 'simple_measurement_2',
        "timezone": "browser",
        "panels": [{
            "datasource": "simple_measurement",
            "fill": 1,
            "gridPos": {
                "h": 9,
                "w": 12,
                "x": 0,
                "y": 0},
            "id": 1,
            "span": 12,
            "targets": [{
                "alias": "value_1_other",
                "groupBy": [{
                    "params": ["$__interval"],
                    "type": "time"
                }, {
                    "params": ["null"],
                    "type": "fill"}],
                "hide": False,
                "measurement": "simple_measurement",
                "orderByTime": "ASC",
                "policy": "default",
                "refId": "A",
                "resultFormat": "time_series",
                "select": [[{
                    "params": ["value_1"],
                    "type": "field"
                }, {
                    "params": [],
                    "type": "mean"}]],
                "tags": [{
                    "key": "customer",
                    "operator": "=",
                    "value": "other"}]}],
            "title": "simple_measurement",
            "type": "graph",
            "xaxis": {"mode": "time", "show": True},
            "yaxes": [{"show": True, "logBase": 1, "format": "ms"},
                      {"show": True, "logBase": 1, "format": "short"}]}],
        "schemaVersion": 6,
        "version": 2},
    "overwrite": True
}


Odpowiedź POST będzie zawierać tak zwany identyfikator dashboardu, który jest potrzebny do zarządzania lub usuwania tego dashboardu. Aby usunąć dashboard należy wysłać żądanie DELETE do:
http://<grafana_url>:<grafana_port>/api/dasboards/uid/<dashboard_uid>

Poznaj mageek of j‑labs i daj się zadziwić, jak może wyglądać praca z j‑People!

Skontaktuj się z nami