Solar webProxy: A Evolução do 'Graf' - Substituindo o Grafana com Foco no Cliente

Solar webProxy: A Evolução do 'Graf' - Substituindo o Grafana com Foco no Cliente

A Solar webProxy detalha o desenvolvimento da segunda versão do seu componente de visualização de estatísticas, o 'Graf', substituindo o Grafana. A atualização foca em flexibilidade, performance e novas integrações, respondendo diretamente ao feedback dos clientes.

MundiX News·30 de junho de 2026·8 min de leitura·👁 1 views

Olá, Habr! Somos Alexander Saveliev, engenheiro de software, e Vladislav Bulygin, desenvolvedor sênior da GK "Solar". Juntamente com nossa equipe de desenvolvimento, trabalhamos no front-end e back-end do Solar webProxy. O Solar webProxy é uma solução Secure Web Gateway (SWG) que oferece filtragem de tráfego para HTTP/HTTPS, SOCKS5, FTP, WS/WSS, além de realizar tarefas de verificação de arquivos e arquivos compactados criptografados. O sistema SWG da "Solar" implementa um controle robusto de usuários, o que exige uma solução própria para a exibição de diversas estatísticas sobre os usuários – informalmente, chamamos essa ferramenta de "Graf" (um nome de trabalho, para ser sincero 😊).

Anteriormente, já publicamos um artigo sobre como e por que decidimos desenvolver nossa própria alternativa ao Grafana. Após o lançamento da primeira versão do Graf, coletamos feedback dos clientes e lançamos a segunda versão no Solar webProxy 4.4. O resultado mais notável da atualização é a exportação de relatórios em PDF, que agora é 22 vezes mais rápida. Mas isso não é tudo. Vamos detalhar como decidimos por essa atualização e como a segunda versão do componente Graf foi desenvolvida internamente.

O que os clientes disseram sobre a primeira versão do Graf?

Na versão webProxy 4.1, lançamos a primeira versão do nosso componente interno Graf, como substituto do Grafana, para exibir estatísticas no painel principal. Coletamos feedback dos clientes para aprimorar a experiência do usuário. Para os clientes, não bastava apenas ter um análogo do Grafana; eles buscavam uma ferramenta flexível, rápida e gerenciável. Todas as áreas de melhoria identificadas – customização de widgets, alteração de painéis com diferentes níveis de acesso, aumento de performance e ampliação do número de fontes de dados – foram incorporadas na segunda versão do componente.

Veja o que ouvimos dos clientes após o lançamento da primeira versão do Graf e o que mudou na segunda versão:

  • "Queremos decidir quais widgets ver e como organizá-los." Na versão 4.1 do Solar webProxy, havia apenas 2 widgets fixos no painel principal.

    • Mudança na versão 4.4: Grande quantidade de painéis, layout livre, arrastar e soltar e redimensionamento de widgets.
  • "Diferentes administradores precisam de acesso diferente aos dados." Na primeira versão, todos os usuários tinham o mesmo conjunto de painéis.

    • Mudança na versão 4.4: Modelo de acesso baseado em papéis e compartilhamento ("sharing") de painéis específicos entre usuários.
  • "Os dashboards carregavam mais lentamente do que o esperado." Todos os widgets enviavam uma requisição ao servidor, mesmo que não estivessem visíveis para o usuário.

    • Mudança na versão 4.4: Carregamento preguiçoso (lazy loading) via bloco Angular @defer – a requisição ao servidor só ocorre para os widgets que realmente aparecem na tela.
  • "Vocês não trabalham apenas com ClickHouse. Incluam integração adicional com outros sistemas." Para isso, era necessária a integração com REST e Zabbix.

    • Mudança na versão 4.4: Compatibilidade com REST e Zabbix como fontes de dados para os widgets.
  • Exportação para PDF (via Puppeteer, com screenshots da página) era lenta e frequentemente "quebrava" o layout.

    • Mudança na versão 4.4: Exportação via Node.js + pdfmake – 22 vezes mais rápida, de acordo com testes de carga internos.

Essas mudanças estabeleceram a base para a escalabilidade futura do componente Graf, responsável pela exibição de estatísticas. Para saber como a equipe redesenhou os widgets, implementou suporte para novas fontes de dados e combateu as requisições "cegas", continue lendo.

