dogado.de dogado.pro dogado.partners
dogado
  • Warum dogado?
dogado
  • Alle Produkte
  • Kontakt & Hilfe
  • Warum dogado
  • Domains & E-Mails
    Website & Hosting
    Server Produkte
    Business Solutions
    Online-Shops
    Digitales Büro
  • Managed Server
Website & Hosting
Webhosting Webhosting schnell und sicher. Beginne jetzt dein Webprojekt!
WordPress Hosting Superschnelles WordPress, der beste Experten-Support
Website erstellen lassen Wir erstellen deine Website und du kannst entspannen
Web-Visitenkarte
SSL-Zertifikate
dogado Empfehlungsprogramm
Homepage-Baukasten
Partner
Domains & E-Mails
Domain registrieren Prüfe über 600 unterschiedliche Domain-Endungen.
E-Mail-Postfach Erstelle deine persönliche E-Mail-Adresse mit bis zu 30 GB Speicherplatz.
Mail-Spamschutz Wir schützen dich vor Bedrohungen wie Spam oder Phishing-Attacken.
Domain umziehen
Microsoft Exchange
Managed Mail Cloud
Domain Reseller
dogado Empfehlungsprogramm
Online Shops
Shopware Hosting Shopware so schnell wie noch nie, dank exklusiver Technologie.
Magento Hosting Magento mit Turbo: Shop-Klassiker auf LiteSpeed-Technologie.
Managed vServer Ultra-High Performance für deinen Shop: Managed Root VPS.
JTL Hosting
Managed Dedicated Server
Hochverfügbarkeits-Lösungen
Shopware-Lizenzen
dogado Empfehlungsprogramm
Server
VPS / vServer Dein virtueller Server: performant, flexibel und mit kostenfreier Plesk-Lizenz!
Dedicated Server Nutze unsere Server und Services für dein eigenes Business!
dogado Empfehlungsprogramm
Digitales Büro
Microsoft 365 Word, PowerPoint, Teams und mehr: Office 365 für Desktop und Online.
Digitaler Briefkasten Digitalisiere deine Briefpost - tagesaktuell und zeitsparend
Hosted Sharepoint Die webbasierte Business-Plattform für reibungslose Zusammenarbeit.
Online-Backup
DATEV Online-Backup
dogado Empfehlungsprogramm
Business Solutions
Managed Server Vom Server bis zum Cluster: Einfache Lösungen für komplexe Projekte.
Private Cloud Individuelle Infrastruktur und umfangreicher Experten-Support.
Managed Hosting Einfache Lösungen für komplexe Projekte.
Microsoft Azure
Jelastic PaaS
Colocation
dogado Empfehlungsprogramm
Managed Server
+49 231 2866 200
Geöffnet
Schließt um 22:00
Aktuelle Wartezeit

E-Mail schreiben Alle Kontaktmöglichkeiten
Deine Experten
Mit „Echter Service” stehen wir als verlässlicher Partner an deiner Seite
Unsere 6 Prinzipien
Hilfebereich
Unser Hilfebereich beantwortet Dir nahezu jede Deiner Fragen
Zum Hilfebereich
dogado VPS Tutorial: Alles rund um VPS / vServer vServer - Anwendungsfälle Grafana via Docker auf…
zurück zu VPS Tutorial: Alles rund um VPS / vServer

Grafana via Docker auf VPS/vServer installieren

    • vServer - Begriffserklärung
    • vServer Windows
    • vServer Linux
    • vServer vergleichen
    • vServer (VPS) mieten
    • Unterschied zwischen vServer und Webhosting
    • Unterschied zwischen vServer und Dedicated Server
    • Unterschied zwischen vServer und Managed vServer
    • Was ist ein Managed vServer?
    • vServer hosted in Deutschland
    • vServer und DSGVO - Brauche ich eine Auftragsdatenverarbeitung?
    • vServer und Backups
    • Authelia auf vServer/VPS installieren
    • Big Blue Button auf vServer/VPS installieren
    • CMS TYPO3 auf vServer installieren
    • Diaspora auf VPS/vServer installieren
    • Docker auf vServer/VPS installieren
    • DokuWiki per Docker auf VPS installieren
    • Elasticsearch auf vServer installieren
    • Emby Media Server auf vServer/VPS installieren
    • Etherpad auf vServer/VPS installieren
    • Freescout kostenloses Ticketsystem auf vServer/VPS installieren
    • Friendica auf VPS/vServer installieren
    • Funkwhale auf VPS/vServer zu installieren
    • Grafana via Docker auf VPS/vServer installieren
    • Hubzilla auf vServer installieren
    • Installation und Konfiguration eines MySQL Servers auf VPS / vServer
    • Moodle auf vServer/VPS installieren
    • Jitsi Meet auf Debian vServer installieren
    • KeePass auf eigenem vServer/VPS installieren
    • KeePass Datenbank auf vServer/VPS speichern
    • KeeWeb auf VPS/vServer installieren
    • Kimai Zeiterfassung auf vServer/VPS installieren
    • LAMP System aufsetzen auf VPS / vServer
    • Mailserver Mailcow per Docker auf vServer / VPS installieren
    • Maria DB Server installieren auf VPS / vServer
    • MariaDB/MySQL Passwort vergessen und wieder zurücksetzen
    • Matomo auf vServer installieren
    • Mattermost Chatsystem auf vServer/VPS installieren
    • Minecraft Server auf Linux vServer installieren
    • Minetest Server auf VPS installieren
    • ownCloud auf vServer installieren
    • MongoDB auf vServer/VPS installieren
    • Nextcloud per Docker auf VPS / vServer installieren
    • Nextcloud mit Elasticsearch installieren
    • Nextcloud Talk auf vServer installieren
    • nginx via Docker auf vServer installieren
    • OnlyOffice auf vServer installieren
    • OpenSSH Public Key Authentifizierung auf VPS / vServer
    • ownCloud via Docker auf vServer installieren
    • Passwortmanager Bitwarden auf VPS per Docker installieren
    • PeerTube auf VPS/vServer installieren
    • Performancetests mittels Unixbench auf vServer/VPS durchführen
    • Pixelfed auf VPS/vServer installieren
    • Pleroma auf VPS/vServer installieren
    • Plex MediaServer auf vServer/VPS installieren
    • Portainer per Docker auf vServer/VPS installieren
    • Pydio File Sharing auf vServer/VPS installieren
    • Redmine auf vServer/VPS installieren
    • RocketChat per Docker auf vServer installieren
    • Screaming Frog SEO Spider auf vServer installieren
    • Shopware auf vServer installieren
    • Shopware via Docker auf vServer installieren
    • Mastodon-Instanz auf VPS/vServer installieren und hosten
    • Teamspeak auf vServer installieren
    • Traefik Reverseproxy auf vServer/VPS installieren
    • Uptime Monitor / Statping auf vServer/VPS installieren
    • vServer / VPS als E-Commerce-Server
    • Windows Server 2019 auf vServer installieren
    • Wordpress auf VPS installieren
    • Zammad Ticket System auf vServer/VPS installieren
    • vServer (VPS) kostenlos testen
    • vServer mit Plesk verwalten
    • vServer Vertragslaufzeiten
    • vServer und Plesk - Erste Schritte
    • Vorstellung Plesk Obsidian auf vServer
    • AlmaLinux auf vServer/VPS installieren
    • CentOS auf vServer/VPS installieren
    • Debian auf vServer/Linux installieren
    • Ubuntu auf vServer/VPS installieren
