Use logs para monitorar aplicativos

De acordo com a posição onde são executadas as regras de extração, existem dois tipos de práticas, uma na lateral central e outra na lateral da tora.

A extremidade central é transmitir os logs de todas as máquinas a serem processadas para o centro central, como por meio da transmissão Kafka, e finalmente cair para o Elasticsearch.As regras de extração de índice podem ser inseridas no canal Kafka como uma tarefa de computação de fluxo, e o desempenho e o desempenho em tempo real são relativamente melhores. Ou escreva diretamente uma tarefa agendada, chame a interface do Elasticsearch para consultar o log e, ao mesmo tempo, forneça a função de cálculo de agregação, deixe o Elasticsearch retornar os dados do indicador e, em seguida, gravá-los na biblioteca de tempo. ser pobre, mas é basicamente suficiente.

O processamento do lado do log significa que as regras de extração são executadas diretamente na máquina que gera o log, lêem o log em fluxo e correspondem à expressão regular. Para o log de ocorrências, às vezes é valioso extrair a parte numérica dele como um indicador, ou não extrair nenhum número, e apenas contar o número de linhas do log de ocorrências. Por exemplo, contar o número de ocorrências do Erro ou Exceção palavra-chave e conhecemos o sistema. É um erro?

Existem muitas soluções de código aberto para o método de processamento de terminal de log, as mais famosas são mtail e grok_exporter.

Ferramentas como mtail e grok_exporter são como executar tail -f em um arquivo de log, e então cada vez que um log for recebido, ele corresponderá a uma expressão regular predefinida. Se a correspondência for bem-sucedida, algumas ações serão executadas, caso contrário, pule a espera por o próximo registro.

 Para a implantação do mtail, se houver 5 aplicações em uma máquina que precise usar mtail para extrair indicadores, e os formatos de log de cada aplicação forem diferentes, recomenda-se iniciar 5 processos mtail para processá-los separadamente. Embora seja difícil de gerenciar, o desempenho é bom e não há influência mútua.

Se você colocar todas as regras de extração em um diretório e, em seguida, especificar os caminhos de log desses vários aplicativos ao mesmo tempo por meio do parâmetro -logs várias vezes, um processo mtail também poderá lidar com isso, mas para cada linha de logs, mtail irá siga todas as regras de extração É um desperdício de desempenho executá-las todas de uma vez, e a velocidade da extração regular não é rápida. Além disso, alguns indicadores podem ser reutilizados por todas as aplicações. Se forem processados ​​em conjunto, interferirão facilmente entre si, resultando em dados estatísticos imprecisos. Destes dois pontos de vista, tente desmontá-los e tratá-los separadamente, embora seja mais difícil de administrar, vale a pena.

Não existe esse problema no cenário de contêiner. O cenário de contêiner pode ser implantado diretamente usando o sidecar. Cada pod deve ter apenas um aplicativo, e o mtail associado só pode se concentrar no processamento dos logs desse aplicativo.

Existem várias formas de extrair indicadores, de modo geral, existem dois tipos: o terminal central e o terminal de log.Como os métodos de processamento do terminal central são mais comuns em software comercial, nenhuma solução de código aberto foi vista. A lógica de processamento principal do lado do log é a mesma. O conteúdo do log é lido continuamente por meio de um método semelhante a tail -f e, em seguida, a correspondência regular é executada em cada linha do log. Como o formato do log não é fixo, é difícil ter um método de processamento estruturado, então todas essas ferramentas optam por usar métodos regulares para extrair indicadores de filtro.

 Este artigo é uma nota de estudo para o dia 13 de agosto. O conteúdo vem do Geek Time "Notas práticas do sistema de monitoramento de operação e manutenção". Este curso é recomendado.

Acho que você gosta

Origin blog.csdn.net/key_3_feng/article/details/132258082
Recomendado
Clasificación