Descrição da Segunda Versão do Componente Graf para Exibição de Estatísticas

No Solar webProxy 4.4, redesenhamos completamente as seções "Painel", "Estatísticas" e "Monitoramento", eliminando a dependência do Grafana. Agora, na página principal do sistema, o usuário pode criar qualquer número de painéis. Cada um deles contém widgets de um conjunto disponível (ver Figura 3). Para adicionar um novo widget a um painel, basta selecionar a opção desejada na lista. A lista de widgets inclui seções temáticas como estatísticas (exibição de estatísticas de usuários em gráficos e tabelas), administração (informações detalhadas sobre o status do sistema), monitoramento (exibição de dados do Zabbix em gráficos), entre outras. Os widgets podem ser facilmente movidos, removidos e redimensionados.

Os administradores têm acesso à exportação de widgets individuais em CSV, XLS, SVG, e do painel inteiro em formato PDF. Agora, eles também podem configurar o acesso compartilhado a um painel com outros usuários. As seções "Estatísticas" e "Monitoramento" também foram migradas para o novo Graf. "Estatísticas" contém painéis pré-configurados com dados agregados sobre os usuários, enquanto "Monitoramento" exibe dados sobre o status e a carga nos nós do sistema provenientes do Zabbix.

Como Isso Funciona Tecnicamente?

A segunda versão do componente Graf é implementada em Angular no front-end e Scala no back-end. As configurações dos painéis são armazenadas no formato HOCON e transferidas para o front-end em formato JSON. O HOCON foi escolhido por ser mais conveniente para trabalhar, graças à sua formatação e capacidade de comentários. Um painel é composto por um identificador, nome, lista de widgets (panels), filtros (params) e permissões necessárias para sua operação. Por sua vez, widgets, filtros e colunas de tabelas são representados por arquivos individuais no mesmo formato HOCON, que são automaticamente inseridos no JSON gerado para o front-end.

Um widget pode ter seus próprios filtros (params). O administrador agora pode filtrar os dados exibidos em uma tabela ou gráfico de um widget: por exemplo, por um período específico, lista de usuários, protocolos de transferência de dados, etc. Um filtro dentro de um widget tem prioridade maior do que um filtro do painel. Qualquer filtro pode ser extraído de um widget para o painel e ter seu efeito aplicado a todos os widgets do espaço de trabalho. Esse esquema permite uma configuração de filtros extremamente flexível em um único painel. Na configuração, há também o parâmetro query.source, que descreve de onde os dados são obtidos – por exemplo, do ClickHouse ou de uma requisição REST. O parâmetro attr define as propriedades para a renderização no front-end: tamanho, coordenadas, etc.

Para a movimentação e redimensionamento de widgets, utilizamos a biblioteca GridStack, que se integra bem com Angular e oferece todas as funcionalidades necessárias "out-of-the-box". Para a renderização de gráficos, utilizamos a biblioteca D3.js, com a qual é possível desenhar qualquer gráfico vetorial em formato SVG. Toda a lógica de renderização foi isolada em uma biblioteca separada, utilizada tanto no front-end (aplicativo Angular) quanto no back-end (Node.js) – para exportação de widgets e painéis em PDF.

Após a criação da estrutura, cada widget solicita seus dados do back-end de forma independente e constrói o gráfico, a tabela ou outra estrutura, dependendo das configurações. Ele é encapsulado em um bloco @defer, que o carrega apenas quando ele aparece na tela do usuário. É assim que eliminamos as requisições "cegas": um widget não carregado não faz requisição de dados ao servidor, reduzindo a carga tanto no cliente quanto no servidor.

Agora, sobre a exportação em PDF. No Grafana, isso era feito com Puppeteer, que carregava a página com o serviço de exibição de estatísticas, tirava screenshots e os salvava em PDF. Isso era lento e frequentemente causava problemas de layout. Na nova versão do Graf, screenshots e navegadores não são mais necessários. Os gráficos são construídos pela mesma biblioteca D3.js utilizada no front-end, e o Node.js utiliza a biblioteca JSDOM para suportar a renderização de gráficos SVG. Ela emula a maior parte da API do navegador em modo headless. Como resultado, a reformatação dos painéis em PDF é realizada com a biblioteca pdfmake. Essa substituição resultou em uma aceleração de 22 vezes na exportação, de acordo com nossos testes de carga.

