Este artículo explica cómo enviar datos de observability desde su aplicación Dify a Alibaba Cloud ClickHouse Enterprise Edition y analizarlos con el servicio ClickStack. Este proceso le permite supervisar el rendimiento de la aplicación y resolver problemas con mayor eficiencia.
Requisitos previos
Su instancia de Alibaba Cloud ClickHouse Enterprise Edition debe tener habilitado ClickStack service.
Este artículo utiliza Tongyi Qianwen como ejemplo. Debe obtain an API key para autenticar las llamadas al modelo de lenguaje grande (LLM).
Procedimiento
En este ejemplo se despliega el servicio empresarial y OpenTelemetry Collector en la misma instancia ECS. Para entornos de producción, se recomienda desplegar el servicio empresarial y OpenTelemetry Collector por separado.
Paso 1: Desplegar OpenTelemetry Collector
-
Configure la instancia ECS.
Purchase an ECS instance. Se recomienda asignar una dirección IP pública durante la compra para permitir el acceso a través de la red pública.
-
Agregue la dirección IP de la instancia ECS a allowlist de Alibaba Cloud ClickHouse.
Dirección IP privada: si la instancia ECS y la instancia de Alibaba Cloud ClickHouse Enterprise Edition se encuentran en la misma Virtual Private Cloud (VPC), agregue la dirección IP privada de la instancia ECS a la lista de permitidos. En este caso, utilice el endpoint de VPC para la instancia de Alibaba Cloud ClickHouse en los pasos siguientes.
Dirección IP pública: si la instancia ECS no puede conectarse a la instancia de Alibaba Cloud ClickHouse Enterprise Edition a través de la red privada, agregue la dirección IP pública de la instancia ECS a la lista de permitidos. En este caso, utilice el endpoint público para la instancia de Alibaba Cloud ClickHouse en los pasos siguientes.
Puede connect to the ECS instance y ejecutar el siguiente comando para probar la conexión a la instancia de Alibaba Cloud ClickHouse. Una respuesta
Ok.indica que la conexión fue exitosa.curl http://cc-xxxxxxx-clickhouse.clickhouseserver.pre.rds.aliyuncs.com:8123
-
Connect to the ECS instance y ejecute los siguientes comandos para instalar 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 -
Configure OpenTelemetry Collector para recibir datos de observability mediante gRPC y HTTP, y enviarlos a la instancia de Alibaba Cloud ClickHouse a través de HTTP.
Copie el siguiente comando y modifique la configuración según se describe:
En la sección
receivers, se recomienda reemplazar elendpointdel receptor OTLP por el endpoint de su servicio OpenTelemetry Collector.-
En la sección
exporters:Configure los detalles de conexión de su instancia de Alibaba Cloud ClickHouse, incluidos
endpoint,usernameypassword.Configure los nombres de la base de datos y las tablas donde se almacenarán los datos de observability en su instancia de Alibaba Cloud ClickHouse. Esto incluye
database,traces_table_name,logs_table_nameymetrics_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 -
Inicie OpenTelemetry Collector.
service otelcol-contrib restart
Paso 2: Desplegar e iniciar Dify
-
Ejecute el siguiente comando para desplegar Dify.
git clone https://github.com/langgenius/dify.git -
Ejecute los siguientes comandos para preparar el archivo de configuración de Dify y editarlo.
cd dify/docker cp .env.example .env vim .envEn el archivo
.env, establezca los siguientes parámetros:Establezca
ENABLE_OTELentrue.Establezca
OTEL_EXPORTER_OTLP_PROTOCOLenHTTP.Establezca
OTLP_BASE_ENDPOINTen el endpoint de OpenTelemetry Collector accesible desde el contenedor de Dify, por ejemplo,http://<YOUR_ECS_IP>:4318.
-
Inicie el servicio Dify.
Para obtener instrucciones sobre la instalación de Docker, consulte Install and use Docker and Docker Compose .
docker compose up -d -
Vaya a
http://<IP_ADDRESS>/installpara registrar un usuario e iniciar sesión. Reemplace<IP_ADDRESS>con la dirección IP del servidor que ejecuta Dify.
Paso 3: Crear un asistente de chat
-
Pase el cursor sobre su foto de perfil en la esquina superior derecha y haga clic en Settings.

En el panel de navegación izquierdo, haga clic en Model Providers, luego seleccione e instale un proveedor de modelos. Este ejemplo utiliza Tongyi Qianwen.
-
Una vez completada la instalación, busque el modelo en la sección To be configured. Haga clic en Setup, introduzca su clave de API y guarde los cambios.

-
En la interfaz de Dify, haga clic en Studio > Chatbot en la parte superior. Haga clic en Create Blank App, asigne un nombre a la aplicación y luego haga clic en Create.

-
Defina el prompt. A continuación se muestra un ejemplo de prompt:
You are an AI assistant for Alibaba Cloud ClickHouse. Your purpose is to answer customer questions about the ClickHouse database product and its features. Your answers must be accurate and based on the provided knowledge base. If a question is outside your knowledge, honestly state that you do not know the answer to maintain integrity. Communicate with customers in a friendly and approachable tone. You can use emojis to enhance the interaction. -
En la esquina superior derecha de la página, haga clic en Publish > Run para iniciar una conversación.
A continuación se muestra un ejemplo de conversación:
Pregunta
Can you tell me something about ClickHouse?Respuesta de ejemplo
Of course! Here is some key information about ClickHouse to help beginners get started quickly: 1. What is ClickHouse? An open-source columnar database: Designed for large-scale data processing and excels in Online Analytical Processing (OLAP) scenarios. High performance: Achieves ultra-fast queries through columnar storage, a vectorized execution engine, and native parallel computing. SQL compatible: Supports standard SQL syntax and extends it with advanced features like window functions and aggregate functions. Distributed architecture: Supports horizontal scaling and can easily handle petabytes of data. 2. Core features Columnar storage: Data is stored by column (instead of by row), which reduces I/O overhead and improves compression ratios. Vectorized execution: Processes data in batches by dividing it into chunks, accelerating computation by leveraging CPU instruction sets. Multi-engine support: MergeTree: The default engine, which supports sorting, partitioning, primary keys, and replicas. Memory: An in-memory engine suitable for temporary data. ......
Paso 4: Consultar y analizar datos de observability
En la página de detalles de su instancia de Alibaba Cloud ClickHouse, haga clic en ClickStack en el panel de navegación izquierdo para abrir el portal del servicio.
-
En la página principal, puede consultar y analizar los datos de observability de su aplicación Dify.
