本文介紹如何將Dify應用的可觀測資料投遞至雲資料庫 ClickHouse 企業版,並通過一站式可觀測服務進行分析,旨在協助開發人員和營運人員監控應用效能、提升問題解決效率。
前提條件
雲資料庫 ClickHouse 企業版執行個體已開啟一站式可觀測服務。
本文以通義千問為例,需要擷取API Key作為調用大模型的鑒權憑證。
操作步驟
本文樣本中,將在同一台ECS上部署商務服務和Otel Collector。生產環境下,建議獨立部署商務服務和Otel Collector。
步驟一:部署Otel Collector
配置ECS執行個體。
購買ECS執行個體。建議購買時分配公網IP,使ECS具備公網訪問能力。
將ECS IP地址添加到雲資料庫ClickHouse的白名單中。
私網IP:如果ECS執行個體與雲資料庫 ClickHouse 企業版執行個體位於同一VPC,可以將ECS的私網IP地址添加到白名單中,以下操作中雲資料庫ClickHouse執行個體的Endpoint使用VPC地址。
公網IP:如果ECS執行個體與雲資料庫 ClickHouse 企業版執行個體私網不通,可以將ECS的公網IP地址添加到白名單中,以下操作中雲資料庫ClickHouse執行個體的Endpoint使用外網地址。
您可以串連ECS執行個體,使用以下命令測試ECS與雲資料庫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.rpm配置Otel Collector,允許通過grpc和http協議接收可觀測資料,並通過http協議投遞至雲資料庫ClickHouse執行個體。
複製以下命令並修改相關配置:
在receivers地區:建議將otlp receiver的endpoint替換為Otel Collector服務的endpoint。
在exporters地區:
配置雲資料庫ClickHouse執行個體的串連資訊,包括endpoint、username和password。
配置雲資料庫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] EOF啟動Otel Collector。
service otelcol-contrib restart
步驟二:部署並啟動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容器可訪問的collector服務端點,如
http://{ECS本機IP}:4318。
啟動Dify服務。
docker安裝請參見安裝並使用Docker和Docker Compose。
docker compose up -d訪問
http://<IP地址>/install註冊使用者並登入。IP地址為運行Dify的伺服器IP地址。
步驟三:建立聊天助手
滑鼠懸浮於右上方頭像處,單擊設定。

單擊左側導覽列的模型供應商,選擇並安裝模型供應商。本文樣本選擇通義千問。
安裝完成後,在待配置地區,找到對應模型,並單擊設定,輸入API Key並儲存。

在Dify介面,單擊上方的工作室>聊天助手,然後單擊建立空白應用,設定應用程式名稱等資訊後,單擊建立。

設定提示詞。本文提示詞樣本如下:
您將充當阿里雲ClickHouse資料庫的AI智能助手,專門解答客戶關於ClickHouse資料庫產品及其相關功能的問題。您 的回答應基於已有的知識庫內容,確保準確。如果客戶的問題超出了您的知識範圍,請坦誠告知他們您不知道答案, 以保持資訊的誠信。請以友好和親切的語氣與客戶交流。可以適當地使用Emoji來提升互動體驗。單擊頁面右上方的發布>運行,進行對話。
本文對話樣本如下:
提問
可以告訴我一些ClickHouse的知識嗎?返回樣本
當然可以!以下是關於 ClickHouse 的一些關鍵知識,適合初學者快速入門: 1. 什麼是 ClickHouse? 開源列式資料庫:專為大規模資料處理設計,擅長 OLAP(線上分析處理)情境。 高效能:通過列式儲存、向量化執行引擎和原生並行計算,實現超高速查詢。 相容 SQL:支援標準 SQL 文法,同時擴充了視窗函數、彙總函式等進階功能。 分布式架構:支援水平擴充,可輕鬆處理 PB 級資料。 2. 核心特性 列式儲存:資料按列儲存(而非傳統行式),減少 I/O 開銷,提升壓縮率。 向量化執行:將資料劃分為塊(Chunk),批量處理資料,利用 CPU 指令集加速計算。 多引擎支援: MergeTree:預設引擎,支援排序、分區、主鍵和副本。 Memory:記憶體引擎,適合臨時資料。 ......
步驟四:查詢與分析可觀測資料
在雲資料庫ClickHouse執行個體詳情頁左側導覽列單擊一站式可观测,根據頁面提示前往服務入口。
在首頁面上查詢並分析Dify應用的可觀測資料。
