に最終更新
DOG Stack オープンオブザーバビリティの概要
DOG Stack は、Doris、OpenTelemetry(Doris Exporter を含む)、Grafana(Doris App プラグイン を含む)を基盤とするオープンなオブザーバビリティソリューションです。次の特長を備えています。
- オープン: すべてのコンポーネントがオープンソースであり、特定のベンダーへの依存を避けられます。
- 高性能: 書き込みスループットは最大で毎秒数百 GB に達します。数十億件のレコードを対象とする検索やクエリにも、サブ秒で応答します。
- 低コスト: ELK や Datadog と比較して、オブザーバビリティのコストを 50% 超、場合によっては 80% 削減できます。
- スケーラブル: PB 規模、さらには EB 規模のデータも容易に扱えます。
OpenTelemetry はオブザーバビリティデータ収集の事実上の標準であり、Grafana はその可視化の事実上の標準です。そのため Doris は、新たな収集・可視化ツールを一から作るのではなく、これらを基盤とするオブザーバビリティソリューションを構築しました。Doris は、オブザーバビリティデータの効率的な保存と高速なクエリに注力しています。
機能
DOG Stack は、OpenTelemetry と Grafana を基盤として豊富な機能を提供します。
- さまざまなオブザーバビリティデータの収集
- OpenTelemetry SDK により、10 を超えるプログラミング言語のアプリケーションを、すぐに、場合によってはコードを書かずに計装できます。
- OpenTelemetry Collector は、ローカルファイル、ホストのメトリクス、コンテナのメトリクスを取り込みます。
- Vector、Fluentbit、Node Exporter、Telegraf、Logstash、Filebeat など、既存の収集ツールと連携できます。
- Kibana を超える検索体験
- Lucene 形式の検索構文とネイティブ SQL 構文の両方に対応します。
- ワンクリックでログとトレースを関連付けられます。
- 詳細なレコードをテーブル形式または JSON 形式で表示できます。
- 特定のログやトレースの前後に発生したデータを時系列で確認できます。
- 時間範囲やフィールドを対話的に選択し、フィールドで絞り込めます。
- フィールド値の分布を集計できます。
- Jaeger のようなトレース体験
- サービス名、オペレーション、タグ、所要時間の範囲でトレースを絞り込めます。
- タイムライン、所要時間、スパン数でトレースを可視化できます。
- タイムスタンプ、所要時間、スパン数でトレースを並べ替えられます。
- 特定のトレースをウォーターフォール表示できます。
- トレース内のスパンを、サービス名、スパン名、タグ、所要時間の範囲で絞り込めます。
- ダッシュボード
- 折れ線グラフ、棒グラフ、円グラフ、ゲージ、ヒートマップ、ヒストグラム、地図など、20 種類を超える可視化形式を利用できます。
- ビジュアルビルダーまたは直接記述した SQL でダッシュボードを作成できます。
- Doris の複数テーブル結合を使って、ログ、トレース、メトリクスを横断するダッシュボードを作成できます。
- アラート
- データなし / エラー、しきい値、複合しきい値など、複数の条件に対応するアラートルールを設定できます。対象となるメトリクスには、件数、合計、比率などがあります。
- メール、PagerDuty、Slack、Discord、Webhook など、20 を超える通知チャネルを利用できます。
- アラートテンプレートを使って通知メッセージをカスタマイズ、整形、再利用できます。
- OpenTelemetry と Grafana がサポートするその他の機能。
以下は、Doris App プラグインをインストールした Grafana の画面例です。
- ログ検索

- トレース分析

- メトリクスダッシュボード

アーキテクチャ

DOG Stack は、次のコンポーネントで構成されます。
- データ収集ツール: ログ、トレース、メトリクスなどのテレメトリを収集します。OpenTelemetry は二種類の収集ツールを提供します。一つは、10 を超える言語に対応する OpenTelemetry SDK です。アプリケーションや AI エージェントを計装するために使用し、通常はトレースデータを収集します。もう一つは OpenTelemetry Collector のレシーバーです。ローカルファイル用の filelog レシーバー、ホストのメトリクス(CPU、メモリなど)用の hostmetrics レシーバー、Kubernetes の Pod メトリクス用の podmetrics レシーバーなどがあります。Vector、Fluentbit、Node Exporter、Telegraf などのサードパーティ製コレクターも、OTLP などのプロトコルを介して OpenTelemetry Collector にデータを送信できます。
- OpenTelemetry Collector(Doris Exporter を含む): 収集ツールからテレメトリデータを受け取り、処理したうえで Doris Exporter を介して Doris に永続化します。一般的な処理には、フィルタリング、変換、情報の付加、キューイング、バッチ処理があります。
- Doris: OpenTelemetry Collector からテレメトリデータを受け取り、インデックス付きの列指向ストレージに効率的に保存します。転置インデックス、ブルームフィルターインデックス、ゾーンマップインデックスなどの各種インデックスにより、高速な検索を実現します。また、集約、ソート、結合などの分析クエリでも、ネイティブの高い性能を発揮します。
- Grafana(Doris App プラグインを含む): ログ、トレース、メトリクス向けの豊富で使いやすい可視化機能を提供します。Grafana の強力な基本機能に加え、Doris App プラグインが実用的な機能を追加します。「Discover」機能は、Kibana ユーザーにも評価される優れた検索体験を提供します。「Traces」機能では、調査すべきトレース(処理の遅いトレースなど)を見つけるためのネイティブなトレース探索ができ、Jaeger ユーザーにも使い慣れた操作感を提供します。