Desenvolvimento de capacidade de monitoramento de aplicativo multilíngue sem servidor baseado em eBPF

Autor: Jing Xiao

Como uma capacidade básica de operação e manutenção e uma medida central de estabilidade, os recursos de monitoramento permitem que o pessoal de desenvolvimento e manutenção localize falhas com eficiência, evite riscos potenciais e analise tendências de longo prazo para planejamento de capacidade e ajuste de desempenho por meio do sistema de monitoramento. o ciclo de vida de desenvolvimento de software . Ao mesmo tempo, como a melhor prática e tendência de evolução futura da computação em nuvem, o Serverless é altamente respeitado na era nativa da nuvem por sua experiência de usuário totalmente gerenciada e livre de manutenção e vantagens de custo de pagamento conforme o uso. tornar-se um Os principais recursos fornecidos pelos fornecedores de nuvem. Com a crescente popularização do Serverless e maior cobertura de cenários, mais e mais usuários que usam PHP, Python, C/C++, Node.Js, Golang e outras linguagens começaram a atualizar a arquitetura Serverless.

Para esses usuários, as soluções tradicionais de monitoramento de aplicativos apresentam os seguintes pontos problemáticos:

●Alto custo de construção: Um conjunto completo de sistema de monitoramento precisa ser implantado, incluindo coleta de dados, transmissão de indicadores, armazenamento persistente, exibição visual, alarme e outros módulos, o que aumenta os custos adicionais de recursos e mão de obra. ● Compra de pontos e intrusão forte: É necessário avaliar os requisitos de índice de monitoramento de cada linguagem, cada estrutura e cada interface, e introduzir dependências de terceiros para pontos de enterramento manuais complicados. Embora para PHP, Python e outras linguagens, já exista uma tecnologia de substituição e aprimoramento de objeto (módulo) para obter a coleta de índices sem modificação, mas ainda há espaço para melhorias adicionais em termos de maturidade de capacidade, compatibilidade de estrutura e estabilidade operacional. ● Operação e manutenção complicadas: os usuários precisam garantir baixa latência, alta disponibilidade e precisão do indicador de todo o link de monitoramento e precisam comparar e analisar o impacto no desempenho do aplicativo original após a introdução do monitoramento de pontos ocultos e continuar a otimizar.

Os produtos sem servidor precisam fornecer um método unificado, pronto para uso, não invasivo e de modificação zero para implementar recursos de monitoramento de aplicativos em qualquer idioma, para que usuários multilíngues possam aproveitar totalmente os benefícios da tecnologia inclusiva trazida pelo Serverless. Abaixo, apresentamos primeiro a tecnologia eBPF (Extended Berkeley Packet Filter) por trás dele.

O nome completo do eBPF é Extended Berkeley Packet Filter, que começou no Linux 3.18 e é uma revolucionária tecnologia de kernel do Linux. O eBPF fornece uma capacidade geral para executar códigos específicos de forma eficiente, segura e não invasiva com base em eventos de sistema ou programa. Antes do nascimento do eBPF, devido ao isolamento entre o estado do usuário e o estado do sistema, os aplicativos não podiam processar diretamente os dados do kernel e, se o kernel for modificado diretamente, é bastante complicado e cada desenvolvimento ou depuração precisa ser recompilado, que é muito ineficiente e seguro.Também não há garantias.

Como uma máquina virtual em execução no kernel, o eBPF permite que os desenvolvedores enviem diretamente programas eBPF para executar funções específicas sem modificar o código do kernel. O programa eBPF é baseado em um modelo orientado a eventos. Quando o kernel é executado em um ponto de gancho específico, ele aciona a execução. Os pontos de gancho predefinidos incluem chamadas de sistema, entrada/saída de funções, pontos de rastreamento do kernel, eventos de rede, etc. Para pontos de gancho não existentes, KProbe e UProbe também podem ser usados ​​para enterrar pontos dinamicamente para fornecer recursos de rastreamento para funções de modo kernel e modo de usuário. Com pontos de gancho ricos, a tecnologia eBPF pode ser amplamente utilizada em muitos cenários, incluindo monitoramento de rede, filtragem de segurança e análise de desempenho.

O fluxo de trabalho do eBPF é mostrado na figura abaixo: Primeiro, compile o programa eBPF escrito em bytecode usando LLVM ou GCC no espaço do usuário e, em seguida, carregue-o no kernel com a ajuda da chamada de sistema bpf. A máquina virtual eBPF usará o verificador para verificar a segurança do bytecode, como apenas funções auxiliares auxiliares limitadas, número limitado de ciclos e tempo de execução, DAG para determinar se há código inacessível, etc., para evitar travamentos do kernel.