Primeiros Resultados da Implementação

O lançamento do Solar webProxy 4.4 com o novo Graf ocorreu no início de 2026. Os primeiros feedbacks dos clientes destacaram uma área para crescimento: muitos usuários estavam acostumados com a interface semelhante ao Grafana e nem sempre entendiam imediatamente como trabalhar com as novas estatísticas. A equipe do Solar webProxy planeja tornar a transição mais suave nas próximas versões. Uma das opções é adicionar um "Product Onboarding" em uma das próximas versões, ou seja, uma introdução gradual e educativa à interface e dicas interativas.

Conclusão

A segunda versão do Graf é uma resposta às demandas específicas dos clientes: painéis flexíveis, controle de acesso, carregamento preguiçoso de widgets, integração com novas fontes de dados e exportação em PDF, que se tornou 22 vezes mais rápida. Esperamos que a segunda versão do Graf seja útil para todos os nossos clientes que precisam obter informações sobre o funcionamento do sistema em tempo real. Planejamos adicionar novos tipos de gráficos e continuar aprimorando a experiência do usuário no futuro.

🛡️⚡

Pare de pesquisar. Comece a hackear.

O MundiX é seu copiloto de pentest com IA: comandos exatos, análise de outputs e próximo passo na kill chain — em segundos.

Testar grátis por 7 dias →

Sem cartão para começar · Planos a partir de R$49/mês

📤 Compartilhar & Baixar

🧰 Ferramentas recomendadas

Divulgação: alguns links são patrocinados. Podemos receber comissão se você comprar — sem custo extra para você. Só indicamos o que faz sentido para a comunidade.

Aprendendo Kali Linux: Teste de segurança, pentest e hacking ético

Aprendendo Kali Linux: Teste de segurança, pentest e hacking ético

Com centenas de ferramentas pré-instaladas, a distribuição Kali Linux facilita o trabalho de os profissionais de segurança começarem a fazer testes de segurança rapidamente. No entanto, com mais de 600 ferramentas em seu arsenal, o Kali Linux também pode ser desafiador. A nova edição deste prático livro abrange as atualizações nas ferramentas e inclui uma melhor abordagem da análise forense e da engenharia reversa. Ric Messier, autor, não fica apenas no teste de segurança, mas também faz uma abordagem sobre a execução de análise forense, incluindo a análise em disco e na memória, assim como alguma análise básica de malware. • Explore as diversas ferramentas disponíveis no Kali Linux • Entenda o valor do teste de segurança e examine os tipos de teste disponíveis • Aprenda os aspectos básicos do pentest em todo o ciclo de vida do ataque • Instale o Kali Linux em vários sistemas, tanto físicos quanto virtuais • Descubra como usar diferentes ferramentas destinadas à segurança • Estruture um teste de segurança baseado nas ferramentas do Kali Linux • Estenda as ferramentas do Kali para criar técnicas de ataque avançadas • Use o Kali Linux para ajudar a criar relatórios quando o teste terminar “A abordagem concisa, clara e baseada na experiência adotada por Ric Messier para a introdução do Kali Linux e dos testes de cibersegurança é incomparável. Este livro é uma leitura excelente e acessível para iniciantes e um recurso valioso para qualquer pessoa.” —Alexander Arlt, Consultor sênior de segurança, Google

Ver na Amazon
Gshield 2 em 1 Hub Extensor Conector USB-C + USB-A e Adaptador de Rede Ethernet LAN RJ45 com 3 Entradas USB 3.0 até 5 Gbps em Liga de Alumínio para Computador e Notebook, Cinza

Gshield 2 em 1 Hub Extensor Conector USB-C + USB-A e Adaptador de Rede Ethernet LAN RJ45 com 3 Entradas USB 3.0 até 5 Gbps em Liga de Alumínio para Computador e Notebook, Cinza

