Personalização do 1.6.x Agente de criação de log para suportar a análise personalizada de várias linhas para aplicativos Node.js que usam o Winston em ambientes não orquestrados
Este tutorial demonstra como configurar o manuseio de registros de várias linhas do IBM® Cloud Logs Agente de criação de log para um aplicativo Node.js usando a biblioteca de registros personalizada da Winston. Essa configuração é para ambientes não orquestrados, por exemplo, Linux e Windows, e modifica o arquivo de configuração. Essa configuração garante que os rastreamentos de pilha e os registros de várias linhas sejam agrupados corretamente em IBM Cloud Logs.
Este tutorial requer a versão IBM Cloud Logs Agente de criação de log 1.6.2 ou posterior.
Antes de Iniciar
Antes de começar a usar este tutorial, revise as informações a seguir para entender os conceitos de Agente de criação de log e multilinha.
-
Saiba mais sobre o suporte a várias linhas em ambientes não orquestrados.
Este tutorial também pressupõe que você tenha:
-
Uma instância IBM Cloud Logs provisionada e configurada.
-
O Agente de criação de log foi implantado em um ambiente não orquestrado.
Os arquivos de configuração deste tutorial podem ser encontrados onde os arquivos do pacote foram baixados quando você instalou o Agente de criação de log.
Exemplo de configuração do Winston
Vamos supor que o seu aplicativo Node.js use o Winston e registre no console no seguinte formato:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp({
format: 'ddd MMM DD YYYY HH:mm:ss.SSS'
}),
winston.format.errors({ stack: true }),
winston.format.printf(({ timestamp, level, message, stack }) => {
const levelUpper = level.toUpperCase();
const baseLog = `[${timestamp}] ${levelUpper} [Main] - ${message}`;
if (stack) {
return `${baseLog}\n${stack}`;
}
return baseLog;
})
),
transports: [
new winston.transports.Console()
]
});
Esse formato produz entradas de registro que começam com um carimbo de data/hora e um nível, e os registros de várias linhas, como rastreamentos de pilha de erros, seguem nas linhas subsequentes sem carimbos de data/hora.
O Winston normalmente registra toda a saída, inclusive os rastreamentos de pilha de erros, como uma única cadeia de caracteres, portanto, um analisador de várias linhas geralmente não é necessário. No entanto, este exemplo demonstra o que fazer se o seu formatador imprimir logs de várias linhas e ajuda a ilustrar como abordar a análise de várias linhas para qualquer formato personalizado.
Essa configuração é fornecida como um exemplo para mostrar como lidar com registros de várias linhas ao usar a formatação de registro personalizada. Se o seu aplicativo usar uma estrutura ou biblioteca de registro diferente, use isso como referência para criar seu próprio analisador multilinha de acordo.
Configuração manual da análise de várias linhas usando um arquivo de configuração
Para agrupar adequadamente os registros, defina um analisador de várias linhas que reconheça o carimbo de data/hora no início de novas entradas de registro e trate as linhas subsequentes como continuações das entradas anteriores.
Definir o analisador de múltiplas linhas
Adicione o seguinte ao arquivo parsers.conf:
[MULTILINE_PARSER]
Name multiline-nodejs-winston
Type regex
Flush_timeout 500
Rule "start_state" "/^\\[[A-Z][a-z]{2} [A-Z][a-z]{2} \\d{2} \\d{4} \\d{2}:\\d{2}:\\d{2}\\.\\d{3}\\] .*$/"
Rule "cont" "/^(?!\\[[A-Z][a-z]{2} [A-Z][a-z]{2} \\d{2} \\d{4} \\d{2}:\\d{2}:\\d{2}\\.\\d{3}\\] ).*$/"
Esse analisador pressupõe que os registros começam com um registro de data e hora, como [Wed Jul 24 2025 14:52:31.456] .... Os rastreamentos de pilha são recuados nas linhas seguintes e não correspondem ao regex de registro de data
e hora, portanto, são agrupados com a linha de registro anterior.
Aplicar o analisador com um filtro de várias linhas
Adicione um bloco de filtro ao arquivo filters.conf para usar o analisador:
[FILTER]
Name multiline
Match kube.*
Multiline.key_content log
Multiline.parser multiline-nodejs-winston
Reinicie o agente
Após atualizar o mapa de configuração, reinicie o agente.
-
Linux Para ambientes Linux, execute:
systemctl daemon-reload && systemctl restart fluent-bit -
Windows Para ambientes Windows, execute:
sc.exe stop fluent-bit && sc.exe start fluent-bit
Verifique seus registros de várias linhas
Acesse sua instância IBM Cloud Logs e confirme se as entradas de várias linhas (por exemplo, rastreamentos de pilha) estão agrupadas corretamente.
-
Usando a visualização Registros
, verifique se as entradas de várias linhas estão agrupadas corretamente.
Os dados de registro agrupados são incluídos no campo
log.