Kafka から取得した Snowflake データソースを使用して、単一の Grafana パネルに複数のサーバーのメトリックを表示します。

Kafka から取得した Snowflake データソースを使用して、単一の Grafana パネルに複数のサーバーのメトリックを表示します。

単一の Kafka トピックにメトリックを送信するサーバーのコレクションがあります。このデータは、次の形式で Snowflake データベースの行として保存されます。

{
  "disk_util": 47.7,
  "location": "location1",
  "timestamp": "1683703169378"
}

私はこのスノーフレークプラグインを使用しています:https://github.com/michelin/snowflake-grafana-データソース

私がやろうとしているのは、このdisk_utilメトリックを単一の Grafana パネルで表現することです。

次のクエリを使用して、という名前の変数を作成しましたlocations:

SELECT LOWER(JSON_EXTRACT_PATH_TEXT(RECORDS, 'location')) FROM METRICS

パネルクエリ:

SELECT
  INSERT_TIME as time,
  to_number(JSON_EXTRACT_PATH_TEXT(RECORDS, 'disk_util'), 10, 1)
FROM
  METRICS
WHERE
  $__timeFilter(INSERT_TIME)
AND
  JSON_EXTRACT_PATH_TEXT(RECORDS, 'location') IN (${locations:singlequote})

問題は、複数の場所を選択すると、クエリによってすべてが 1 行にまとめられるため、各場所を 1 つのパネル上の独自のプロット ラインとして表示する方法がないことです。

答え1

選択に場所の列を追加するだけで、Grafana は実際にメトリックを区別できるようになります。

次のようなものが役に立つはずです:

SELECT
  INSERT_TIME as time,
  to_number(JSON_EXTRACT_PATH_TEXT(RECORDS, 'disk_util'), 10, 1),
  JSON_EXTRACT_PATH_TEXT(RECORDS, 'location')
FROM
  METRICS
WHERE
  $__timeFilter(INSERT_TIME)
AND
  JSON_EXTRACT_PATH_TEXT(RECORDS, 'location') IN (${locations:singlequote})

関連情報