Inhaltsverzeichnis
  • 0. Überblick
  • 1. Grafana installieren
  • 2. Grafana starten
  • 3. Mit Prometheus verbinden
  • 4. Neues Dashboard erstellen
  • 5. Grafana Dashboards öffentlich machen

0. Überblick

  • Verwendetes System: Debian 10 64 bit (vServer XXL 2.0)
  • Genutzter User: Ich nehme alles als „root“ vor
  • Zeitdauer: ca. 10 Minuten
  • Schwierigkeit: Einfach. Nur Code kopieren 😉
  • Besonderheiten:
    • Grundlage ist folgende Anleitung: Traefik Reverseproxy installieren Diese Anleitung muss zuerst ausgeführt werden.
    • Die Installation von Docker / Docker Compose wird hier vorausgesetzt.

1. Grafana installieren

1.1 Einleitung

Grafana (https://grafana.com) ist eine open source Software, welche Daten aus verschiedenen Quellen in einem modernen Design aufbereiten kann. Als Datenquellen können unter anderem MySQL, PostgreSQL, Prometheus und vieles mehr dienen.

1.2 Infos zu yml Dateien

Bei yml Dateien ist es sehr wichtig, dass die Zeilen alle richtig eingerückt sind. Die Zeilen MÜSSEN immer mit der Leertaste eingerückt werden. Es dürfen KEINE Tabs enthalten sein. Ihr könnt den nachfolgenden Code immer online „überprüfen“ lassen. Die meisten Fehler entstehen nämlich durch die falsche Formatierung. Ein Dienst zum Überprüfen ist zum Beispiel: https://codebeautify.org/yaml-validator

1.3 Vorbereitung

Diese Anleitung basiert auf dem aktuellen Debian 10 Betriebssystem. Grafana werden wir unter Docker realisieren. Dies ermöglicht uns später sehr schnelle Updates und eine schnelle Installation.

Um Grafana neben anderen Diensten auf unserem Server betreiben zu können, nutzen wir hier den Reverse Proxy Traefik.

1.3.1 Verzeichnis erstellen

Wir erstellen uns ein neues Verzeichnis, in welchem wir später alle Daten von Grafana abspeichen. Dazu geben wir folgendes in der Konsole ein:

mkdir -p /opt/containers/grafana/{grafana,prometheus}

Ihr könnt hier auch ein anderes Verzeichnis verwenden. Müsst dann aber die gesamte Anleitung entsprechend anpassen.

Nun müssen wir noch die Rechte des Ordners anpassen. Dazu gebt ihr folgendes ein:

chown 1000:1000 /opt/containers/grafana/grafana

1.3.2 docker-compose.yml erstellen

Nun können wir mit der eigentlichen „Installation“ von Grafana beginnen. Dazu öffnet ihr folgende Datei:

nano /opt/containers/grafana/docker-compose.yml

Nun kopiert ihr folgenden Code in die Datei. Dieser Code ist unser Bauplan für unseren Grafana Container.

version: '3' 

services: 

  mon_prometheus: 

    image: prom/prometheus:latest 

    container_name: mon_prometheus 

    restart: unless-stopped 

    volumes: 

      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml 

    depends_on: 

      - mon_node-exporter 

      - mon_cadvisor 

    networks: 

      - default 

  mon_node-exporter: 

    image: prom/node-exporter:latest 

    container_name: mon_node-exporter 

    restart: unless-stopped 

    volumes: 

      - /proc:/host/proc:ro 

      - /sys:/host/sys:ro 

      - /:/rootfs:ro 

    command: 

      - '--path.procfs=/host/proc' 

      - '--path.sysfs=/host/sys' 

      - '--path.rootfs=/rootfs' 

      - '--collector.filesystem.ignored-mount-points="^(/rootfs|/host|)/(sys|proc|dev|host|etc)($$|/)"' 

      - '--collector.filesystem.ignored-fs-types="^(sys|proc|auto|cgroup|devpts|ns|au|fuse\.lxc|mqueue)(fs|)$$"' 

    networks: 

      - default 

  mon_cadvisor: 

    image: google/cadvisor:latest 

    container_name: mon_cadvisor 

    restart: unless-stopped 

    volumes: 

      - /:/rootfs:ro 

      - /var/run:/var/run:rw 

      - /sys:/sys:ro 

      - /var/lib/docker/:/var/lib/docker:ro 

    networks: 

      - default 

  mon_grafana: 

    image: grafana/grafana:latest 

    container_name: mon_grafana 

    restart: unless-stopped 

    volumes: 

      - /opt/containers/grafana/grafana:/var/lib/grafana 

    user: "1000" # USER ID des Docker Users anpassen 

    depends_on: 

      - mon_prometheus 

    networks: 

      - default 

    labels: 

      - "traefik.enable=true" 

      - "traefik.http.routers.grafana.entrypoints=http" 

      - "traefik.http.routers.grafana.rule=Host(`grafana.euredomain.de`)" 

      - "traefik.http.middlewares.grafana-https-redirect.redirectscheme.scheme=https" 

      - "traefik.http.routers.grafana.middlewares=grafana-https-redirect" 

      - "traefik.http.routers.grafana-secure.entrypoints=https" 

      - "traefik.http.routers.grafana-secure.rule=Host(`grafana.euredomain.de`)" 

      - "traefik.http.routers.grafana-secure.tls=true" 

      - "traefik.http.routers.grafana-secure.tls.certresolver=http" 

      - "traefik.http.routers.grafana-secure.service=grafana" 

      - "traefik.http.services.grafana.loadbalancer.server.port=3000" 

      - "traefik.docker.network=proxy" 

      - "traefik.http.routers.grafana-secure.middlewares=secHeaders@file" 

    networks: 

      - proxy 

      - default 

networks: 

  proxy: 

    external: true

Nun müssen wir noch einiges anpassen.

1.3.3 Hostname anpassen

Nun müsst ihr noch den Hostnamen anpassen, über welchen später Grafana erreichbar sein soll.

Diese beiden Zeilen müsst ihr anpassen.

    - "traefik.http.routers.grafana.rule=Host(`grafana.euredomain.de `)" 
    - "traefik.http.routers.grafana-secure.rule=Host(`grafana.euredomain.de`)"

In meinem Fall also:

    - "traefik.http.routers.grafana.rule=Host(`grafana.testbereich.net`)" 
    - "traefik.http.routers.grafana-secure.rule=Host(`grafana.testbereich.net`)"

Wenn ihr Grafana direkt auf eurer „Hauptdomain“ betreiben wollt, dann ändert ihr es folgendermaßen ab:

"traefik.http.routers.grafana.rule=Host(`www.euredomain.de`,`euredomain.de`)" 
"traefik.http.routers.grafana-secure.rule=Host(`www.euredomain.de`,`euredomain.de`)"

1.3.4 Prometheus konfigurieren

Nun müssen wir noch Prometheus konfigurieren. Dazu legen wir uns eine neue Datei an.

nano /opt/containers/grafana/prometheus/prometheus.yml

Gebt nun folgendes ein:

global: 
  scrape_interval: 15s 
  evaluation_interval: 15s 
rule_files:
scrape_configs: 
  - job_name: 'node-exporter' 
    static_configs: 
      - targets: ['mon_node-exporter:9100'] 
  - job_name: 'cadvisor' 
    static_configs: 
      - targets: ['mon_cadvisor:8080']

2. Grafana starten

Gebt nun folgendes ein, um euren Grafana Container zu starten:

docker-compose -f /opt/containers/grafana/docker-compose.yml up

Beim ersten Start des Containers wird Grafana initialisiert. Dies bedeutet, dass die Datenbank eingerichtet, eure Einstellungen übernommen werden und vieles mehr. Daher dauert es einige Minuten, bis der Container dann über die Webseite erreichbar ist. Bei mir hat es ca. 2 Minuten gedauert.

Geht nun auf eure Webseite (z.B. grafana.euredomain.de). Ihr solltet nun folgendes sehen:

Grafana Webseite nach Start des Containers

Die Zugangsdaten lauten:

  • Nutzername: admin
  • Passwort: admin

Nun werdet ihr aufgefordert ein neues Kennwort zu vergeben.

Neues Passwort für Grafana vergeben


Anschließend seht ihr das Grafana Dashboard.

Grafana Dashboard

3. Mit Prometheus verbinden

Um die Daten von unserem Server zu bekommen, müssen wir uns mit Prometheus verbinden. Dazu klickt ihr auf „Add your first data source“.

Add your first data source - Grafana mit Prometheus verbinden


Hier wählt ihr „Prometheus“ aus.

Prometheus in Grafana auswählen


Nun gebt ihr folgendes bei URL ein:

http://mon_prometheus:9090

URL für Prometheus


Scrollt anschließend nach unten und klickt auf „Save & Test“.

Save & test Prometheus


Wenn ihr alles richtig gemacht habt, dann sollte diese Meldung erscheinen.

Data source is working Prometheus

4. Neues Dashboard erstellen

Nun wollen wir unser erstes eigenes Dashboard erstellen. Wir wollen uns darin Daten über unseren vServer anzeigen lassen.

Klickt nun auf das „+“ und anschließend „Import“.

Daten in Grafana importieren


Hier kopiert ihr nun folgenden langen Code hinein.

JSON Code in Grafan importieren

Code:

{ 

  "annotations": { 

    "list": [ 

      { 

        "builtIn": 1, 

        "datasource": "Prometheus", 

        "enable": true, 

        "hide": true, 

        "iconColor": "rgba(0, 211, 255, 1)", 

        "name": "Annotations & Alerts", 

        "type": "dashboard" 

      } 

    ] 

  }, 

  "description": "", 

  "editable": true, 

  "fiscalYearStartMonth": 0, 

  "gnetId": 893, 

  "graphTooltip": 1, 

  "id": 3, 

  "iteration": 1634498318206, 

  "links": [], 

  "liveNow": false, 

  "panels": [ 

    { 

      "cacheTimeout": null, 

      "datasource": "Prometheus", 

      "fieldConfig": { 

        "defaults": { 

          "color": { 

            "mode": "thresholds" 

          }, 

          "mappings": [ 

            { 

              "options": { 

                "match": "null", 

                "result": { 

                  "text": "N/A" 

                } 

              }, 

              "type": "special" 

            } 

          ], 

          "thresholds": { 

            "mode": "absolute", 

            "steps": [ 

              { 

                "color": "green", 

                "value": null 

              }, 

              { 

                "color": "red", 

                "value": 80 

              } 

            ] 

          }, 

          "unit": "none" 

        }, 

        "overrides": [] 

      }, 

      "gridPos": { 

        "h": 6, 

        "w": 4, 

        "x": 0, 

        "y": 0 

      }, 

      "id": 31, 

      "interval": null, 

      "links": [], 

      "maxDataPoints": 100, 

      "options": { 

        "colorMode": "none", 

        "graphMode": "none", 

        "justifyMode": "auto", 

        "orientation": "horizontal", 

        "reduceOptions": { 

          "calcs": [ 

            "lastNotNull" 

          ], 

          "fields": "", 

          "values": false 

        }, 

        "text": {}, 

        "textMode": "auto" 

      }, 

      "pluginVersion": "8.2.1", 

      "targets": [ 

        { 

          "expr": "count(rate(container_last_seen{name=~\".+\"}[$interval]))", 

          "format": "time_series", 

          "intervalFactor": 2, 

          "refId": "A", 

          "step": 1800 

        } 

      ], 

      "title": "Anzahl Docker Container", 

      "type": "stat" 

    }, 

    { 

      "datasource": null, 

      "fieldConfig": { 

        "defaults": { 

          "color": { 

            "mode": "palette-classic" 

          }, 

          "custom": { 

            "axisLabel": "", 

            "axisPlacement": "auto", 

            "barAlignment": 0, 

            "drawStyle": "line", 

            "fillOpacity": 0, 

            "gradientMode": "none", 

            "hideFrom": { 

              "legend": false, 

              "tooltip": false, 

              "viz": false 

            }, 

            "lineInterpolation": "linear", 

            "lineWidth": 1, 

            "pointSize": 5, 

            "scaleDistribution": { 

              "type": "linear" 

            }, 

            "showPoints": "auto", 

            "spanNulls": false, 

            "stacking": { 

              "group": "A", 

              "mode": "none" 

            }, 

            "thresholdsStyle": { 

              "mode": "off" 

            } 

          }, 

          "mappings": [], 

          "thresholds": { 

            "mode": "absolute", 

            "steps": [ 

              { 

                "color": "green", 

                "value": null 

              }, 

              { 

                "color": "red", 

                "value": 80 

              } 

            ] 

          }, 

          "unit": "decbytes" 

        }, 

        "overrides": [] 

      }, 

      "gridPos": { 

        "h": 7, 

        "w": 8, 

        "x": 4, 

        "y": 0 

      }, 

      "id": 39, 

      "options": { 

        "legend": { 

          "calcs": [], 

          "displayMode": "list", 

          "placement": "bottom" 

        }, 

        "tooltip": { 

          "mode": "single" 

        } 

      }, 

      "pluginVersion": "8.2.1", 

      "targets": [ 

        { 

          "expr": "node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes", 

          "interval": "", 

          "legendFormat": "", 

          "refId": "A" 

        } 

      ], 

      "timeFrom": null, 

      "timeShift": null, 

      "title": "RAM Verbrauch", 

      "type": "timeseries" 

    }, 

    { 

      "datasource": "Prometheus", 

      "fieldConfig": { 

        "defaults": { 

          "color": { 

            "mode": "palette-classic" 

          }, 

          "custom": { 

            "axisLabel": "", 

            "axisPlacement": "auto", 

            "barAlignment": 0, 

            "drawStyle": "line", 

            "fillOpacity": 0, 

            "gradientMode": "none", 

            "hideFrom": { 

              "legend": false, 

              "tooltip": false, 

              "viz": false 

            }, 

            "lineInterpolation": "linear", 

            "lineWidth": 1, 

            "pointSize": 5, 

            "scaleDistribution": { 

              "type": "linear" 

            }, 

            "showPoints": "auto", 

            "spanNulls": false, 

            "stacking": { 

              "group": "A", 

              "mode": "none" 

            }, 

            "thresholdsStyle": { 

              "mode": "off" 

            } 

          }, 

          "mappings": [], 

          "thresholds": { 

            "mode": "absolute", 

            "steps": [ 

              { 

                "color": "green", 

                "value": null 

              }, 

              { 

                "color": "red", 

                "value": 80 

              } 

            ] 

          }, 

          "unit": "decbytes" 

        }, 

        "overrides": [] 

      }, 

      "gridPos": { 

        "h": 7, 

        "w": 12, 

        "x": 12, 

        "y": 0 

      }, 

      "id": 13, 

      "links": [], 

      "options": { 

        "legend": { 

          "calcs": [], 

          "displayMode": "list", 

          "placement": "bottom" 

        }, 

        "tooltip": { 

          "mode": "single" 

        } 

      }, 

      "pluginVersion": "8.2.1", 

      "targets": [ 

        { 

          "expr": "node_filesystem_size_bytes{fstype=\"ext4\"} - node_filesystem_free_bytes{fstype=\"ext4\"}", 

          "format": "time_series", 

          "hide": false, 

          "interval": "", 

          "intervalFactor": 2, 

          "legendFormat": "", 

          "refId": "A", 

          "step": 600 

        } 

      ], 

      "timeFrom": null, 

      "timeShift": null, 

      "title": "Festplatten Verbrauch", 

      "type": "timeseries" 

    }, 

    { 

      "cacheTimeout": null, 

      "datasource": "Prometheus", 

      "fieldConfig": { 

        "defaults": { 

          "color": { 

            "mode": "thresholds" 

          }, 

          "decimals": 0, 

          "mappings": [ 

            { 

              "options": { 

                "match": "null", 

                "result": { 

                  "text": "N/A" 

                } 

              }, 

              "type": "special" 

            } 

          ], 

          "max": 500000000, 

          "min": 0, 

          "thresholds": { 

            "mode": "absolute", 

            "steps": [ 

              { 

                "color": "rgba(50, 172, 45, 0.97)", 

                "value": null 

              }, 

              { 

                "color": "rgba(237, 129, 40, 0.89)", 

                "value": 400000000 

              }, 

              { 

                "color": "rgba(245, 54, 54, 0.9)" 

              } 

            ] 

          }, 

          "unit": "decbytes" 

        }, 

        "overrides": [] 

      }, 

      "gridPos": { 

        "h": 6, 

        "w": 4, 

        "x": 0, 

        "y": 6 

      }, 

      "id": 30, 

      "interval": null, 

      "links": [], 

      "maxDataPoints": 100, 

      "options": { 

        "orientation": "horizontal", 

        "reduceOptions": { 

          "calcs": [ 

            "lastNotNull" 

          ], 

          "fields": "", 

          "values": false 

        }, 

        "showThresholdLabels": false, 

        "showThresholdMarkers": true, 

        "text": {} 

      }, 

      "pluginVersion": "8.2.1", 

      "targets": [ 

        { 

          "expr": "(node_memory_SwapTotal_bytes{instance=~'mon_node-exporter:9100'} - node_memory_SwapFree_bytes{instance=~'mon_node-exporter:9100'})", 

          "format": "time_series", 

          "intervalFactor": 2, 

          "legendFormat": "", 

          "refId": "A", 

          "step": 1800 

        } 

      ], 

      "title": "Swap", 

      "type": "gauge" 

    }, 

    { 

      "cacheTimeout": null, 

      "datasource": null, 

      "fieldConfig": { 

        "defaults": { 

          "displayName": "", 

          "mappings": [], 

          "max": 100, 

          "min": 0, 

          "thresholds": { 

            "mode": "absolute", 

            "steps": [ 

              { 

                "color": "green", 

                "value": null 

              }, 

              { 

                "color": "red", 

                "value": 80 

              } 

            ] 

          } 

        }, 

        "overrides": [] 

      }, 

      "gridPos": { 

        "h": 8, 

        "w": 8, 

        "x": 4, 

        "y": 7 

      }, 

      "id": 35, 

      "links": [], 

      "options": { 

        "orientation": "auto", 

        "reduceOptions": { 

          "calcs": [ 

            "last" 

          ], 

          "fields": "", 

          "values": false 

        }, 

        "showThresholdLabels": false, 

        "showThresholdMarkers": false, 

        "text": {} 

      }, 

      "pluginVersion": "8.2.1", 

      "targets": [ 

        { 

          "expr": "100 - (avg by (cpu) (irate(node_cpu_seconds_total{mode=\"idle\"}[1m])) *100)", 

          "hide": false, 

          "interval": "", 

          "legendFormat": "", 

          "refId": "A" 

        }, 

        { 

          "expr": "(irate(node_cpu_seconds_total{mode=\"idle\"}[1m])) ", 

          "hide": true, 

          "interval": "", 

          "legendFormat": "", 

          "refId": "B" 

        } 

      ], 

      "timeFrom": null, 

      "timeShift": null, 

      "title": "CPU Auslastung", 

      "type": "gauge" 

    }, 

    { 

      "aliasColors": {}, 

      "bars": false, 

      "dashLength": 10, 

      "dashes": false, 

      "datasource": "Prometheus", 

      "editable": true, 

      "error": false, 

      "fieldConfig": { 

        "defaults": { 

          "links": [] 

        }, 

        "overrides": [] 

      }, 

      "fill": 1, 

      "fillGradient": 0, 

      "grid": {}, 

      "gridPos": { 

        "h": 8, 

        "w": 12, 

        "x": 12, 

        "y": 7 

      }, 

      "hiddenSeries": false, 

      "id": 9, 

      "legend": { 

        "alignAsTable": true, 

        "avg": false, 

        "current": false, 

        "hideEmpty": false, 

        "hideZero": false, 

        "max": false, 

        "min": false, 

        "rightSide": true, 

        "show": true, 

        "total": false, 

        "values": false 

      }, 

      "lines": true, 

      "linewidth": 2, 

      "links": [], 

      "nullPointMode": "null as zero", 

      "options": { 

        "alertThreshold": true 

      }, 

      "percentage": false, 

      "pluginVersion": "8.2.1", 

      "pointradius": 5, 

      "points": false, 

      "renderer": "flot", 

      "seriesOverrides": [], 

      "spaceLength": 10, 

      "stack": false, 

      "steppedLine": false, 

      "targets": [ 

        { 

          "expr": "sum(rate(container_network_transmit_bytes_total{name=~\".+\"}[$interval])) by (name)", 

          "intervalFactor": 2, 

          "legendFormat": "", 

          "refId": "A", 

          "step": 240 

        }, 

        { 

          "expr": "rate(container_network_transmit_bytes_total{id=\"/\"}[$interval])", 

          "hide": true, 

          "intervalFactor": 2, 

          "legendFormat": "", 

          "refId": "B", 

          "step": 10 

        } 

      ], 

      "thresholds": [], 

      "timeFrom": null, 

      "timeRegions": [], 

      "timeShift": null, 

      "title": "Ausgehender Netzwerkverkehr pro Container", 

      "tooltip": { 

        "msResolution": true, 

        "shared": true, 

        "sort": 0, 

        "value_type": "cumulative" 

      }, 

      "type": "graph", 

      "xaxis": { 

        "buckets": null, 

        "mode": "time", 

        "name": null, 

        "show": true, 

        "values": [] 

      }, 

      "yaxes": [ 

        { 

          "format": "Bps", 

          "label": "", 

          "logBase": 1, 

          "max": null, 

          "min": null, 

          "show": true 

        }, 

        { 

          "format": "short", 

          "label": "", 

          "logBase": 10, 

          "max": 8, 

          "min": 0, 

          "show": false 

        } 

      ], 

      "yaxis": { 

        "align": false, 

        "alignLevel": null 

      } 

    }, 

    { 

      "cacheTimeout": null, 

      "datasource": "Prometheus", 

      "fieldConfig": { 

        "defaults": { 

          "color": { 

            "mode": "thresholds" 

          }, 

          "decimals": 1, 

          "mappings": [ 

            { 

              "options": { 

                "match": "null", 

                "result": { 

                  "text": "N/A" 

                } 

              }, 

              "type": "special" 

            } 

          ], 

          "max": 1, 

          "min": 0, 

          "thresholds": { 

            "mode": "absolute", 

            "steps": [ 

              { 

                "color": "rgba(50, 172, 45, 0.97)", 

                "value": null 

              }, 

              { 

                "color": "rgba(237, 129, 40, 0.89)", 

                "value": 0.75 

              }, 

              { 

                "color": "rgba(245, 54, 54, 0.9)", 

                "value": 0.9 

              } 

            ] 

          }, 

          "unit": "percentunit" 

        }, 

        "overrides": [] 

      }, 

      "gridPos": { 

        "h": 5, 

        "w": 4, 

        "x": 0, 

        "y": 12 

      }, 

      "id": 26, 

      "interval": null, 

      "links": [], 

      "maxDataPoints": 100, 

      "options": { 

        "orientation": "horizontal", 

        "reduceOptions": { 

          "calcs": [ 

            "lastNotNull" 

          ], 

          "fields": "", 

          "values": false 

        }, 

        "showThresholdLabels": false, 

        "showThresholdMarkers": true, 

        "text": {} 

      }, 

      "pluginVersion": "8.2.1", 

      "targets": [ 

        { 

          "expr": "min((node_filesystem_size_bytes{fstype=~\"xfs|ext4\",instance=\"mon_node-exporter:9100\"} - node_filesystem_free_bytes{fstype=~\"xfs|ext4\",instance=\"mon_node-exporter:9100\"} )/ node_filesystem_size_bytes{fstype=~\"xfs|ext4\",instance=\"mon_node-exporter:9100\"})", 

          "format": "time_series", 

          "hide": false, 

          "interval": "", 

          "intervalFactor": 2, 

          "legendFormat": "", 

          "refId": "A", 

          "step": 1800 

        } 

      ], 

      "title": "Festplatten Auslastung", 

      "type": "gauge" 

    }, 

    { 

      "columns": [ 

        { 

          "text": "Current", 

          "value": "current" 

        } 

      ], 

      "datasource": null, 

      "editable": true, 

      "error": false, 

      "fontSize": "100%", 

      "gridPos": { 

        "h": 9, 

        "w": 8, 

        "x": 4, 

        "y": 15 

      }, 

      "id": 37, 

      "links": [], 

      "pageSize": null, 

      "scroll": true, 

      "showHeader": true, 

      "sort": { 

        "col": 1, 

        "desc": true 

      }, 

      "styles": [ 

        { 

          "align": "auto", 

          "colorMode": null, 

          "colors": [ 

            "rgba(245, 54, 54, 0.9)", 

            "rgba(237, 129, 40, 0.89)", 

            "rgba(50, 172, 45, 0.97)" 

          ], 

          "decimals": 2, 

          "pattern": "/.*/", 

          "thresholds": [ 

            "10000000", 

            " 25000000" 

          ], 

          "type": "number", 

          "unit": "decbytes" 

        } 

      ], 

      "targets": [ 

        { 

          "expr": "sum(container_spec_memory_limit_bytes{name=~\".+\"} - container_memory_usage_bytes{name=~\".+\"}) by (name) ", 

          "hide": true, 

          "intervalFactor": 2, 

          "legendFormat": "", 

          "metric": "", 

          "refId": "A", 

          "step": 240 

        }, 

        { 

          "expr": "sum(container_spec_memory_limit_bytes{name=~\".+\"}) by (name) ", 

          "hide": true, 

          "intervalFactor": 2, 

          "legendFormat": "", 

          "refId": "B", 

          "step": 240 

        }, 

        { 

          "expr": "container_memory_usage_bytes{name=~\".+\"}", 

          "hide": false, 

          "intervalFactor": 2, 

          "legendFormat": "", 

          "refId": "C", 

          "step": 240 

        } 

      ], 

      "title": "RAM Auslastung der Container", 

      "transform": "timeseries_aggregations", 

      "type": "table-old" 

    }, 

    { 

      "aliasColors": {}, 

      "bars": false, 

      "dashLength": 10, 

      "dashes": false, 

      "datasource": "Prometheus", 

      "editable": true, 

      "error": false, 

      "fieldConfig": { 

        "defaults": { 

          "links": [] 

        }, 

        "overrides": [] 

      }, 

      "fill": 1, 

      "fillGradient": 0, 

      "grid": {}, 

      "gridPos": { 

        "h": 9, 

        "w": 12, 

        "x": 12, 

        "y": 15 

      }, 

      "hiddenSeries": false, 

      "id": 8, 

      "legend": { 

        "alignAsTable": true, 

        "avg": false, 

        "current": false, 

        "max": false, 

        "min": false, 

        "rightSide": true, 

        "show": true, 

        "total": false, 

        "values": false 

      }, 

      "lines": true, 

      "linewidth": 2, 

      "links": [], 

      "nullPointMode": "null as zero", 

      "options": { 

        "alertThreshold": true 

      }, 

      "percentage": false, 

      "pluginVersion": "8.2.1", 

      "pointradius": 5, 

      "points": false, 

      "renderer": "flot", 

      "seriesOverrides": [], 

      "spaceLength": 10, 

      "stack": false, 

      "steppedLine": false, 

      "targets": [ 

        { 

          "expr": "sum(rate(container_network_receive_bytes_total{name=~\".+\"}[$interval])) by (name)", 

          "intervalFactor": 2, 

          "legendFormat": "", 

          "refId": "A", 

          "step": 240 

        }, 

        { 

          "expr": "- rate(container_network_transmit_bytes_total{name=~\".+\"}[$interval])", 

          "hide": true, 

          "intervalFactor": 2, 

          "legendFormat": "", 

          "refId": "B", 

          "step": 10 

        } 

      ], 

      "thresholds": [], 

      "timeFrom": null, 

      "timeRegions": [], 

      "timeShift": null, 

      "title": "Eingehender Netzwerkverkehr pro Container", 

      "tooltip": { 

        "msResolution": true, 

        "shared": true, 

        "sort": 0, 

        "value_type": "cumulative" 

      }, 

      "type": "graph", 

      "xaxis": { 

        "buckets": null, 

        "mode": "time", 

        "name": null, 

        "show": true, 

        "values": [] 

      }, 

      "yaxes": [ 

        { 

          "format": "Bps", 

          "label": null, 

          "logBase": 1, 

          "max": null, 

          "min": null, 

          "show": true 

        }, 

        { 

          "format": "short", 

          "label": null, 

          "logBase": 1, 

          "max": null, 

          "min": null, 

          "show": true 

        } 

      ], 

      "yaxis": { 

        "align": false, 

        "alignLevel": null 

      } 

    }, 

    { 

      "cacheTimeout": null, 

      "datasource": "Prometheus", 

      "fieldConfig": { 

        "defaults": { 

          "decimals": 0, 

          "mappings": [ 

            { 

              "id": 0, 

              "op": "=", 

              "text": "N/A", 

              "type": 1, 

              "value": "null" 

            } 

          ], 

          "max": 100, 

          "min": 0, 

          "thresholds": { 

            "mode": "absolute", 

            "steps": [ 

              { 

                "color": "rgba(50, 172, 45, 0.97)", 

                "value": null 

              }, 

              { 

                "color": "rgba(237, 129, 40, 0.89)", 

                "value": 70 

              }, 

              { 

                "color": "rgba(245, 54, 54, 0.9)", 

                "value": 90 

              } 

            ] 

          }, 

          "unit": "percent" 

        }, 

        "overrides": [] 

      }, 

      "gridPos": { 

        "h": 7, 

        "w": 4, 

        "x": 0, 

        "y": 17 

      }, 

      "id": 25, 

      "links": [], 

      "options": { 

        "orientation": "horizontal", 

        "reduceOptions": { 

          "calcs": [ 

            "lastNotNull" 

          ], 

          "fields": "", 

          "values": false 

        }, 

        "showThresholdLabels": false, 

        "showThresholdMarkers": true, 

        "text": {} 

      }, 

      "pluginVersion": "8.2.1", 

      "targets": [ 

        { 

          "expr": "((node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes) * 100 ", 

          "format": "time_series", 

          "interval": "", 

          "intervalFactor": 2, 

          "legendFormat": "", 

          "refId": "A", 

          "step": 1800 

        } 

      ], 

      "timeFrom": null, 

      "timeShift": null, 

      "title": "RAM Auslastung", 

      "type": "gauge" 

    }, 

    { 

      "aliasColors": {}, 

      "bars": false, 

      "cacheTimeout": null, 

      "dashLength": 10, 

      "dashes": false, 

      "datasource": "Prometheus", 

      "editable": true, 

      "error": false, 

      "fieldConfig": { 

        "defaults": { 

          "links": [] 

        }, 

        "overrides": [] 

      }, 

      "fill": 5, 

      "fillGradient": 0, 

      "grid": {}, 

      "gridPos": { 

        "h": 8, 

        "w": 24, 

        "x": 0, 

        "y": 24 

      }, 

      "hiddenSeries": false, 

      "id": 1, 

      "legend": { 

        "alignAsTable": true, 

        "avg": false, 

        "current": false, 

        "max": false, 

        "min": false, 

        "rightSide": true, 

        "show": true, 

        "total": false, 

        "values": false 

      }, 

      "lines": true, 

      "linewidth": 1, 

      "links": [], 

      "nullPointMode": "null as zero", 

      "options": { 

        "alertThreshold": true 

      }, 

      "percentage": false, 

      "pluginVersion": "8.2.1", 

      "pointradius": 5, 

      "points": false, 

      "renderer": "flot", 

      "seriesOverrides": [], 

      "spaceLength": 10, 

      "stack": true, 

      "steppedLine": false, 

      "targets": [ 

        { 

          "expr": "sum(rate(container_cpu_usage_seconds_total{name=~\".+\"}[$interval])) by (name) * 100", 

          "hide": false, 

          "interval": "", 

          "intervalFactor": 2, 

          "legendFormat": "", 

          "metric": "", 

          "refId": "F", 

          "step": 240 

        } 

      ], 

      "thresholds": [], 

      "timeFrom": null, 

      "timeRegions": [], 

      "timeShift": null, 

      "title": "CPU Auslastung pro Container", 

      "tooltip": { 

        "msResolution": true, 

        "shared": true, 

        "sort": 0, 

        "value_type": "individual" 

      }, 

      "type": "graph", 

      "xaxis": { 

        "buckets": null, 

        "mode": "time", 

        "name": null, 

        "show": true, 

        "values": [] 

      }, 

      "yaxes": [ 

        { 

          "format": "percent", 

          "label": "", 

          "logBase": 1, 

          "max": null, 

          "show": true 

        }, 

        { 

          "format": "short", 

          "label": null, 

          "logBase": 1, 

          "max": null, 

          "min": null, 

          "show": false 

        } 

      ], 

      "yaxis": { 

        "align": false, 

        "alignLevel": null 

      } 

    }, 

    { 

      "aliasColors": {}, 

      "bars": false, 

      "dashLength": 10, 

      "dashes": false, 

      "datasource": "Prometheus", 

      "editable": true, 

      "error": false, 

      "fieldConfig": { 

        "defaults": { 

          "links": [] 

        }, 

        "overrides": [] 

      }, 

      "fill": 3, 

      "fillGradient": 0, 

      "grid": {}, 

      "gridPos": { 

        "h": 9, 

        "w": 24, 

        "x": 0, 

        "y": 32 

      }, 

      "hiddenSeries": false, 

      "id": 10, 

      "legend": { 

        "alignAsTable": true, 

        "avg": false, 

        "current": false, 

        "max": false, 

        "min": false, 

        "rightSide": true, 

        "show": true, 

        "total": false, 

        "values": false 

      }, 

      "lines": true, 

      "linewidth": 2, 

      "links": [], 

      "nullPointMode": "null as zero", 

      "options": { 

        "alertThreshold": true 

      }, 

      "percentage": false, 

      "pluginVersion": "8.2.1", 

      "pointradius": 5, 

      "points": false, 

      "renderer": "flot", 

      "seriesOverrides": [], 

      "spaceLength": 10, 

      "stack": true, 

      "steppedLine": false, 

      "targets": [ 

        { 

          "expr": "sum(container_memory_rss{name=~\".+\"}) by (name)", 

          "hide": false, 

          "intervalFactor": 2, 

          "legendFormat": "", 

          "refId": "A", 

          "step": 240 

        }, 

        { 

          "expr": "container_memory_usage_bytes{name=~\".+\"}", 

          "hide": true, 

          "intervalFactor": 2, 

          "legendFormat": "", 

          "refId": "B", 

          "step": 240 

        } 

      ], 

      "thresholds": [], 

      "timeFrom": null, 

      "timeRegions": [], 

      "timeShift": null, 

      "title": "RAM Auslastung pro Container", 

      "tooltip": { 

        "msResolution": true, 

        "shared": true, 

        "sort": 0, 

        "value_type": "individual" 

      }, 

      "type": "graph", 

      "xaxis": { 

        "buckets": null, 

        "mode": "time", 

        "name": null, 

        "show": true, 

        "values": [] 

      }, 

      "yaxes": [ 

        { 

          "format": "bytes", 

          "label": "", 

          "logBase": 1, 

          "max": null, 

          "min": null, 

          "show": true 

        }, 

        { 

          "format": "short", 

          "label": null, 

          "logBase": 1, 

          "max": null, 

          "min": null, 

          "show": true 

        } 

      ], 

      "yaxis": { 

        "align": false, 

        "alignLevel": null 

      } 

    } 

  ], 

  "refresh": "5s", 

  "schemaVersion": 31, 

  "style": "dark", 

  "tags": [], 

  "templating": { 

    "list": [ 

      { 

        "auto": true, 

        "auto_count": 50, 

        "auto_min": "50s", 

        "current": { 

          "selected": false, 

          "text": "30s", 

          "value": "30s" 

        }, 

        "description": null, 

        "error": null, 

        "hide": 0, 

        "label": "interval", 

        "name": "interval", 

        "options": [ 

          { 

            "selected": false, 

            "text": "auto", 

            "value": "$__auto_interval_interval" 

          }, 

          { 

            "selected": true, 

            "text": "30s", 

            "value": "30s" 

          }, 

          { 

            "selected": false, 

            "text": "1m", 

            "value": "1m" 

          }, 

          { 

            "selected": false, 

            "text": "2m", 

            "value": "2m" 

          }, 

          { 

            "selected": false, 

            "text": "3m", 

            "value": "3m" 

          }, 

          { 

            "selected": false, 

            "text": "5m", 

            "value": "5m" 

          }, 

          { 

            "selected": false, 

            "text": "7m", 

            "value": "7m" 

          }, 

          { 

            "selected": false, 

            "text": "10m", 

            "value": "10m" 

          }, 

          { 

            "selected": false, 

            "text": "30m", 

            "value": "30m" 

          }, 

          { 

            "selected": false, 

            "text": "1h", 

            "value": "1h" 

          }, 

          { 

            "selected": false, 

            "text": "6h", 

            "value": "6h" 

          }, 

          { 

            "selected": false, 

            "text": "12h", 

            "value": "12h" 

          }, 

          { 

            "selected": false, 

            "text": "1d", 

            "value": "1d" 

          }, 

          { 

            "selected": false, 

            "text": "7d", 

            "value": "7d" 

          }, 

          { 

            "selected": false, 

            "text": "14d", 

            "value": "14d" 

          }, 

          { 

            "selected": false, 

            "text": "30d", 

            "value": "30d" 

          } 

        ], 

        "query": "30s,1m,2m,3m,5m,7m,10m,30m,1h,6h,12h,1d,7d,14d,30d", 

        "queryValue": "", 

        "refresh": 2, 

        "skipUrlSync": false, 

        "type": "interval" 

      } 

    ] 

  }, 

  "time": { 

    "from": "now-1h", 

    "to": "now" 

  }, 

  "timepicker": { 

    "refresh_intervals": [ 

      "5s", 

      "10s", 

      "30s", 

      "1m", 

      "5m", 

      "15m", 

      "30m", 

      "1h", 

      "2h", 

      "1d" 

    ], 

    "time_options": [ 

      "5m", 

      "15m", 

      "1h", 

      "6h", 

      "12h", 

      "24h", 

      "2d", 

      "7d", 

      "30d" 

    ] 

  }, 

  "timezone": "browser", 

  "title": "Docker - System Dashboard", 

  "uid": "0E0FhC7Wz", 

  "version": 1 

}

Klickt nun auf „Load“.

JSON Code laden


Nun müsst ihr nur noch auf „Import“ klicken.

Daten importieren mit JSON Code in Grafana


Jetzt solltet ihr folgendes Dashboard sehen. Es zeigt euch die Anzahl an Docker Containern an, die CPU und RAM Auslastung sowie einige andere Informationen.

Dashboard in Garafana mit importierten Daten

5. Grafana Dashboards öffentlich machen

Nun zeige ich euch, wie ihr eure Dashboards einfach „teilen“ könnt. Standardmäßig muss man sich einloggen, um sich das Dashboard ansehen zu können. Dies kann man aber ändern. Dazu müssen wir jedoch eine Einstellung in der docker compose Datei machen.

nano /opt/containers/grafana/docker-compose.yml

Hier fügt ihr folgendes hinzu:

    environment: 
      - GF_AUTH_ANONYMOUS_ENABLED=true

Bei mir sieht es dann so aus:

Grafana Dashboards öffentlich machen

Wichtig ist, dass es in dem Block von „mon_grafana“ ist, da die Einstellungen sonst nicht funktionieren.

Anschließend beenden wir den Container und starten ihn neu.

docker-compose -f /opt/containers/grafana/docker-compose.yml down 

docker-compose -f /opt/containers/grafana/docker-compose.yml up -d

Nun könnt ihr auf ein Dashboard klicken und klickt auf die „3 Punkte“.

Dashboard Einstellungen in Grafana


Jetzt bekommt ihr diese Ansicht. Hier könnt ihr noch Einstellungen vornehmen und dann auf „Copy“ klicken. Mit dem Link könnt ihr dann auf euer Dashboard zugreifen, ohne dass ich euch anmelden müsst.

Direkt-Link für Dashboard in Grafana

Zu unseren vServer / VPS Paketen
Deine Zahlungsmöglichkeiten
PayPal SEPA
Zertifizierte Rechenzentren
ISO Zertifiziert nach ISO 27001
4.9 / 5 Sterne (+639 Kunden)

Du hast dein Projekt. Wir stehen an deiner Seite. Mit den Tools, die du brauchst, und ausgezeichnetem Service. So helfen wir täglich über 200.000 Menschen, ihr Business noch erfolgreicher zu gestalten.
Unser Unternehmen
Unser Unternehmen
  • Über uns
  • Karriere
  • Empfehlungsprogramm
  • Kontakt aufnehmen
Informiert
Informiert
  • Hilfebereich
  • dogado.blog
  • Dokumente
  • Wordpress Tutorial
  • vServer Tutorial
  • Website erstellen
  • Webinare
Rechtliches
Rechtliches
  • AGB
  • Datenschutz
  • Widerrufsbelehrung
  • Impressum
  • Datenschutz-Einstellungen
  • Compliance
Themenwelten
Themenwelten
  • Website & Hosting
  • Domains & E-Mails
  • Shop-Produkte
  • IT-Lösungen
  • Server-Produkte
  • Digitales Büro