このトピックでは、ワンストップの可観測性サービスを使用して、分析のために Dify アプリケーションから ApsaraDB for ClickHouse Enterprise Edition に可観測性データを配信する方法について説明します。このプロセスは、開発者および運用保守 (O&M) エンジニアがアプリケーションのパフォーマンスを監視し、問題をより効率的に解決するのに役立ちます。
前提条件
手順
この例では、ビジネスサービスと Otel Collector は同じ ECS インスタンスにデプロイされます。本番環境では、ビジネスサービスと Otel Collector を別々にデプロイすることをお勧めします。
ステップ 1: Otel Collector のデプロイ
ECS インスタンスを構成します。
ECS インスタンスを購入します。インスタンスを購入する際に、パブリックネットワークアクセスを有効にするためにパブリック IP アドレスを割り当てます。
ApsaraDB for ClickHouse インスタンスの ホワイトリスト に ECS インスタンスの IP アドレスを追加します。
プライベート IP: ECS インスタンスと ApsaraDB for ClickHouse Enterprise Edition インスタンスが同じ VPC にある場合は、ECS インスタンスのプライベート IP アドレスをホワイトリストに追加します。次のステップでは、ApsaraDB for ClickHouse インスタンスのエンドポイントに VPC アドレスを使用します。
パブリック IP: ECS インスタンスと ApsaraDB for ClickHouse Enterprise Edition インスタンスがプライベートネットワーク経由で接続できない場合は、ECS インスタンスのパブリック IP アドレスをホワイトリストに追加します。次のステップでは、ApsaraDB for ClickHouse インスタンスのエンドポイントにパブリックアドレスを使用します。
ECS インスタンスに接続し、次のコマンドを実行して ApsaraDB for ClickHouse インスタンスへの接続性をテストします。コマンドが
Ok.を返した場合、接続は成功です。curl http://cc-xxxxxxx-clickhouse.clickhouseserver.pre.rds.aliyuncs.com:8123
ECS インスタンスに接続し、次のコマンドを実行して otelcol-contrib をインストールします。
mkdir llm-demo cd llm-demo wget -O otelcol-contrib.rpm https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.136.0/otelcol-contrib_0.136.0_linux_amd64.rpm yum install otelcol-contrib.rpmgRPC および HTTP プロトコル経由で可観測性データを受け入れ、HTTP プロトコル経由で ApsaraDB for ClickHouse インスタンスにデータを配信するように Otel Collector を構成します。
次の内容をコピーして設定ファイルを作成し、必要に応じて設定を変更します:
`receivers` セクションで: OTLP レシーバーのエンドポイントを Otel Collector サービスのエンドポイントに置き換えます。
`exporters` セクションで:
エンドポイント、ユーザー名、パスワードなど、ApsaraDB for ClickHouse インスタンスの接続情報を構成します。
ApsaraDB for ClickHouse インスタンスに可観測性データを格納するためのデータベース名とテーブル名を構成します。これには、`database`、`traces_table_name`、`logs_table_name`、`metrics_tables` が含まれます。
cat > /etc/otelcol-contrib/config.yaml << EOF receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 processors: batch: timeout: 5s send_batch_size: 5000 exporters: clickhouse: endpoint: http://cc-xxxxxx-clickhouse.clickhouseserver.pre.rds.aliyuncs.com:8123?dial_timeout=10s&compress=lz4&async_insert=1 username: test password: password # ttl: 72h traces_table_name: otel_traces logs_table_name: otel_logs metrics_tables: gauge: name: otel_metrics_gauge sum: name: otel_metrics_sum summary: name: otel_metrics_summary histogram: name: otel_metrics_histogram exponential_histogram: name: otel_metrics_exp_histogram create_schema: false timeout: 5s database: clickobserve_service sending_queue: queue_size: 1000 retry_on_failure: enabled: true initial_interval: 5s max_interval: 30s max_elapsed_time: 300s service: pipelines: traces: receivers: [otlp] processors: [batch] exporters: [clickhouse] metrics: receivers: [otlp] processors: [batch] exporters: [clickhouse] logs: receivers: [otlp] processors: [batch] exporters: [clickhouse] EOFOtel Collector を起動します。
service otelcol-contrib restart
ステップ 2: Dify のデプロイと起動
次のコマンドを実行して Dify をデプロイします。
git clone https://github.com/langgenius/dify.git次のコマンドを実行して Dify の設定ファイルを変更します。
cd dify/docker cp .env.example .env vim .env.env設定ファイルで、次の設定項目を見つけて変更します:ENABLE_OTEL: このパラメーターを `true` に設定します。
OTEL_EXPORTER_OTLP_PROTOCOL: このパラメーターを `http` に設定します。
OTLP_BASE_ENDPOINT: このパラメーターを、Dify コンテナーからアクセス可能なコレクターサービスのエンドポイント (例:
http://{ECS インスタンスの IP アドレス}:4318) に設定します。
Dify サービスを起動します。
詳細については、「Docker と Docker Compose のインストールと使用」をご参照ください。
docker compose up -dhttp://<IP アドレス>/installにアクセスしてユーザーを登録し、ログインします。`` を Dify が実行されているサーバーの IP アドレスに置き換えます。
ステップ 3: チャットアシスタントの作成
右上のプロフィール画像にカーソルを合わせ、[設定] をクリックします。

左側のナビゲーションウィンドウで、[モデルプロバイダー] をクリックします。Qwen などのモデルプロバイダーを選択してインストールします。
インストールが完了したら、[設定が必要] セクションでモデルを見つけ、[セットアップ] をクリックします。API キーを入力して設定を保存します。

Dify ページの上部で、[スタジオ] > [チャットボット] をクリックします。次に、[空白のアプリを作成] をクリックします。アプリケーション名とその他の情報を設定し、[作成] をクリックします。

プロンプトを設定します。以下はプロンプトの例です:
あなたは Alibaba Cloud の ClickHouse データベースの AI アシスタントとして機能します。あなたの役割は、ClickHouse データベース製品とその機能に関する顧客の質問に答えることです。回答は、正確性を確保するために既存のナレッジベースに基づいている必要があります。顧客の質問があなたの知識の範囲外である場合は、誠実さを保つために答えを知らないと正直に述べてください。フレンドリで親しみやすいトーンで顧客とコミュニケーションをとってください。絵文字を使用して対話を強化することができます。ページの右上隅で、[公開] > [実行] をクリックして会話を開始します。
以下は会話のサンプルです:
質問
ClickHouse について何か教えていただけますか?応答のサンプル
もちろんです!初心者のための ClickHouse に関する主要な情報をいくつかご紹介します: 1. ClickHouse とは? オープンソースのカラムナデータベース: 大規模なデータ処理用に設計されており、オンライン分析処理 (OLAP) シナリオに優れています。 高性能: カラムナストレージ、ベクトル化された実行エンジン、およびネイティブな並列計算により、超高速なクエリを実現します。 SQL 互換: 標準の SQL 構文をサポートし、ウィンドウ関数や集計関数などの高度な機能で拡張されています。 分散アーキテクチャ: 水平スケーリングをサポートし、ペタバイト規模のデータを簡単に処理できます。 2. コアな特徴 カラムナストレージ: データは行単位ではなく列単位で格納されます。これにより、I/O オーバーヘッドが削減され、圧縮率が向上します。 ベクトル化実行: データをチャンクに分割し、バッチで処理します。これにより、CPU の命令セットを使用して計算を高速化します。 複数のエンジンをサポート: MergeTree: デフォルトのエンジンです。ソート、パーティション、プライマリキー、レプリカをサポートします。 Memory: 一時データに適したインメモリエンジンです。 ...
ステップ 4: 可観測性データのクエリと分析
ApsaraDB for ClickHouse インスタンスのインスタンス詳細ページで、左側のナビゲーションウィンドウにある ワンストップ可観測 をクリックします。次に、画面の指示に従ってサービスポータルに移動します。
メインページでは、Dify アプリケーションからの可観測性データをクエリおよび分析できます。
