Aplicacao web
Kmind APM Web
Monitore a experiencia real de sites, portais e SPAs. O pacote coleta Web Vitals, navegacao, chamadas HTTP, erros e logs sem bloquear a aplicacao que o usuario esta usando.
O que voce precisa antes de iniciar
- Uma aplicacao web publicada ou em desenvolvimento, com Node.js e npm para instalar dependencias.
- Acesso ao Console Kmind para cadastrar o servico Frontend / APM Web.
- A URL onde o site roda, como
https://app.exemplo.comouhttp://localhost:5173.
1. Crie a integracao no Console
- Em Clusters, escolha ou crie um cluster do tipo Cloud.
- Adicione um servico do tipo Frontend / APM Web.
- Informe as origens permitidas. Cada origem deve conter protocolo e host, por exemplo
https://app.exemplo.com. - Conclua o wizard e copie a client key exibida na etapa de conexao.
applicationName diferente para cada portal, loja ou area administrativa.2. Instale e inicialize
Instale o pacote e chame init uma unica vez, logo no ponto de entrada do navegador.
npm install kmind-apm-web
import { init } from "kmind-apm-web";
init({
applicationName: "portal-cliente",
clientKey: "kmw_COLE_A_SUA_CHAVE_AQUI",
captureConsole: true,
});Troque portal-cliente por um nome estavel e facil de reconhecer no Console. Nao use o nome do cluster como nome da aplicacao: nexus_cliente e nexus_admin podem usar a mesma client key e aparecerao como aplicacoes separadas.
3. Valide em menos de um minuto
- Abra o site em uma origem permitida.
- Em DevTools > Network, confirme
GET /v1/apm/statuscom resposta{ "active": true }. - Navegue, clique em elementos e faca uma chamada HTTP para gerar traces e metricas.
- No Kmind, abra Aplicacoes e selecione o
applicationNameconfigurado.
// Teste opcional de log. Remova depois de validar.
import { logger } from "kmind-apm-web";
logger.info("Kmind APM Web configurado com sucesso");Logs, erros e console
Erros globais do navegador sao registrados automaticamente. Para eventos de negocio, use o logger do Kmind; ele associa o log ao trace ativo quando existir.
import { logger } from "kmind-apm-web";
logger.info("Checkout iniciado", { cartId: "c_123" });
logger.warn("Estoque baixo", { sku: "sku-42" });
logger.error("Pagamento recusado", { provider: "cartao" });captureConsole: true coleta somente console.warn e console.error. Ele nao coleta console.log para evitar ruido, dados desnecessarios e custo operacional. Os logs sao enviados em lote; aguarde alguns segundos antes de consultar o Logs Explorer.
Trace distribuido com o backend
Para relacionar uma tela com a API que ela chama, informe somente os hosts autorizados em propagateTraceTo. O SDK adiciona o cabecalho traceparent apenas nesses destinos.
init({
applicationName: "portal-cliente",
clientKey: "kmw_...",
propagateTraceTo: ["api.exemplo.com", "checkout.exemplo.com"],
});traceparent no CORS. Nao adicione hosts de terceiros que nao pertencem a sua operacao.React, Vue e Next.js
Os wrappers sao opcionais. O pacote base funciona em qualquer framework; use um wrapper quando quiser integracao de rota e Error Boundary pronta.
React com Vite
npm install kmind-apm-web-react
// src/main.tsx
import { initKmindReact, KmindErrorBoundary } from "kmind-apm-web-react";
initKmindReact({ captureConsole: true });
root.render(<KmindErrorBoundary><App /></KmindErrorBoundary>);# .env
VITE_KMIND_APPLICATION_NAME=portal-cliente
VITE_KMIND_CLIENT_KEY=kmw_...Vue 3 com Vite
npm install kmind-apm-web-vue
// src/main.ts
import { createApp } from "vue";
import { initKmindVue, installKmindVue } from "kmind-apm-web-vue";
initKmindVue({ captureConsole: true });
const app = createApp(App);
app.use(router);
installKmindVue(app, router);
app.mount("#app");# .env
VITE_KMIND_APPLICATION_NAME=portal-cliente
VITE_KMIND_CLIENT_KEY=kmw_...Next.js
npm install kmind-apm-web-next
// app/kmind-provider.tsx
"use client";
import { useEffect } from "react";
import { initKmindNext, KmindNextNavigation } from "kmind-apm-web-next";
export function KmindProvider() {
useEffect(() => { initKmindNext({ captureConsole: true }); }, []);
return <KmindNextNavigation />;
}# .env.local
NEXT_PUBLIC_KMIND_APPLICATION_NAME=portal-cliente
NEXT_PUBLIC_KMIND_CLIENT_KEY=kmw_...Renderize o provider no layout do app. A inicializacao deve ocorrer somente no cliente, nunca durante SSR.
Configuracao avancada
init({
applicationName: "portal-cliente",
clientKey: "kmw_...",
endpoint: "https://ingest.kmind.com.br/v1",
statusEndpoint: "https://ingest.kmind.com.br/v1/apm/status",
sampleRate: 0.2,
slowTraceThresholdMs: 1200,
captureConsole: true,
propagateTraceTo: ["api.exemplo.com"],
privacy: {
redactAttributeKeys: ["email", "cpf", "authorization", "user.id"],
redactUrlQueryKeys: ["token", "session"],
},
scrub: (value, key) => key === "order.id" ? "[redacted]" : value,
});sampleRate: proporcao de traces normais enviados, entre0e1. Comece com0.2em sites muito acessados.slowTraceThresholdMs: traces lentos acima desse tempo sao preservados mesmo fora da amostra.privacyescrub: removem dados sensiveis antes de qualquer envio.enabled: false: desliga toda a coleta sem remover o codigo de integracao.
Por padrao, chaves como token, email, CPF, password, authorization e cookie sao mascaradas. Revise os atributos personalizados antes de enviar dados de usuarios.
Desempenho e confiabilidade
A biblioteca opera em modo best effort: falhas de telemetria nao interrompem fetch, XHR, navegacao ou o fluxo normal do site. Os eventos usam fila limitada, lotes de ate 20 itens e timeout de tres segundos. Sob pressao, a telemetria e descartada antes de disputar memoria ou conexoes com a aplicacao.
Nao inicialize o pacote mais de uma vez. Em SPAs, inicialize no bootstrap e deixe os wrappers registrarem as trocas de rota.
Troubleshooting
Status retorna 403 ou erro de CORS
Cadastre a origem exata no Console. https://app.exemplo.com, http://localhost:5173 e https://www.exemplo.com sao origens diferentes.
Metricas aparecem, mas logs ficam em zero
Use logger.info para um teste ou habilite captureConsole: true. A SDK nao envia automaticamente todos os console.log.
Nao ha trace entre frontend e API
Confirme que o host da API esta em propagateTraceTo, que o backend aceita traceparent e que a API tambem esta instrumentada.
A aplicacao nao aparece no Console
Confira a client key, o applicationName, a origem permitida e a resposta de /v1/apm/status. Depois gere navegacao ou uma chamada HTTP real.
Atualizar ou remover
npm install kmind-apm-web@latest
# React, Vue ou Next.js
npm install kmind-apm-web-react@latest
npm install kmind-apm-web-vue@latest
npm install kmind-apm-web-next@latest
# Remocao
npm uninstall kmind-apm-webPara remover completamente, elimine a chamada de init, wrappers e variaveis publicas do build antes de publicar uma nova versao do frontend.
