Quando se trata de monitoramento atual, o Prometheus é sem dúvida o projeto mais popular. Se você monitora apenas máquinas e dispositivos de rede, o Zabbix ainda pode competir. Se você deseja monitorar não apenas dispositivos, mas também aplicações, Kubernetes e outras infraestruturas, o Prometheus é o melhor. escolha. Existem até alguns projetos de código aberto que possuem suporte integrado para exposição de indicadores do protocolo Prometheus, como novas versões do Zookeeper, novas versões do RabbitMQ, Nginx vts, etc. A influência de Prometeu é evidente.
A palavra Prometheus mencionada em muitos cenários, na verdade, não é apenas o projeto Prometheus em si, mas o ecossistema Prometheus, incluindo os formatos de indicadores, protocolos de transmissão, linguagens de consulta, vários coletores exportadores, vários armazenamentos compatíveis definidos pelo Prometheus, etc.
No ecossistema Prometheus, vários exportadores podem ser usados para coleta, VictoriaMetrics pode ser usado para armazenamento e Grafana pode ser usado para visualizar imagens. Parece ser muito completo. Por que existe outro projeto de código aberto chamado "Nightingale" que afirma ser. estar em parceria com Prometheus Seamless? Este artigo tenta explorar um ou dois.
Introdução ao Rouxinol
Um trecho da introdução do projeto Nightingale no site oficial do Nightingale:
Nightingale Monitor é uma ferramenta de observação e análise nativa da nuvem de código aberto que adota o conceito de design All-in-One. Ele integra coleta de dados, visualização, monitoramento e alarme, e análise de dados. fornece às empresas funcionalidades prontas para uso de monitoramento, análise e alarme. Nightingale lançou a versão v1 no github em 20 de março de 2020 e acumulou mais de 100 versões.
Nightingale foi originalmente desenvolvido e de código aberto por Didi, e foi doado ao Comitê de Desenvolvimento de Código Aberto da Federação de Computação da China (CCF ODC) em 11 de maio de 2022, tornando-se o primeiro projeto de código aberto a receber doações após o estabelecimento do CCF ODC. A equipe principal de P&D de Nightingale também é a equipe original de P&D do projeto Open-Falcon. Contando desde 2014 (Open-Falcon foi aberto em 2014), já se passaram 10 anos, apenas para fazer um bom trabalho de monitoramento.
- Código de back-end: https://github.com/ccfos/nightingale
- Código front-end: https://github.com/n9e/fe
Depois de ler a introdução do projeto, só posso saber que Nightingale é um sistema de monitoramento. Quais são as diferenças entre ele e o Prometheus? Não se preocupe, vamos primeiro dar uma olhada no problema do Prometheus.
Problema de Prometeu
A coleta, armazenamento e visualização de imagens do Prometheus foram muito bem resolvidas. É apenas um alarme. Para algumas empresas, pode ter os seguintes pontos problemáticos:
- Uma empresa possui muitos conjuntos de Prometheus e as regras estão espalhadas em vários yamls, o que é inconveniente de gerenciar.
- Espero ter uma interface de usuário fácil de usar e com permissão isolada, que abra recursos de monitoramento para todas as equipes da empresa e permita que elas se sirvam por conta própria.
- Usar diretamente o Promql para consultar dados e configurar regras de alarme é um pouco exigente. Algumas bibliotecas de regras e instruções de consulta podem ser incorporadas para que o conhecimento possa ser acumulado e os usuários comuns possam usá-lo imediatamente?
- Espera-se que as regras de alarme possam ser mais flexíveis, como apoiar diferentes regras com diferentes tempos efetivos e fornecer alguns mecanismos integrados de autocura de alarme, etc.
Foi para isso que Nightingale foi feito. Na verdade, a versão antiga do Nightingale era independente e derivada do Open-Falcon. No entanto, à medida que o Prometheus se tornou popular, o Nightingale começou a abraçar o ecossistema do Prometheus. Nightingale pode ser considerado um mecanismo de alarme para dados de séries temporais . Claro, Nightingale também oferece a capacidade de visualizar gráficos e painéis, e pode até visualizar dados do Elasticsearch, Loki e TDEngine. No entanto, a situação atual é que os recursos de alarme do Nightingale são mais usados por todos, e a maioria dos painéis ainda usa Grafana. A arquitetura típica usada por Nightingale é a seguinte:
Nightingale pode substituir completamente Prometheus?
Na verdade, não se trata de uma relação de substituição, mas sim de uma relação sinérgica. Na opinião de Nightingale, o Prometheus é usado principalmente como uma biblioteca de temporização. Além do Prometheus, você também pode escolher outras bibliotecas de temporização, como VictoriaMetrics, Thanos, M3DB e TDEngine. Nightingale é usado apenas como mecanismo de alarme para uma biblioteca de série temporal. Ele pode ser conectado ao Prometheus ou outras bibliotecas de série temporal. Os usuários podem gerenciar regras de alarme uniformemente no Nightingale, fazer julgamentos sobre dados anormais, gerar eventos de alarme e fazer notificações de distribuição subsequentes. . Autocorreção de alarme e outras lógicas.
Além disso, se você tiver várias salas de computadores, as bibliotecas de temporização estão espalhadas em várias salas de computadores e a rede entre as salas de computadores não é boa, e você deseja que a sala de computadores de borda seja autônoma sem afetar os alarmes, mesmo que a rede esteja fragmentada , Nightingale também é muito adequado. Nesse caso, Nightingale o chama de modo de implantação da sala de computadores de ponta. A biblioteca de temporização e o mecanismo de alarme são implantados para baixo. Não importa se a rede está desconectada. Quando a rede está boa, os dados podem ser visualizados uniformemente no centro. e as regras de alarme podem ser gerenciadas uniformemente. O diagrama de arquitetura é o seguinte:
No exemplo acima, a arquitetura de implantação de três salas de computadores é demonstrada. O link de rede entre a sala de computadores A e a sala de computadores central é muito bom, mas o link de rede entre a sala de computadores B e a sala de computadores central não é muito bom. a sala de informática possui uma biblioteca de cronometragem. Portanto, o mecanismo de alarme Nightingale na sala de computadores central processa diretamente as bibliotecas de temporização da sala de computadores central e da sala de computadores A. A biblioteca de temporização da sala de computadores B é processada pelo mecanismo de alarme da sala de computadores B, ou seja, n9e-edge na figura, o n9e-edge será processado a partir do Nightingale na sala de computadores central. Sincronize as regras de alarme e, em seguida, faça julgamentos de alarme na biblioteca de temporização da sala de computadores local.
Desta forma, mesmo que a rede entre a sala de computadores B e a sala de computadores central seja separada, porque as regras de alarme foram sincronizadas na memória n9e-edge, o mecanismo de alarme da sala de computadores B ainda pode processar o trabalho de determinação de alarme do duas bibliotecas de cronometragem da sala de informática B normalmente. Melhorou a alta disponibilidade geral do sistema de monitoramento.
Que cena usa Nightingale em vez de Prometheus?
A chave depende de quais são seus pontos fracos. Se você usar um único ponto do Prometheus nesta fase, seu problema poderá ser muito bem resolvido. Não há necessidade de alterá-lo. Em nenhuma empresa, a migração de ferramentas técnicas encontrará diversas resistências.
Se você tiver problemas no gerenciamento de regras de alarme e alta disponibilidade de alarmes em salas de computadores de ponta, experimente o Nightingale. Qualquer ferramenta tem suas vantagens e desvantagens, escolha de acordo com o cenário.
O Nightingale pode receber alarmes de vários sistemas de monitoramento e fornecer notificação unificada de eventos?
Alguns amigos viram que Nightingale pode se conectar a várias bibliotecas de temporização, fazer julgamentos de alarmes, gerar eventos de alarme e distribuí-los, e pensaram: os alarmes gerados por meus outros sistemas de monitoramento também podem ser enviados por Nightingale? Desta forma, questões como modelos de notificação de alarme, contatos, permissões de login de autenticação, etc. podem ser gerenciadas de maneira uniforme.
Na verdade, isso não é possível. Este é um requisito típico de evento OnCall. Ele coleta alarmes de vários sistemas de monitoramento (como Prometheus, Zabbix, Open-Falcon, Blue Whale, vários monitoramentos de nuvem, ElastAlert, etc.) e realiza convergência de alarme unificada e redução de ruído, agendamento, reivindicação e atualização, distribuição flexível com base nas condições, etc. Se você quiser fazer isso bem, vale a pena usar um produto separado. Vamos chamar este produto de produto OnCall. A relação entre o produto OnCall e cada sistema de monitoramento é:
Ou seja: o sistema de monitoramento (incluindo diversos tipos de monitoramento em nuvem) tem como foco solucionar os problemas de coleta de dados, armazenamento, análise visual e determinação de alarmes, sendo responsável por gerar eventos de alarme. Central OnCall para processamento, sendo a central OnCall responsável pela convergência e redução de ruído, supressão e blindagem, filtragem e distribuição de eventos de alarme e muitos outros assuntos.
Bons produtos OnCall são produtos comerciais, como PagerDuty, FlashDuty, Opsgenie, etc. Você mesmo pode pesquisá-los no Google para encontrar o que precisa.
Que funções mais interessantes Nightingale tem do que Prometheus?
Aqui pegarei alguns diagramas de sistema e darei uma breve introdução.
Nightingale não coleta dados e pode ser conectado a vários coletores do mercado. Entre eles, a conexão entre o coletor categraf e Nightingale é a mais suave. Se você usar a categoriaf como coletor, poderá coletar diversas metainformações da máquina e. construir uma camada de máquina leve.
Nightingale possui recursos integrados de autocura de alarme, ou seja, quando ocorre um alarme, ele pode executar automaticamente um script na máquina de alarme. Você pode escrever alguma lógica de reparo automatizado no script.
Nightingale tem uma visualização de indicador integrada, que será lançada na versão v7 beta3. Ele também fornecerá muitos promql integrados comumente usados, basta clicar para consultar e será extremamente amigável para usuários novatos.
resumo
Já temos Prometheus, por que precisamos de Nightingale? Este artigo é uma resposta exploratória a esta pergunta. Espero que isso ajude, obrigado a todos pela leitura.
Estudantes do ensino médio criam sua própria linguagem de programação de código aberto como uma cerimônia de maioridade - comentários contundentes de internautas: Contando com a defesa, a Apple lançou o chip M4 RustDesk Os serviços domésticos foram suspensos devido a fraude desenfreada. No futuro, ele planeja produzir um jogo independente na plataforma Windows Taobao (taobao.com) Reiniciar o trabalho de otimização da versão web, destino dos programadores, Visual Studio Code 1.89 lança Java 17, a versão Java LTS mais comumente usada, Windows 10 tem um participação de mercado de 70%, o Windows 11 continua diminuindo Open Source Daily | Google apoia Hongmeng para assumir o controle do Rabbit R1 de código aberto; a ansiedade e as ambições da Microsoft encerraram a plataforma aberta;