GrafanaとClickHouseを使用した可観測性
Grafanaは、ClickHouseにおける可観測性データのための推奨可視化ツールです。これは、Grafana用の公式ClickHouseプラグインを使用して実現されます。ユーザーはこちらにあるインストール手順に従うことができます。
プラグインのV4では、ログとトレースが新しいクエリビルダー体験の中で第一級市民として扱われます。これにより、SREがSQLクエリを書く必要が最小限に抑えられ、SQLベースの可観測性が簡素化され、この新興パラダイムの前進が促進されます。この一環として、私たちはOpen Telemetry (OTel)をプラグインの中心に置いており、これが今後数年間のSQLベースの可観測性の基盤となり、データ収集の方法になると考えています。
Open Telemetry統合
GrafanaでClickHouseデータソースを設定すると、プラグインはユーザーがログとトレースのためのデフォルトデータベースとテーブルを指定し、これらのテーブルがOTelスキーマに準拠しているかどうかを設定できるようにします。これにより、プラグインはGrafanaでのログとトレースの正しいレンダリングに必要なカラムを返すことができます。デフォルトのOTelスキーマに変更を加え、自分独自のカラム名を使用したい場合は、それを指定できます。time(Timestamp)、log level(SeverityText)、message body(Body)などのデフォルトOTelカラム名を使うことにより、変更は不要になります。
ユーザーは、HTTPプロトコルまたはNativeプロトコルのいずれかを介してGrafanaをClickHouseに接続できます。後者は、Grafanaユーザーが発行する集約クエリでは感知されないかもしれない若干のパフォーマンス向上を提供します。一方、HTTPプロトコルは通常、ユーザーがプロキシや内部調査を行う際により単純です。
ログが正しくレンダリングされるためには、Logs設定には時間、ログレベル、およびメッセージカラムが必要です。
Traces設定はやや複雑です(フルリストはこちら)。ここで必要なカラムは、フルトレースプロファイルを構築するための後続のクエリを抽象化できるように必要です。これらのクエリはデータがOTelに似た構造であることを前提としているため、標準スキーマから大きく逸脱するユーザーはこの機能を利用するためにビューを使用する必要があります。

設定が完了したら、ユーザーはGrafana Exploreに移動し、ログやトレースを検索し始めることができます。
ログ
Grafanaのログ要件に従うと、ユーザーはクエリビルダーでQuery Type: Log
を選択し、Run Query
をクリックすることができます。クエリビルダーは、ログをリストするクエリを作成し、適切にレンダリングされることを保証します。例:

クエリビルダーは、クエリを変更するための簡単な手段を提供し、ユーザーがSQLを書く必要がなくなります。キーワードを含むログを見つけるなどのフィルタリングは、クエリビルダーから実行できます。より複雑なクエリを作成したいユーザーは、SQLエディタに切り替えることができます。適切なカラムが返され、logs
がQuery Typeとして選択される限り、結果はログとしてレンダリングされます。ログレンダリングに必要なカラムはこちらにリストされています。
ログからトレースへ
ログにトレースIDが含まれている場合、ユーザーは特定のログ行のトレースをナビゲートできる利点があります。

トレース
上記のログ体験と同様に、Grafanaがトレースをレンダリングするために必要なカラムが満たされている場合(たとえば、OTelスキーマを使用)、クエリビルダーは自動的に必要なクエリを形成できます。Query Type: Traces
を選択し、Run Query
をクリックすると、次のようなクエリが生成・実行されます(設定されたカラムに応じて - 以下はOTelの使用を前提としています):
このクエリは、Grafanaによって予想されるカラム名を返し、以下に示すトレースのテーブルをレンダリングします。継続時間や他のカラムでのフィルタリングは、SQLを書く必要なく行えます。

より複雑なクエリを作成したいユーザーは、SQL Editor
に切り替えることができます。
トレース詳細の表示
上記のように、トレースIDはクリック可能なリンクとしてレンダリングされます。トレースIDをクリックすると、ユーザーは関連するスパンを表示するためのリンクView Trace
を選択できます。これにより、必要な構造でスパンを取得するためのクエリが次のようになります(OTelカラムを前提としています):
上記のクエリがトレースIDのルックアップにmaterialized view otel_traces_trace_id_ts
を使用していることに注意してください。詳細については、Accelerating Queries - Using Materialized views for lookupsを参照してください。

トレースからログへ
ログにトレースIDが含まれている場合、ユーザーはトレースから関連するログにナビゲートできます。ログを見るには、トレースIDをクリックし、View Logs
を選択します。これにより、デフォルトのOTelカラムを前提とした次のクエリが発行されます。

ダッシュボード
ユーザーは、ClickHouseデータソースを使用してGrafanaにダッシュボードを構築できます。詳細については、GrafanaとClickHouseのデータソース文書を参照することをお勧めします。特にマクロの概念や変数に関する情報が有用です。
プラグインは、OTel仕様に準拠したログとトレースデータのためのサンプルダッシュボード「Simple ClickHouse OTel dashboarding」を含む、いくつかの既製ダッシュボードを提供しています。これには、ユーザーがOTelのデフォルトカラム名に準拠する必要があり、データソース設定からインストールできます。

以下に、ビジュアライゼーションを構築するためのいくつかの簡単なヒントを提供します。
時系列
統計値とともに、折れ線チャートは可観測性ユースケースで使用される最も一般的な視覚化形式です。ClickHouseプラグインは、クエリがdatetime
という名前のtime
と数値カラムを返すと、自動的に折れ線チャートをレンダリングします。たとえば:

マルチラインチャート
次の条件が満たされると、クエリはマルチラインチャートとして自動的にレンダリングされます:
- フィールド1:エイリアスがtimeのdatetimeフィールド
- フィールド2:グループ化するための値。これは文字列である必要があります。
- フィールド3以上:メトリック値
たとえば:

ジオデータの視覚化
前のセクションで、IP辞書を使用して可観測性データをジオ座標で強化する方法を探りました。latitude
とlongitude
のカラムがある場合、geohashEncode
関数を使用して可観測性を視覚化できます。これにより、Grafana Geo Mapチャートに適合するジオハッシュが生成されます。以下に、クエリと視覚化の例を示します:
