Este artigo mostra como enviar dados de observabilidade da sua aplicação Dify para o Alibaba Cloud ClickHouse Enterprise Edition e analisá-los com o serviço de observabilidade unificado. Esse processo ajuda a monitorar o desempenho da aplicação e resolver problemas com mais eficiência.
Pré-requisitos
A instância do Alibaba Cloud ClickHouse Enterprise Edition deve ter o serviço de observabilidade unificado ativado.
Este tópico usa o Tongyi Qianwen como exemplo. Obtenha uma chave de API para autenticar chamadas ao modelo de linguagem grande (LLM).
Procedimento
Neste exemplo, o serviço de negócios e o OpenTelemetry Collector são implantados na mesma instância ECS. Em ambientes de produção, recomendamos implantar o serviço de negócios e o OpenTelemetry Collector separadamente.
Etapa 1: Implantar o OpenTelemetry Collector
-
Configure a instância ECS.
Adquira uma instância ECS. Recomendamos atribuir um endereço IP público durante a aquisição para permitir acesso pela rede pública.
-
Adicione o endereço IP da instância ECS à lista de permissões do Alibaba Cloud ClickHouse.
Endereço IP privado: se a instância ECS e a instância do Alibaba Cloud ClickHouse Enterprise Edition estiverem na mesma Virtual Private Cloud (VPC), adicione o endereço IP privado da instância ECS à lista de permissões. Nesse caso, use o endpoint de VPC da instância do Alibaba Cloud ClickHouse nas etapas seguintes.
Endereço IP público: se a instância ECS não conseguir se conectar à instância do Alibaba Cloud ClickHouse Enterprise Edition pela rede privada, adicione o endereço IP público da instância ECS à lista de permissões. Nesse cenário, utilize o endpoint público da instância do Alibaba Cloud ClickHouse nas etapas subsequentes.
Conecte-se à instância ECS e execute o comando abaixo para testar a conexão com a instância do Alibaba Cloud ClickHouse. Uma resposta
Ok.indica que a conexão foi bem-sucedida.curl http://cc-xxxxxxx-clickhouse.clickhouseserver.pre.rds.aliyuncs.com:8123
-
Conecte-se à instância ECS e execute os comandos a seguir para instale o 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 o OpenTelemetry Collector para receber dados de observabilidade via gRPC e HTTP e enviá-los à instância do Alibaba Cloud ClickHouse por HTTP.
Copie o comando abaixo e modifique a configuração conforme descrito:
Na seção
receivers, recomendamos substituir oendpointdo receptor OTLP pelo endpoint do seu serviço OpenTelemetry Collector.-
Na seção
exporters:Defina os detalhes de conexão da sua instância do Alibaba Cloud ClickHouse, incluindo
endpoint,usernameepassword.Especifique o banco de dados e os nomes das tabelas para armazenar os dados de observabilidade na instância do Alibaba Cloud ClickHouse. Isso inclui
database,traces_table_name,logs_table_nameemetrics_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 -
Execute o OpenTelemetry Collector.
service otelcol-contrib restart
Etapa 2: Implantar e iniciar o Dify
-
Execute o comando abaixo para implantar o Dify.
git clone https://github.com/langgenius/dify.git -
Execute os comandos a seguir para preparar o arquivo de configuração do Dify para edição.
cd dify/docker cp .env.example .env vim .envNo arquivo
.env, defina os parâmetros abaixo:Defina
ENABLE_OTELcomotrue.Configure
OTEL_EXPORTER_OTLP_PROTOCOLcom o valorHTTP.Aponte
OTLP_BASE_ENDPOINTpara o endpoint do OpenTelemetry Collector acessível a partir do contêiner do Dify, por exemplo,http://<YOUR_ECS_IP>:4318.
-
Execute o serviço Dify.
Para instruções sobre a instalação do Docker, consulte Instalar e usar Docker e Docker Compose .
docker compose up -d -
Acesse
http://<IP_ADDRESS>/installpara registrar um usuário e fazer login. Substitua<IP_ADDRESS>pelo endereço IP do servidor onde o Dify está em execução.
Etapa 3: Crie um assistente de chat
-
Passe o mouse sobre sua foto de perfil no canto superior direito e clique em Settings.

No painel de navegação à esquerda, clique em Model Providers, selecione e instale um provedor de modelos. Este exemplo utiliza o Tongyi Qianwen.
-
Após concluir a instalação, localize o modelo na seção To be configured. Clique em Setup, insira sua chave de API e salve.

-
Na interface do Dify, clique em Studio > Chatbot na parte superior. Clique em Create Blank App, dê um nome à aplicação e clique em Create.

-
Defina o prompt. Veja um exemplo abaixo:
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. -
No canto superior direito da página, clique em Publish > Run para iniciar uma conversa.
Confira um exemplo de conversa:
Pergunta
Can you tell me something about ClickHouse?Exemplo de resposta
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. ......
Etapa 4: Consultar e analisar dados de observabilidade
Na página de detalhes da sua instância do Alibaba Cloud ClickHouse, clique em All-in-one Observe Suite no painel de navegação à esquerda para abrir o portal do serviço.
-
Na página principal, consulte e analise os dados de observabilidade da sua aplicação Dify.
