Wie kann ich den Timefilter in einem Grafana-Dashboard übersteuern und auf Konstanten in der Where-Bedingung zugreifen?

In Grafana können Sie den Time-Filter (Zeitbereich) in einem Dashboard auf verschiedene Weisen beeinflussen oder übersteuern. Wenn Sie den Zeitfilter in einer SQL-Abfrage (z. B. in einer WHERE-Bedingung) verwenden, aber stattdessen auf konstante Werte zugreifen möchten, gibt es mehrere Ansätze. Hier sind die gängigsten Methoden:


1. Zeitfilter in der Abfrage ignorieren (konstante Zeitwerte verwenden)

Wenn Sie den Zeitfilter des Dashboards ignorieren und stattdessen feste Zeitwerte in Ihrer Abfrage verwenden möchten, können Sie die Zeitvariablen von Grafana ($__timeFrom() und $__timeTo()) durch konstante Werte ersetzen.

Beispiel in einer SQL-Abfrage (z. B. PostgreSQL, MySQL, etc.):

SELECT
    time_column,
    value_column
FROM
    your_table
WHERE
    -- Ignoriere den Grafana-Zeitfilter und verwende feste Werte
    time_column BETWEEN '2023-01-01 00:00:00' AND '2023-01-31 23:59:59'
    -- Oder mit Unix-Timestamps:
    -- time_column BETWEEN 1672531200 AND 1675123199

In Grafana:

  • Gehen Sie zu Ihrem Panel und bearbeiten Sie die Abfrage.
  • Ersetzen Sie die automatischen Zeitvariablen durch Ihre konstanten Werte.

2. Zeitfilter über Dashboard-Variablen übersteuern

Sie können eine Dashboard-Variable erstellen, um den Zeitfilter dynamisch zu überschreiben. Dies ist nützlich, wenn Sie zwischen verschiedenen festen Zeitbereichen wechseln möchten.

Schritte:

  1. Variable erstellen:
    • Gehen Sie zu Dashboard Settings (Zahnrad-Symbol) → Variables → Add variable.
    • Geben Sie der Variable einen Namen, z. B. time_override.
    • Wählen Sie als Typ “Custom” oder “Query” (wenn Sie die Werte aus einer Datenquelle laden möchten).
    • Definieren Sie die Werte, z. B.:'2023-01-01 00:00:00','2023-01-31 23:59:59' '2023-02-01 00:00:00','2023-02-28 23:59:59'
    • Aktivieren Sie “Include All option” (falls gewünscht).
  2. Abfrage anpassen:
    • Verwenden Sie die Variable in Ihrer WHERE-Bedingung:WHERE time_column BETWEEN ${time_override:raw}
    • Oder mit getrennten Variablen für Start und Ende:WHERE time_column BETWEEN '${time_start}' AND '${time_end}'
  3. Zeitfilter deaktivieren:
    • Gehen Sie zu Dashboard Settings → Time range und deaktivieren Sie “Enable time range”, falls Sie den Zeitfilter komplett ausschalten möchten.

3. Zeitfilter in der Abfrage mit OR oder CASE umgehen

Falls Sie den Zeitfilter nur teilweise übersteuern möchten, können Sie eine Bedingung mit OR oder CASE verwenden.

Beispiel:

SELECT
    time_column,
    value_column
FROM
    your_table
WHERE
    -- Standard-Zeitfilter von Grafana
    time_column BETWEEN $__timeFrom() AND $__timeTo()
    -- ODER ein fester Zeitbereich
    OR time_column BETWEEN '2023-01-01' AND '2023-01-31'

4. Zeitfilter in der URL des Dashboards überschreiben

Sie können den Zeitbereich auch über die URL des Dashboards festlegen. Dies ist nützlich, wenn Sie einen festen Zeitbereich für einen bestimmten Link benötigen.

Beispiel-URL:

http://your-grafana-server/d/your-dashboard?from=1672531200000&to=1675123199000
  • from und to sind Unix-Timestamps in Millisekunden.
  • Sie können diese URL z. B. in einem Link oder Bookmark verwenden.

5. Zeitfilter in der Datenquelle überschreiben (für fortgeschrittene Benutzer)

Falls Sie eine Datenquelle mit Makros verwenden (z. B. in InfluxDB oder Prometheus), können Sie den Zeitfilter dort anpassen. Dies erfordert jedoch Kenntnisse der jeweiligen Abfragesprache.

Beispiel für InfluxDB:

from(bucket: "your-bucket")
  |> range(start: -1h)  // Standard-Zeitfilter
  |> filter(fn: (r) => r._time >= 2023-01-01T00:00:00Z and r._time <= 2023-01-31T23:59:59Z)  // Fester Filter

Zusammenfassung der Methoden:

MethodeBeschreibungVorteil
Konstante Werte in AbfrageErsetzen Sie $__timeFrom() und $__timeTo() durch feste Werte.Einfach, direkt in der Abfrage.
Dashboard-VariablenErstellen Sie eine Variable für feste Zeitbereiche.Dynamisch umschaltbar.
OR-BedingungKombinieren Sie den Zeitfilter mit festen Werten.Flexibel.
URL-ParameterÜberschreiben Sie den Zeitbereich in der URL.Nützlich für Links.
Datenquellen-MakrosPassen Sie den Zeitfilter in der Abfragesprache an.Für fortgeschrittene Nutzer.

Empfehlung:

  • Wenn Sie den Zeitfilter komplett ignorieren möchten, verwenden Sie Methode 1 (konstante Werte).
  • Wenn Sie zwischen verschiedenen festen Zeitbereichen wechseln möchten, verwenden Sie Methode 2 (Dashboard-Variablen).
  • Für temporäre Überschreibungen (z. B. in Links) ist Methode 4 (URL-Parameter) ideal.

Falls Sie weitere Hilfe benötigen oder eine spezifischere Lösung für Ihre Datenquelle (z. B. PostgreSQL, MySQL, InfluxDB) wünschen, lassen Sie es mich wissen! 😊

Kommentar hinterlassen

Kommentare

Noch keine Kommentare. Starte eine Diskussion?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert