本文介绍如何将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数据库产品及其相关功能的问题。您 的回答应基于已有的知识库内容,确保准确。如果客户的问题超出了您的知识范围,请坦诚告知他们您不知道答案, 以保持信息的诚信。请以友好和亲切的语气与客户交流。可以适当地使用表情符号来提升互动体验。单击页面右上角的发布>运行,进行对话。
本文对话示例如下:
提问
可以告诉我一些ClickHouse的知识吗?返回示例
当然可以!以下是关于 ClickHouse 的一些关键知识,适合初学者快速入门: 1. 什么是 ClickHouse? 开源列式数据库:专为大规模数据处理设计,擅长 OLAP(在线分析处理)场景。 高性能:通过列式存储、向量化执行引擎和原生并行计算,实现超高速查询。 兼容 SQL:支持标准 SQL 语法,同时扩展了窗口函数、聚合函数等高级功能。 分布式架构:支持水平扩展,可轻松处理 PB 级数据。 2. 核心特性 列式存储:数据按列存储(而非传统行式),减少 I/O 开销,提升压缩率。 向量化执行:将数据划分为块(Chunk),批量处理数据,利用 CPU 指令集加速计算。 多引擎支持: MergeTree:默认引擎,支持排序、分区、主键和副本。 Memory:内存引擎,适合临时数据。 ......
步骤四:查询与分析可观测数据
在云数据库ClickHouse实例详情页左侧导航栏单击一站式可观测,根据页面提示前往服务入口。
在主页面上查询并分析Dify应用的可观测数据。