Compatível com portas USB-C e USB-A, ideal para ampliar a conectividade de dispositivos como MacBook Pro e outros com portas USB-C. Inclui um adaptador USB-A extra, proporcionando uma conexão Ethernet estável e veloz de até 1 Gbps, perfeita para filmes, jogos online e videoconferências. Oferece três portas USB 3.0 com velocidades de transferência de até 5 Gbps, permitindo conectar mouse, teclado, discos rígidos e outros periféricos. Fabricado em alumínio durável, garantindo longa vida útil e resistência ao uso diário. Design compacto e leve, ideal para viagens de negócios e uso diário, facilitando o transporte e armazenamento. Funciona com Windows 10/8.1/8, Mac OS e Chrome OS, oferecendo versatilidade incomparável para diversas necessidades de conectividade. Assegura uma conectividade estável e rápida, perfeita para tarefas exigentes como transferência de dados, streaming e mais.

Ver na Amazon
Hacking APIs: Breaking Web Application Programming Interfaces

Hacking APIs: Breaking Web Application Programming Interfaces

Hacking APIs is a crash course on web API security testing that will prepare you to penetration-test APIs, reap high rewards on bug bounty programs, and make your own APIs more secure. You'll learn how REST and GraphQL APIs work in the wild and set up a streamlined API testing lab with Burp Suite and Postman. Then you'll master tools useful for reconnaissance, endpoint analysis, and fuzzing, such as Kiterunner and OWASP Amass. Next, you'll learn to perform common attacks, like those targeting an API's authentication mechanisms and the injection vulnerabilities commonly found in web applications. You'll also learn techniques for bypassing protections against these attacks. In the book's nine guided labs, which target intentionally vulnerable APIs, you'll practice: Enumerating APIs users and endpoints using fuzzing techniques Using Postman to discover an excessive data exposure vulnerability Performing a JSON Web Token attack against an API authentication process Combining multiple API attack techniques to perform a NoSQL injection Attacking a GraphQL API to uncover a broken object level authorization vulnerability

Ver oferta
Gray Hat Hacking: The Ethical Hacker's Handbook, Sixth Edition

Gray Hat Hacking: The Ethical Hacker's Handbook, Sixth Edition

Up-to-date strategies for thwarting the latest, most insidious network attacks This fully updated, industry-standard security resource shows, step by step, how to fortify computer networks by learning and applying effective ethical hacking techniques. Based on curricula developed by the authors at major security conferences and colleges, the book features actionable planning and analysis methods as well as practical steps for identifying and combating both targeted and opportunistic attacks. Gray Hat Hacking: The Ethical Hacker's Handbook, Sixth Edition clearly explains the enemy's devious weapons, skills, and tactics and offers field-tested remedies, case studies, and testing labs. You will get complete coverage of Internet of Things, mobile, and Cloud security along with penetration testing, malware analysis, and reverse engineering techniques. State-of-the-art malware, ransomware, and system exploits are thoroughly explained. Fully revised content includes 7 new chapters covering the latest threats Includes proof-of-concept code stored on the GitHub repository Authors train attendees at major security conferences, including RSA, Black Hat, Defcon, and B-Sides

Ver na Amazon
Bloqueador USB de privacidade de porta USB para PC, notebook, bloco de laptop,

Bloqueador USB de privacidade de porta USB para PC, notebook, bloco de laptop,

Proteção de privacidade aprimorada: protege o link de transmissão de dados para evitar roubo de informações, fornecendo proteção de segurança robusta que protege a privacidade do usuário durante transferências de arquivos e garante uma conexão segura para interações de dispositivos sem preocupações em vários ambientes Uso a longo prazo: a camada protetora resistente ao desgaste, combinada com um corpo de metal resistente, oferece gerenciamento de calor confiável e qualidade duradoura durante o uso diário Entrega eficiente de energia: a tecnologia de chip inteligente garante a identificação automática dos requisitos de energia, fornecendo carregamento eficiente alinhando-se com vários protocolos de carregamento rápido para maior conveniência Proteção contra sobrecarga: evitando riscos de sobrecarga, este bloqueador de dados USB protege a vida útil da bateria e garante um desempenho estável, mantendo um fluxo estável de energia para melhorar a longevidade do dispositivo de forma eficaz Prático de transportar: com atenção à portabilidade, este bloqueador de dados USB oferece um design compacto que é leve e fácil de transportar, melhorando a conveniência do usuário e operação eficiente

Ver na Amazon

📩 Newsletter MundiX

Receba novidades de cibersegurança + um checklist de pentest grátis. Sem spam.

Ao assinar você concorda em receber e-mails. Cancele quando quiser.