GrafanaとClickHouseを使用した可観測性
Grafanaは、ClickHouseにおける可観測性データのための推奨ビジュアライゼーションツールです。これは、Grafana用の公式ClickHouseプラグインを使用して達成されます。ユーザーは、こちらにあるインストール手順に従うことができます。
プラグインのV4では、ログとトレースが新しいクエリビルダー体験の一級市民となります。これにより、SREがSQLクエリを書く必要が最小限になり、SQLベースの可観測性が簡素化され、この新興パラダイムの進展が促されます。その一環として、Open Telemetry (OTel) をプラグインの中心に配置しています。これは、今後数年間のSQLベースの可観測性の基盤となり、データの収集方法を決定すると信じています。
Open Telemetry統合
GrafanaでClickhouseデータソースを構成すると、プラグインはログとトレースのためのデフォルトのデータベースとテーブルを指定し、これらのテーブルがOTelスキーマに準拠しているかどうかをユーザーが指定できるようにします。これにより、Grafanaで正しいログとトレースのレンダリングに必要なカラムをプラグインが返すことができます。デフォルトのOTelスキーマに変更を加え、自分のカラム名を使用したい場合は、それらを指定することができます。時間(Timestamp)、ログレベル(SeverityText)、またはメッセージ本文(Body)などのデフォルトOTelカラム名を使用する場合は、変更は必要ありません。
ユーザーは、HTTPまたはネイティブプロトコルのいずれかを介してGrafanaをClickHouseに接続できます。後者は、Grafanaユーザーが発行する集約クエリで顕著なパフォーマンス向上を提供する可能性が低いです。対照的に、HTTPプロトコルは通常、ユーザーがプロキシや調査を行う際により単純です。
ログが正しくレンダリングされるためには、ログレベル、時間、メッセージのカラムが必要です。
トレースの構成はやや複雑です(完全なリストはこちら)。ここで必要なカラムは、完全なトレースプロファイルを構築する後続のクエリが抽象化できるようにするために必要です。これらのクエリは、データが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の検索を行うためにマテリアライズドビューotel_traces_trace_id_ts
を使用していることに注意してください。詳しくは、Accelerating Queries - マテリアライズドビューを使用したルックアップを参照してください。

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

ダッシュボード
ユーザーは、ClickHouseデータソースを使用してGrafanaにダッシュボードを構築できます。詳細については、GrafanaとClickHouseのdata source documentationを推奨します。特にマクロの概念や変数について確認してください。
プラグインは、OTel仕様に準拠したログおよびトレースデータ用のシンプルなClickHouse OTelダッシュボードの例を含む、いくつかの既製のダッシュボードを提供します。これは、ユーザーがOTelのデフォルトカラム名に準拠する必要があり、データソース構成からインストールできます。

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

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

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