Após a verificação de segurança, o bytecode eBPF será compilado em código de máquina nativo por meio de um JIT (Just-In-Time Compiler), que fornece eficiência de execução próxima à do código nativo do kernel, e é montado em hook points específicos. A comunicação bidirecional é realizada entre o programa de modo de usuário e o programa eBPF através da estrutura de mapa eBPF da memória residente. Sempre que ocorre um evento específico, o programa eBPF pode passar as informações estatísticas coletadas para o aplicativo de modo de usuário superior por meio do mapa estrutura para posterior processamento de dados, processamento e análise.

O SAE (Serverless Application Engine), como a primeira plataforma PaaS sem servidor orientada a aplicativos do setor, é totalmente gerenciado e livre de operação e manutenção, e realiza aplicativos da Web únicos sem servidor, aplicativos de microsserviço e tarefas agendadas. Uma de suas principais vantagens é que os usuários podem implantar diretamente seus aplicativos/tarefas no SAE com baixa carga mental e custo de modificação zero. Atualmente no ecossistema JAVA, seja na implantação do pacote de código, no monitoramento da integração da cadeia de chamadas ou na migração da estrutura de agendamento distribuído, os usuários podem usá-lo sem alterar nenhuma lógica de negócios e dependências de versão.

Com base na tecnologia eBPF, o monitoramento de aplicativos SAE oferece suporte à coleta de indicadores de não intrusão e recursos de monitoramento de alarme para qualquer idioma e qualquer estrutura, e fornece três indicadores de ouro VERMELHO (número de solicitações, número de erros, tempo de resposta) e código de status HTTP, incluindo o aplicativo Estatísticas da dimensão /instance, bem como informações de chamada no nível da interface para serviços e serviços dependentes. Com a ajuda do painel visual integrado, o pessoal de desenvolvimento e manutenção pode avaliar o status atual do serviço externo do aplicativo e identificar efetivamente problemas como experiência do usuário, interrupção do serviço e anomalias nos negócios.

O recurso de monitoramento de aplicativos SAE tem as seguintes vantagens principais:

Livre de operação e manutenção: pronto para uso, entra em vigor imediatamente após a implantação e os usuários não precisam de componentes adicionais de operação, manutenção, monitoramento e alarme. ●Sem invasão de código: dados de monitoramento ricos podem ser obtidos sem qualquer incorporação de código e sem qualquer modificação de dependência. ●Independente de idioma: analisa o protocolo de rede através da camada de kernel, suporta qualquer idioma e qualquer estrutura. ● Cobertura multiprotocolo: Suporte ao monitoramento de indicadores e links para protocolos de rede como HTTP, MySQL, Redis, Kafka e DNS. Alto desempenho: Reduzindo a cópia de dados entre o modo kernel e o modo usuário, os dados do indicador podem ser obtidos com um consumo de desempenho extremamente baixo.

Em termos de implementação técnica, o SAE implementa o isolamento de vários locatários, implantando sondas eBPF na forma de sidecars e programas de negócios do usuário no mesmo contêiner seguro. O programa eBPF escutará as chamadas do sistema como aceitar/fechar/ler/escrever/enviar para/recvfrom, obter informações como endereços locais e remotos, contexto de encadeamento, descritor de arquivo fd e associar informações de instância de contêiner atual para gerar eventos originais. Em seguida, envie o conteúdo do evento original para o programa de modo de usuário. O programa de modo de usuário identifica o protocolo da camada de aplicativo, analisa os campos-chave do protocolo, corresponde à solicitação e resposta de um único link e processa os dados por meio de filtragem de eventos, convergência de dimensões, associação de metainformações, pré-agregação e outras etapas para gerar o indicador final. Finalmente, os indicadores de cobrança são periodicamente reportados à Arms Promethues para armazenamento persistente.

De frente para o futuro, a computação em nuvem será totalmente sem servidor, multilíngue e o suporte totalmente ecológico será o foco dos produtos sem servidor. A capacidade de monitoramento de aplicativos SAE também continuará a evoluir e melhorar. Atualmente, está totalmente lançada sem intrusão. Dimensão , recursos de monitoramento e alarme de indicadores de núcleo de aplicativo de alto desempenho, bem-vindo ao uso. Ao mesmo tempo, no RoadMap de acompanhamento, o SAE apresentará funções avançadas, como topologia de chamada global, dependências de upstream e downstream de serviço, detalhes de link de chamada, etc., para criar um sistema observável multilíngue sem servidor mais completo.

Para mais conteúdo, preste atenção à conta pública Serverless WeChat (ID: serverlessdevs), que reúne o conteúdo mais completo da tecnologia Serverless, realiza regularmente atividades Serverless, transmissões ao vivo e práticas recomendadas do usuário.

Acho que você gosta

Origin blog.csdn.net/weixin_42477427/article/details/128934394
Recomendado
Clasificación