BR112020019153A2 - Sistema e método para processamento de estado de processo - Google Patents
Sistema e método para processamento de estado de processo Download PDFInfo
- Publication number
- BR112020019153A2 BR112020019153A2 BR112020019153-1A BR112020019153A BR112020019153A2 BR 112020019153 A2 BR112020019153 A2 BR 112020019153A2 BR 112020019153 A BR112020019153 A BR 112020019153A BR 112020019153 A2 BR112020019153 A2 BR 112020019153A2
- Authority
- BR
- Brazil
- Prior art keywords
- information
- fact
- computing device
- event information
- event
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1048—Scalability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/16—General purpose computing application
- G06F2212/163—Server or database system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
a presente invenção se refere a estados de processo de dispositivos de computação que podem ser obtidos e processados. informações de evento de processo de um dispositivo de computação podem ser obtidas. as informações de evento de processo podem caracterizar estados de processos do dispositivo de computação. as informações do evento do processo podem ser armazenadas em uma fila. as informações do gráfico podem ser determinadas com base nas informações do evento do processo dentro da fila. as informações do gráfico podem caracterizar estados de processos do dispositivo de computação usando nós e bordas. as informações do gráfico podem ser armazenadas em um banco de dados de gráficos.
Description
[001] Este pedido reivindica o benefício do Pedido não Provisório US № 15 /
927.516, depositado em 21 de março de 2018, e intitulado "SISTEMA E MÉTODO PARA PROCESSAMENTO DE ESTADO DE PROCESSO", que é uma continuação do Pedido de Patente não Provisório US № 15 / 927.104, depositado em 21 de março de 2018, e intitulado “COLETOR DE ESTADO DE PROCESSO DE TERMINAL”, cujas descrições estão inteiramente incorporadas ao presente por referência.
[002] A divulgação se refere geralmente à coleta e processamento de estados de processo de dispositivos de computação.
[003] As Informações sobre os estados dos processos em execução em um dispositivo de computação podem fornecer informações sobre as operações do dispositivo de computação. Por exemplo, informações sobre mudanças de estado de processos podem fornecer informações sobre mudanças nas operações do dispositivo de computação. É desejável fornecer rastreamento completo de estados de processos em execução em dispositivos de computação.
[004] Um aspecto da presente divulgação é direcionado a um método para processar estados de processo. O método pode compreender: obter informações de evento de processo de um dispositivo de computação, as informações de evento de processo caracterizando estados de processos do dispositivo de computação; armazenar as informações do evento do processo em uma fila; determinar informações de gráfico com base nas informações de evento de processo dentro da fila, as informações de gráfico que caracterizam estados de processos do dispositivo de computação usando nós e bordas; e armazenar as informações do gráfico em um banco de dados de gráficos.
[005] Outro aspecto da presente divulgação é direcionado a um sistema para processar estados de processo. O sistema pode compreender um ou mais processadores e instruções de armazenamento de memória. As instruções, quando executadas por um ou mais processadores, podem fazer com que o sistema execute: obtenção de informações de evento de processo de um dispositivo de computação, as informações de evento de processo caracterizando estados de processos do dispositivo de computação; armazenar as informações do evento do processo em uma fila; determinar informações de gráfico com base nas informações de evento de processo dentro da fila, as informações de gráfico que caracterizam estados de processos do dispositivo de computação usando nós e bordas; e armazenar as informações do gráfico em um banco de dados de gráficos.
[006] Em algumas modalidades, as informações de evento de processo podem ser obtidas a partir de um agente coletor de estado de processo em execução no dispositivo de computação.
[007] Em algumas modalidades, as informações do evento de processo podem ser obtidas e armazenadas na fila por um servidor receptor de eventos do sistema.
[008] Em algumas modalidades, a fila pode ser um armazenamento em buffer distribuído.
[009] Em algumas modalidades, as informações do gráfico podem ser determinadas por um processador de fluxo do sistema e o processador de fluxo pode ser, para determinar as informações do gráfico, configurado para identificar e ordenar eventos de processo com base nas informações de evento de processo dentro da fila.
[010] Em algumas modalidades, o processador de fluxo pode usar informações de evento de processo obtidas em momentos diferentes para identificar eventos de início de processo ausentes ou eventos de encerramento de processo ausentes.
[011] Em algumas modalidades, as informações do gráfico podem incluir relações pai-filho e propriedades dos processos do dispositivo de computação.
[012] Em algumas modalidades, as informações do gráfico podem ser armazenadas no banco de dados do gráfico usando uma estrutura de banco de dados de valor-chave.
[013] Em algumas modalidades, pode ser obtida uma consulta a respeito de um determinado processo do dispositivo de computação. Uma resposta à consulta pode ser determinada com base nas informações do gráfico no banco de dados do gráfico. A consulta pode ser obtida e respondida por um servidor de consulta do sistema.
[014] Em algumas modalidades, o servidor de consulta pode fornecer um conjunto de interfaces de programação de aplicativo para obter e responder à consulta. O conjunto de interfaces de programação de aplicativo pode incluir uma interface de programação de aplicativo de chamada única, uma interface de programação de aplicativo iterativa e uma interface de programação de aplicativo de processamento em lote.
[015] Estas e outras características dos sistemas, métodos e mídia legível por computador não transitória divulgados neste documento, bem como os métodos de operação e funções dos elementos de estrutura relacionados e a combinação de partes e economias de fabricação, tornar-se-ão mais evidentes após a consideração da descrição que se segue e das reivindicações anexas com referência aos desenhos anexos, todos os quais fazem parte deste relatório, em que números de referência semelhantes designam partes correspondentes nas várias figuras. Deve ser expressamente entendido, no entanto, que os desenhos são apenas para fins de ilustração e descrição e não pretendem ser uma definição dos limites da invenção.
Deve ser entendido que a descrição geral anterior e a descrição detalhada que se segue são apenas exemplificativas e explicativas e não são restritivas da invenção, conforme reivindicado.
[016] As modalidades preferenciais e não limitativas da invenção podem ser mais facilmente compreendidas com referência aos desenhos anexos, nos quais:
[017] A Figura 1 ilustra um ambiente de exemplo para coletar e processar estados de processo, de acordo com várias modalidades da divulgação.
[018] A Figura 2 ilustra observações de exemplo de estados de processo, coletas de resíduos de exemplo e varreduras de processo de exemplo, de acordo com várias modalidades da divulgação.
[019] A Figura 3 ilustra um diagrama de fluxo de exemplo para processamento de estados de processo, de acordo com várias modalidades da divulgação.
[020] A Figura 4 ilustra um diagrama de exemplo de recebimento e resposta a consultas a respeito de um processo, de acordo com várias modalidades da divulgação.
[021] A Figura 5 ilustra fluxogramas de métodos de exemplo, de acordo com várias modalidades da divulgação.
[022] A Figuras 6 ilustra um diagrama em blocos de um sistema de computador de exemplo no qual qualquer uma das modalidades aqui descritas pode ser implementada.
[023] Serão agora descritas as modalidades específicas e não limitativas da presente invenção com referência aos desenhos. Deve ser entendido que características e aspectos particulares de quaisquer modalidades aqui divulgadas podem ser usados e / ou combinados com características e aspectos particulares de qualquer outra modalidade aqui divulgada. Também deve ser entendido que tais modalidades são a título de exemplo e são meramente ilustrativas de um pequeno número de modalidades dentro do escopo da presente invenção. Várias alterações e modificações óbvias para aquele versado na técnica à qual pertence a presente invenção são consideradas como estando dentro do espírito, escopo e contemplação da presente invenção conforme definido adicionalmente nas reivindicações anexas.
[024] A Figura 1 ilustra um ambiente de exemplo 100 para coletar e processar estados de processo, de acordo com várias modalidades. O ambiente de exemplo pode incluir agentes 102, 104, 106, um receptor de evento 108, uma fila 110, um processador de fluxo 112, um banco de dados gráfico 114 e um servidor de consulta 116. Um ou mais dos componentes individuais mostrados no ambiente 100 pode incluir, ter acesso a e / ou estar associado a um ou mais processadores e memória. O (s) processador (es) podem ser configurados para realizar várias operações interpretando instruções legíveis por máquina armazenadas na memória.
Por exemplo, os agentes 102, 104, 106 podem representar agentes de software individuais em execução em dispositivos de computação individuais, como desktop, laptop, smartphone, tablet, dispositivos móveis e / ou outros dispositivos / sistemas eletrônicos. Um ou mais desses dispositivos de computação podem ser terminais em uma rede. Um ou mais do receptor de evento 108, os processadores de fluxo 112 e / ou o servidor de consulta 116 podem estar localizados dentro de um ou mais dispositivos de computação dentro da rede, como um ou mais servidores dentro da rede. São contemplados outros números de agentes, estruturas e distribuição de componentes do ambiente 100 dentro de um ou mais dispositivos de computação.
[025] Os agentes 102, 104, 106 podem observar e registrar informações relacionadas a processos, como eventos de processo, em execução nos dispositivos de computação individuais. Os agentes 102, 104, 106 podem rastrear alguns ou todos os processos em execução nos dispositivos de computação. Os agentes 102, 104, 106 podem rastrear processos específicos em execução nos dispositivos de computação. Os agentes 102, 104, 106 podem coletar e fornecer informações relacionadas aos processos em execução nos dispositivos de computação individuais para outros componentes dentro do ambiente 100.
[026] Por exemplo, os agentes 102, 104, 106 podem estar em execução em terminais dentro de uma rede para coletar e fornecer informações relacionadas aos estados de processo dos terminais para outro (s) dispositivo (s) de computação dentro da rede. Os agentes 102, 104, 106 podem ser referidos como coletores de estado de processo de terminal. O (s) dispositivo (s) de computação (por exemplo, servidor (es), um ou mais dos receptores de evento 108, os processadores de fluxo 112 e / ou o servidor de consulta 116) que recebem e / ou usam as informações relacionadas aos estados de processo dos coletores de estado de processo de terminal podem ser referidos como um intérprete de gráfico de processo dinâmico. O intérprete de gráfico de processo dinâmico pode interpretar eventos de processo nos terminais para gerar e manter gráficos de processo dos terminais. Esse gráfico de processo pode ser referido como um gráfico de processo de terminal. Um gráfico de processo de terminal pode definir informações de linhagem / herança (por exemplo, relacionamento pai-filho) para processos em execução em um terminal.
[027] Os agentes 102, 104, 106 podem atuar com um determinado grau de autonomia para coletar e fornecer informações relacionadas aos processos em execução nos dispositivos de computação. Os agentes 102, 104, 106 podem ser autônomos e / ou trabalhar com outros agentes / programas de software. Os agentes 102, 104, 106 podem não exigir qualquer interação de usuários de dispositivos de computação nos quais os agentes 102, 104, 106 residem para executar suas funções. Os agentes 102, 104, 106 podem invocar uma ou mais tarefas nos dispositivos de computação para coletar e fornecer informações relacionadas aos processos em execução nos dispositivos de computação.
[028] Por exemplo, o agente A-1 102 pode coletar informações relacionadas às relações pai-filho de processos em execução no dispositivo de computação no qual o agente A-1 102 reside e fornecer as informações coletadas direta / indiretamente para o receptor de evento 108 . O agente A-2 104 pode coletar informações reacionadas às relações pai-filho de processos em execução no dispositivo de computação no qual o agente A-2 104 reside e fornecer as informações coletadas ao receptor de evento 108. O agente A-3 106 pode coletar informações relacionadas às relações pai-filho de processos em execução no dispositivo de computação no qual o agente A-3 106 reside e fornecer as informações coletadas ao receptor de eventos 108.
[029] Ter acesso às relações de linhagem / herança de processos pode ser importante para a compreensão das funções dos processos e dos dispositivos de computação. Por exemplo, uma investigação sobre um determinado processo em execução em um dispositivo de computação (por exemplo, para segurança, análise de antivírus, detecção de intrusão, fins de monitoramento de dispositivo) pode exigir conhecimento sobre qual (is) processo (s) direta / indiretamente criaram o determinado processo, quando o processo foi criado, quais tarefas o determinado processo executou, e / ou que processo (s) o determinado processo criou. No entanto, um sistema operacional do dispositivo de computação pode não acompanhar a relação de linhagem / herança de processos e a relação de linhagem / herança de processos pode ser perdida. Além disso, os identificadores de processos podem ser reutilizados por um sistema operacional. Por exemplo, um determinado identificador de um determinado processo pode ser reutilizado para identificar outro processo após o término do determinado processo. A falta de relacionamentos de linhagem / herança de processos pode tornar difícil e demorado investigar as funções dos processos, especialmente após o término dos processos / processos relacionados. Além disso, se o término de um determinado processo não for relatado e outro processo reutilizar o identificador que foi atribuído ao determinado processo, pode ser difícil determinar que um processo diferente esteja sendo executado no dispositivo de computação. Programas maliciosos podem tirar vantagem de tais pontos cegos para infectar dispositivos de computação.
[030] Os agentes 102, 104, 106 podem gerar informações abrangentes de linhagem / herança relacionadas aos processos em execução nos dispositivos de computação. Os agentes 102, 104, 106 podem gerar informações abrangentes de linhagem / herança determinando informações de evento de processo dos dispositivos de computação usando várias ferramentas de observação de evento de processo. As informações de evento de processo podem caracterizar estados de processos dos dispositivos de computação. As informações de evento de processo podem incluir informações sobre identificadores (PID), horários de início, relações pai-filho e / ou outras informações relacionadas aos processos em execução nos dispositivos de computação. Como um determinado identificador pode ser reutilizado quando o processo associado termina, um identificador único de um determinado processo pode ser determinado com base no identificador e na hora de início do determinado processo. Ou seja, uma combinação do identificador e a hora de início de um determinado processo pode ser usada como um identificador exclusivo para o determinado processo. Em algumas modalidades, as informações de evento de processo podem incluir informações sobre relacionamentos pai-filho unilaterais. As informações do evento do processo podem incluir, para um determinado processo, informações que identificam o (s) pai (s) do determinado processo ou o (s) filho (s) do determinado processo. Em algumas modalidades, as informações do evento do processo podem incluir informações sobre relacionamentos bidirecionais pai-filho. As informações do evento do processo podem incluir, para um determinado processo, informações que identificam o (s) pai (s) do processo dado e o (s) filho (s) do determinado processo.
[031] As informações do evento do processo podem incluir metadados relacionados aos processos. Por exemplo, para um determinado processo, as informações do evento do processo podem incluir informações sobre uma ou mais propriedades do processo, linha de comando, caminho, identificador do processo (PID), hora de início do processo, hora de término do processo, identificador do processo pai (PPID), hora de início do processo pai, hora de término do processo pai, identificador do processo filho (CPID), hora de início do processo filho, hora de término do processo filho, operações / tarefas realizadas pelo determinado processo (por exemplo, criação / modificação / exclusão de arquivo / linha / propriedade, abertura / fechamento de arquivo, conexão a um dispositivo / rede), motivos para a criação / finalização do processo (por exemplo, inicialização do sistema, execução do processo de criação do sistema de chamada por um processo existente, solicitação do usuário / sistema para criar um processo, inicialização de um trabalho em lote, parada de instrução, desconexão do usuário, execução de uma solicitação de serviço para encerrar, condições de erro / falha, conclusão normal, limite de tempo excedido, memória indisponível, violação de limites, erro de proteção, erro aritmético, ultrapassagem de tempo, falha de E / S, instrução inválida, instrução privilegiada, uso indevido de dados, intervenção do sistema operacional, término do processo pai / término em cascata, solicitação pai) e / ou outras informações relacionadas ao determinado processo.
[032] Os agentes 102, 104, 106 podem fornecer as informações de evento de processo e / ou outras informações para o receptor de evento 108. Os agentes 102, 104, 106 podem fornecer as informações de evento de processo para o receptor de evento 108 com base na determinação de informações de evento de processo, em intervalos periódicos, com base em uma solicitação para as informações de evento de processo do receptor de evento 108 e / ou outras informações. A comunicação entre os agentes 102, 104, 106 e o receptor de evento 108 pode ser realizada por meio de um ou mais protocolos de comunicação, como protocolos padrão da Internet ou outros protocolos de comunicação de rede. Em algumas modalidades, os agentes 102, 104, 106 e o receptor de evento 108 podem ser distribuídos geograficamente e podem ser conectados por meio de uma ou mais redes (por exemplo, internet, intranet, extranet).
[033] Em algumas modalidades, as informações de evento de processo podem incluir identificadores de terminal para identificar os dispositivos de computação que executam os processos. Em algumas modalidades, os identificadores de terminal das informações de evento de processo podem ser determinados pelos agentes 102, 104, 106. Em algumas modalidades, os identificadores de terminal das informações de evento de processo podem ser determinados pelo receptor de evento 108. Por exemplo, o receptor de evento 108 pode anexar / associar um determinado terminal identificador para processar informação de evento com base no qual os agentes 102, 104, 106 obtiveram a informação de evento de processo.
[034] As ferramentas de observação de evento de processo usadas pelos agentes 102, 104, 106 podem incluir dois ou mais de uma observação de eventos de criação de processo e eventos de término de processo, uma coleta de refugo, uma varredura de processo e / ou outras ferramentas de observação de evento de processo. As ferramentas de observação de evento de processo podem usar / incluir um ou mais sensores para monitorar estados de processo (por exemplo, eventos de criação de processo, eventos de término de processo) nos dispositivos de computação. Os sensores podem assumir a forma de logs de auditoria, logs de transações, logs de eventos, interfaces de programação de aplicativos do sistema operacional, unidades de dispositivos, módulos de núcleo e / ou outras ferramentas para observar eventos de processo.
[035] Uma observação de eventos de criação de processo e eventos de término de processo pode incluir (por exemplo, em tempo real) a detecção de eventos para criação e término de processo. Tal observação de eventos de criação de processo e eventos de término de processo pode incluir a adição de um processo a uma lista de processos ativos com base na observação de um evento de criação de processos para o processo e remoção de determinado processo da lista de processos ativos com base na observação de um evento de término do processo para o determinado processo. Essas listas de processos ativos podem ser mantidas pelos agentes 102, 104, 106 e / ou outros componentes do ambiente 100. Por exemplo, o agente A-1 102 pode adicionar um processo a uma lista de processos ativos mantida pelo agente A-1 102 com base no agente A-1 102 observando um evento de criação de processo para o processo em seu dispositivo de computação.
Quando o agente A-1 102 observa um evento de término de processo para o processo, o processo pode ser removido da lista de processos ativos. O agente A-1 102 pode determinar informações de evento de processo para o processo com base na observação do evento de criação de processo e / ou evento de término de processo. Relacionamentos pai-filho e / ou outros metadados podem ser armazenados para cada processo na lista de processos ativos. Outros estados de processos (por exemplo, zumbi) podem ser rastreados usando a observação de eventos de processo. A informação de evento de processo determinada com base na observação de eventos de processo pode ser fornecida pelo agente A-1 102 para o receptor de evento 108 em uma mensagem (mensagem de evento).
[036] Uma coleta de lixo pode incluir a verificação de estados de processos listados em uma lista de processos ativos para determinar se eles estão ativos e a remoção de processos determinados como não ativos da lista de processos ativos.
Por exemplo, o agente A-1 102 pode consultar seu dispositivo de comutação para determinar se processos individuais na lista de processos ativos ainda estão ativos e identificar processos que não estão mais ativos. Como outro exemplo, o agente A-1 102 pode consultar o sistema operacional de seu dispositivo de computação para obter uma lista de processos ativos e comparar a lista obtida do sistema operacional com sua lista de processos ativos. O agente A-1 102 pode remover aqueles processos que não estão mais ativos de sua lista de processos ativos e enviar a lista de processos que não estão mais ativos para o receptor de eventos 108 em uma mensagem (mensagem de evento). O agente A-1 102 pode determinar a informação do evento do processo para processos com base na coleta de lixo e fornecer a informação do evento do processo ao receptor do evento 108 em uma mensagem (mensagem do evento). A coleta de lixo pode permitir que o agente A-1 102 identifique processos zumbis para os quais o evento de término de processo não foi observado por meio da observação de eventos de término de processo. A coleta de lixo pode exigir o consumo de recursos (por exemplo, processamento, tempo, memória) que são ordens de magnitude menores do que a varredura do processo.
[037] Uma varredura de processo pode incluir a varredura de um dispositivo de computação para identificar processos que estão ativos. A lista de processos identificados como ativos pode ter a garantia de estar correta em um determinado momento. A lista de processos que são identificados como ativos com base na varredura de processo pode ser harmonizada com a lista de processos ativos. Por exemplo, o agente A-1 102 pode examinar seu dispositivo de computação / consultar seu dispositivo de computação para realizar uma varredura para identificar todos os processos ativos, adicionar processos ativos recém identificados à lista de processos ativos e remover da lista de processos ativos os processos que são não identificado como ativos pela varredura de processo. O agente A-1 102 pode enviar a lista de processos ativos para o receptor de eventos 108 como um evento agregado especial. O agente A-1 102 pode determinar informações de evento de processo para processos com base na varredura de processo e fornecer as informações de evento de processo ao receptor de evento 108 em uma mensagem (mensagem de evento). A varredura do processo pode exigir maior consumo de recursos do que a coleta de lixo. A varredura de processo pode exigir o congelamento da execução de processos não SO para criar a captura instantânea de processos ativos.
[038] Os agentes 102, 104, 106 podem usar uma combinação de observação, coleta de lixo, varredura de processo e / ou outras ferramentas de observação de evento de processo para rastrear estados de processos nos dispositivos de computação. Esta abordagem híbrida para coleta de estado de processos pode fornecer rastreamento abrangente de estados de processos em execução nos dispositivos de computação para diferentes sistemas operacionais. Ou seja, essa abordagem híbrida pode fornecer um único modelo de rastreamento de processo que pode ser usado para diferentes sistemas operacionais.
[039] A Figura 2 ilustra observações de exemplo de estados de processo 202, coletas de lixo de exemplo 204 e varreduras de processo de exemplo 206. No exemplo 202, ocorrências de tempo de observações de estados de processo, como eventos de criação de processo e / ou eventos de término de processo, podem ser mostradas pelos indicadores 211, 212, 213, 214, 215. Em algumas modalidades, as observações dos estados do processo podem ocorrer em tempo real (em resposta à observação do evento do processo relevante). No exemplo 204, as ocorrências de tempo de coletas de lixo podem ser mostradas pelos indicadores 221, 222, 223. As coletas de lixo podem ocorrer periodicamente em um intervalo de lixo (por exemplo, um minuto). No exemplo 206, as ocorrências de tempo de varreduras de processo podem ser mostradas pelos indicadores 231, 232. As varreduras de processo podem ocorrer periodicamente em um intervalo de varredura (por exemplo, uma hora).
Como mostrado na Figura 2, as coletas de lixo podem ocorrer periodicamente em um determinado intervalo (intervalo de lixo) e as varreduras de processo podem ocorrer periodicamente em outro intervalo de tempo (intervalo de varredura), onde o intervalo das coletas de lixo é menor do que o intervalo das varreduras de processo.
São contemplados outros intervalos para coletas de lixo e varreduras de processo.
[040] Em algumas modalidades, os agentes 102, 104, 106 podem determinar os eventos de processo dos dispositivos de computação fora do núcleo dos dispositivos de computação. Por exemplo, o agente A-1 102 pode determinar os eventos de processo de seu dispositivo de computação fora do núcleo de seu dispositivo de computação. Operar fora do núcleo de seus dispositivos de computação pode incluir acessar recursos de ferramentas de observação de eventos de processo fornecidas pelos sistemas operacionais dos respectivos dispositivos de computação. Operar fora do núcleo pode tornar mais fácil implantar os agentes 102, 104, 106 dentro dos dispositivos de computação. Por exemplo, operar fora do núcleo pode permitir que os agentes 102, 104, 106 operem sem privilégios especiais, sem fazer alterações no núcleo e / ou operem sem exigir a instalação de unidades. O uso das instalações das ferramentas de observação de eventos de processo (por exemplo, PCW, “openBSM”) fornecidas pelos sistemas operacionais pode simplificar a implantação e operação dos agentes 102, 104, 106 dentro dos dispositivos de computação.
[041] A obtenção, armazenamento e processamento de informações de evento de processo fornecidas pelos agentes podem exigir o consumo de grandes quantidades de recursos (por exemplo, energia de processamento, memória) em um curto período de tempo. Grande número de eventos simultâneos pode precisar ser obtido, armazenado e processado. Por exemplo, os agentes podem estar em execução em um grande número de dispositivos de computação, o que pode resultar em um grande número de eventos de processo sendo coletados e fornecidos pelos agentes. Pode haver grandes explosões de eventos de processo nos dispositivos de computação, resultando em uma grande quantidade de informações de eventos de processo que precisam ser tratadas em tempo hábil.
Pode haver problemas de rede entre os agentes e o receptor de evento 108, resultando em informações de evento de processo não sendo fornecidas em tempo hábil e uma grande enxurrada de informações de evento de processo sendo fornecida pelos agentes quando a rede for restaurada. Devido ao atraso de rede / processamento, as informações do evento do processo para eventos podem ser fornecidas pelos agentes fora de ordem e os eventos podem precisar ser ordenados adequadamente. As informações sobre os eventos podem precisar ser usadas para identificar eventos / relacionamentos do processo rapidamente, o que pode exigir uma consulta de nível inferior a um segundo sobre os eventos e seus relacionamentos. A falha do agente (de falha de processo, falha de hardware, falha de rede) pode levar à perda de informações do evento. Com referência à Figura 1, o receptor de evento 108, a fila 110, o processador de fluxo 112, o banco de dados de gráficos 114 e o servidor de consulta 116 podem fornecer recursos para coletar e processar eventos de processo enquanto tratam os assuntos acima.
[042] O receptor de evento 108 pode obter informações de evento de processo e / ou outras informações de dispositivos de computação determinadas pelos agentes 102, 104, 106. As informações de evento de processo podem caracterizar estados de processos dos dispositivos de computação nos quais os agentes 102, 104 , 106 residem. O receptor de eventos 108 pode incluir um ou mais processos e / ou um ou mais servidores dentro de uma rede. Por exemplo, o receptor de evento 108 (por exemplo, servidor receptor de evento) pode obter informações de evento de processo a partir de um agente coletor de estado de processador em execução em um dispositivo de computação (por exemplo, terminal) dentro de uma rede. O receptor de evento 108 pode obter informações de evento de processo dos agentes 102, 104, 106 e enviar as informações de evento de processo para a fila 110.
[043] O receptor de evento 108 pode obter as informações de evento de processo diretamente dos agentes 102, 104, 106 e / ou por meio de um ou mais dispositivos intermediários (por exemplo, roteadores, modems, servidores). As informações de evento de processo podem ser enviadas para o receptor de eventos 108 pelos agentes 102, 104, 106 e / ou puxadas pelo receptor de eventos 108 dos agentes 102, 104, 106.
[044] O receptor de evento 108 pode armazenar as informações de evento de processo dentro da fila 110. Em algumas modalidades, a fila 110 pode incluir um servidor online. Em algumas modalidades, a fila 110 pode incluir um ou mais armazenamento de buffer distribuído. A fila 110 pode utilizar uma ou mais plataformas de processamento de fluxo para entregar alimentações de dados em tempo real, como Apache Kafka e / ou outras plataformas. A fila 110 pode incluir uma fila de mensagens escalonáveis para (1) evitar a perda de informações de evento de processo (permitindo a reprodução de eventos da fila 110), (2) evitar congestionamento no processamento a jusante e (3) facilitar o aumento de fluxo de dados. O envio direto de informações de evento de processo obtidas dos agentes 102, 104, 106 para o processador de fluxo 112 para processamento pode resultar em perda de informações. Ou seja, o processador de fluxo 112 pode não ser capaz de processar em tempo todas as informações obtidas pelo receptor de evento 108 (o processador de fluxo 112 pode ser um gargalo) e a fila 110 pode ser usada para armazenar em buffer as informações fornecidas ao processador de fluxo 112 . Em algumas modalidades, o fluxo de informações para dentro e / ou fora da fila 110 pode ser controlado pelo processador de fluxo 112 para evitar o excesso de congestionamento no processador de fluxo 112. Por exemplo, mais potência de processamento do processador de fluxo 112 pode estar disponível em determinados momentos durante o dia (por exemplo, à noite quando menos dispositivos de computação estão sendo usados) e mais informações podem ser puxadas da fila 110 para o processador de fluxo 112 nesses momentos para tirar vantagem da potência de processamento disponível. Usar a fila 110 para controlar / gerenciar o fluxo de informações de evento de processo pode mais barato do que aumentar a potência de processamento do processador de fluxo 112 porque o custo para aumentar a memória é menor do que o custo para aumentar a potência de processamento. Em algumas modalidades, a fila 110 pode não armazenar informações de evento de processo na ordem em que as informações de evento de processo foram recebidas porque a ordem dos eventos pode ser determinada pelo processador de fluxo 112.
[045] O processador de fluxo 112 pode determinar informações de gráfico com base nas informações de evento de processo dentro da fila 110 e / ou outras informações. As informações do gráfico podem caracterizar estados de processos dos dispositivos de computação usando nós e bordas. Por exemplo, processos individuais podem ser representados por nós dentro de um gráfico e relacionamentos entre os processos podem ser representados por arestas entre os nós. O processador de fluxo 112 pode interpretar eventos de processo transmitidos dentro das informações de evento de processo e determinar o gráfico de processo (por exemplo, gráfico de processo de terminal), definido pelas informações de gráfico. O gráfico de processo pode definir relacionamentos pai-filho de processos em execução em um dispositivo / terminal de computação. O processador de fluxo 112 pode manter gráficos de processo de múltiplos dispositivos / terminais de computação dentro do banco de dados de gráficos 114.
[046] O processador de fluxo 112 pode realizar processos ETL (extrair, transformar, carregar) nas informações de evento do processo para determinar as informações do gráfico. Por exemplo, o processador de fluxo 112 pode extrair informações relevantes relacionadas a processos / eventos de processo a partir das informações de evento de processo, transformar uma ou mais partes de informações (por exemplo, de valores de sequência em valores inteiros) e converter as informações em um formato desejado ( por exemplo, transformar a informação em uma estrutura particular). O processador de fluxo 112 pode gravar propriedades / metadados de processos juntamente com as relações pai-filho nas informações do gráfico e enviar as informações do gráfico para o banco de dados de gráficos 114. O processador de fluxo 112 pode ser, para determinar as informações do gráfico, configurado para identificar e ordenar eventos de processo com base na informação de evento de processo dentro da fila 110. O processador de fluxo 112 pode usar uma ou mais partes da informação de evento de processo e / ou a informação de gráfico para rastrear as operações / estados de processos e / ou as mudanças nos processos e determinar as ordens em que os processos iniciaram / eventos de processo ocorreram.
[047] O processador de fluxo 112 pode extrair informações de evento de processo da fila 110 para processamento com base no tempo, com base na potência de processamento disponível, com base em informações de evento de processo disponíveis e / ou outras informações. Por exemplo, o processador de fluxo 112 pode seguir uma programação para extrair informações de evento de processo em determinados momentos. O processador de fluxo 112 pode extrair informações de evento de processo quando tem poder de processamento disponível para determinar as informações de gráfico com base nas informações de evento de processo. O processador de fluxo 112 pode ouvir a fila 110 e extrair as informações de evento de processo quando as informações de evento de processo são carregadas na fila 110.
Em algumas modalidades, o processador de fluxo 1112 pode ser um processador distribuído. Ou seja, o processamento das informações de evento do processo pode ser distribuído por vários processadores / dispositivos de computação.
[048] O processador de fluxo 112 pode utilizar informações de evento de processo de forma diferente com base no tipo de evento da informação de evento de processo. A Figura 3 ilustra um diagrama de fluxo de exemplo 300 para processar informações de evento de processo. O processador de fluxo 112 pode determinar se as informações de evento de processo contêm informação para um único evento ou múltiplos eventos (bloco 302). Com base na informação de evento de processo contendo informação para um único evento (por exemplo, observação de um evento de criação de processo / evento de término de processo, processo zumbi), o processador de fluxo 112 pode extrair informações relevantes para o evento único a partir das informações de evento de processo (bloco 304). O processador de fluxo 112 pode atualizar o gráfico de processo com base nas informações extraídas sobre o evento único (bloco 306). Com base nas informações de evento de processo contendo informações para vários eventos (por exemplo, coleta de lixo, varredura de processo), o processador de fluxo 112 pode obter uma ou mais listas de eventos (por exemplo, lista de processos ativos, lista de processos anteriormente ativos que não estão mais ativos) e extrair informações relevantes para os eventos múltiplos (bloco 308). O processador de fluxo 112 pode separar os eventos múltiplos e processá-los conforme o processador de fluxo 112 processa eventos únicos.
[049] O processador de fluxo 112 pode usar informações de evento de processo obtidas em momentos diferentes para identificar eventos de início de processo ausentes e / ou eventos de encerramento de processos ausentes. Por exemplo, o processador de vapor 112 pode comparar capturas instantâneas de processos ativos obtidos em momentos diferentes para identificar processos iniciados / encerrados que não foram observados (por exemplo, em tempo real) (bloco 310). O processador de fluxo 112 pode extrair informações relevantes para os eventos ausentes e atualizar o gráfico de processo com base nas informações extraídas sobre os eventos ausentes (bloco 306). Tal uso de informações de evento de processo obtidas em momentos diferentes pode permitir que o processador de fluxo 112 atualize os gráficos de processo com informações sobre eventos de processo para os quais mensagens podem ter sido perdidas (por exemplo, devido a problemas de rede, problemas de agente). Por exemplo, quando o processador de fluxo 112 recebe uma lista de processos ativos em um dispositivo de computação de uma varredura de processo, o processador de fluxo 112 pode adicionar tempos de término aos processos que estão listados na lista de processos ativos e não encontrados durante a varredura de processo como sendo ativos . Como outro exemplo, quando o processador de fluxo 112 recebe uma lista de processos ativos em um dispositivo de computação de uma varredura de processo, o processador de fluxo 112 pode adicionar tempos de início para processos que são encontrados na varredura de processo e não encontrados na lista de processos ativos. São contempladas outras atualizações no gráfico do processo com base na identificação de eventos ausentes.
[050] O tempo exato de eventos de processo ausentes (por exemplo, momentos em que um processo foi iniciado / encerrado) pode não ser recuperável a partir de informações de evento de processo obtidas em momentos diferentes (por exemplo, comparação de capturas instantâneas / comparação de capturas instantâneas para listas de processos ativos). O erro no tempo de eventos de processo (por exemplo, eventos de início / término) contêm informações para um único evento ou eventos múltiplos (bloco 302). Com base no processo pode ser limitado pelo intervalo de captura instantânea (por exemplo, intervalo de lixo, intervalo de varredura). Em algumas modalidades, os estados / eventos de processo recuperados podem ser atribuídos ao momento da captura instantânea em que os estados / eventos específicos foram recuperados. Os estados / eventos do processo recuperados podem ser atribuídos outras vezes (por exemplo, hora da última captura instantânea em que o estado / evento anterior é identificado, o tempo entre duas capturas instantâneas em que diferentes estados são identificados).
[051] O processador de fluxo 112 pode armazenar as informações do gráfico e / ou outras informações dentro do banco de dados de gráficos 114. As informações do gráfico podem ser armazenadas em uma única tabela ou múltiplas tabelas dentro do banco de dados de gráficos 114. A (s) tabela (s) podem armazenar informações relacionadas a relação de processo, metadados e / ou outras informações relacionadas a processos / eventos de processo. Por exemplo, para processos individuais, a (s) tabela (s) podem armazenar duas bordas: uma borda do processo pai para o processo filho e uma borda do processo filho para o processo pai. Outros metadados relacionados aos processos podem ser armazenados na (s) tabela (s). Em algumas modalidades, as informações de relação relacionadas aos processos podem ser armazenadas separadamente de outros metadados relacionados aos processos.
[052] Em algumas modalidades, as informações do gráfico podem ser armazenadas no banco de dados do gráfico usando uma estrutura de banco de dados de valor-chave (por exemplo, banco de dados NoSQL) e / ou outras estruturas. Por exemplo, as informações do gráfico podem ser armazenadas usando Apache HBase e / ou outro banco de dados distribuído não relacional. Um armazenamento baseado em valor-chave pode suportar as informações do gráfico / gráfico do processo e suas propriedades.O uso de uma estrutura de banco de dados de valor-chave pode permitir o armazenamento de informações sobre vários (por exemplo, bilhões) de eventos, bem como consultas de suporte a respeito de relações e propriedades dos eventos em tempo real. O uso de uma estrutura de banco de dados de valor-chave pode fornecer escala horizontal e maior disponibilidade no fornecimento de armazenamento e recuperação de dados. Em algumas modalidades, uma estrutura de banco de dados de valor-chave pode ser baseada em coluna, permitindo o armazenamento dentro de quantas colunas forem necessárias e pode permitir o armazenamento / uso das informações do gráfico sem um esquema definido. A natureza baseada em coluna do banco de dados de gráficos 114 pode permitir o suporte de propriedades dinâmicas. A estrutura de valor-chave do banco de dados de gráficos 114 pode fornecer desempenho de pesquisa aprimorado. Um banco de dados de valor-chave pode suportar gráfico direcionado e não direcionado e pode permitir consultas a respeito de um ou mais nós, bordas e / ou partes do gráfico de processo (consultas de borda de suporte, vértice, subgráfico). A natureza distribuída do banco de dados pode fornecer escalabilidade para o banco de dados de gráfico 114. Uma ou mais camadas podem ser construídas no topo do banco de dados de gráfico 114 para suportar operações em gráficos de processo. É contemplado o uso de outros modelos de banco de dados.
[053] O servidor de consulta 116 pode obter uma ou mais consultas a respeito de um ou mais processos de um dispositivo de computação. O servidor de consulta 116 pode receber consultas de um usuário e / ou um dispositivo de computação. O servidor de consulta 116 pode ser configurado para determinar uma ou mais respostas às perguntas com base nas informações do gráfico dentro do banco de dados de gráfico 114. A (s) resposta (s) podem incluir / utilizar um ou mais nós, bordas e / ou sub - gráficos de gráficos de processo armazenados no banco de dados de gráficos 114. O servidor de consulta 116 pode explicar e / ou fornecer um gráfico de processo armazenado no banco de dados de gráficos 114. Por exemplo, uma consulta pode identificar um identificador de um processo (P), um determinado comprimento de etapa (S), e uma seleção de uma opção pai ou filho. Para a opção filho, o servidor de consulta 116 pode retornar um subgráfico do gráfico do processo com o processo (P) como a raiz e todos os filhos do processo (P) dentro de S etapas. Para a opção pai, o servidor de consulta 116 pode retornar um subgráfico do gráfico do processo com os ancestrais do processo (P) em S etapas. Como outro exemplo, uma consulta pode identificar um intervalo de tempo para um determinado dispositivo de computação e o servidor de consulta 116 pode retornar processos do gráfico de processo que estavam ativos dentro do dispositivo de computação específico durante o intervalo de tempo.São contemplados outros tipos de perguntas e respostas com base nas informações do gráfico.
[054] Em algumas modalidades, o servidor de consulta 116 pode fornecer um ou mais conjuntos de interfaces de programação de aplicativo a partir dos quais o servidor de consulta 116 pode obter e responder a uma consulta. As interfaces de programação de aplicativos podem suportar consultas de nó, vértice, borda e / ou subgráfico. O (s) conjunto (s) de interfaces de programação de aplicativo podem incluir uma interface de programação de aplicativo de chamada única, uma interface de programação de aplicativo iterativa e uma interface de programação de aplicativo de processamento em lote. A Figura 4 ilustra um diagrama de exemplo 400 mostrando diferentes maneiras em que as perguntas a respeito de um processo podem ser recebidas e respondidas. Uma consulta de chamada única 412 pode incluir um pedido de informações sobre um aspecto particular de um processo / relação entre processos. Por exemplo, a consulta de chamada única 412 pode solicitar informações sobre propriedades de um processo e as propriedades podem ser retornadas em resposta à consulta com base no banco de dados de gráfico 404.
Uma consulta de chamada única 412 pode ser usada para encontrar um subgráfico pequeno ou uma parte de um subgráfico em uma única chamada. Uma consulta iterativa 414 pode incluir uma solicitação em que a resposta não pode ser retornada em um único resultado. Por exemplo, o gráfico de processo no banco de dados de gráfico 404 pode ser grande e pode precisar ser processado em várias etapas para retornar a resposta. Em resposta à consulta iterativa 414, o servidor de consulta 116 pode retornar a resposta em várias partes. Uma consulta iterativa 414 pode ser usada para encontrar um grande subgráfico em várias chamadas. Uma consulta de trabalho 416 pode incluir uma solicitação que pode consumir uma grande quantidade de recursos. Por exemplo, uma consulta de trabalho 416 pode incluir uma solicitação para processar um gráfico de processo inteiro dentro do banco de dados de gráficos
404. Determinar uma resposta a uma consulta de trabalho 416 pode levar muito tempo / processamento / memória, e a resposta pode não ser retornada em tempo real. Em vez disso, essa resposta pode ser determinada offline / quando os recursos estão (mais) disponíveis. Por exemplo, uma consulta de trabalho 416 pode usar uma estrutura de processamento em lote e pode ser usada para ler e processar um gráfico inteiro como um trabalho em lote offline.
[055] A Figura 5 ilustra fluxogramas de métodos de exemplo 500, 550, de acordo com várias modalidades da presente divulgação. Os métodos 500, 550 podem ser implementados em vários ambientes, incluindo, por exemplo, o ambiente 100 da Figura 1. As operações dos métodos 500, 550 apresentados abaixo se destinam a ser ilustrativas. Dependendo da implementação, os métodos 500, 550 podem incluir etapas adicionais, em menor número ou alternativas realizadas em várias ordens ou em paralelo. Os métodos 500, 550 podem ser implementados em vários sistemas ou dispositivos de computação, incluindo um ou mais processadores.
[056] Com relação ao método 500, no bloco 510, pode ser determinada a informação de evento de processo de um primeiro dispositivo de computação. No bloco 520, as informações de evento de processo podem ser fornecidas a um segundo dispositivo de computação.
[057] Com relação ao método 550, no bloco 560, podem ser obtidas informações de evento de processo de um dispositivo de computação. No bloco 570, a informação do evento do processo pode ser armazenada dentro de uma fila. No bloco 580, as informações do gráfico podem ser determinadas com base nas informações do evento do processo dentro da fila. No bloco 590, as informações de gráfico podem ser armazenadas em um banco de dados de gráficos.
[058] A Figura 6 é um diagrama de bloco que ilustra um sistema de computador 600 no qual pode ser implementada qualquer uma das modalidades aqui descritas. O sistema de computador 600 inclui um barramento 602 ou outro mecanismo de comunicação para comunicar informações, um ou mais processadores de hardware 604 acoplados ao barramento 602 para processar informações. O (s) processador (es) de hardware 604 podem ser, por exemplo, um ou mais microprocessadores de uso geral.
[059] O sistema de computador 600 também inclui uma memória principal 606, tal como uma memória de acesso aleatório (RAM), cache e / ou outros dispositivos de armazenamento dinâmico, acoplados ao barramento 602 para armazenar informações e instruções a serem executadas pelo (s) processador (es)
604. A memória principal 606 também pode ser usada para armazenar variáveis temporárias ou outras informações intermediárias durante a execução de instruções a serem executadas pelo (s) processador (es) 604. Tais instruções, quando armazenadas em mídia de armazenamento acessível ao (s) processador (es) 604, renderizam o sistema de computador 600 em uma máquina de propósito especial que é personalizada para realizar as operações especificadas nas instruções. A memória principal 606 pode incluir mídia não volátil e / ou mídia volátil. A mídia não volátil pode incluir, por exemplo, discos ópticos ou magnéticos. A mídia volátil pode incluir memória dinâmica. Formas comuns de mídia podem incluir, por exemplo, um disquete, um disco flexível, disco rígido, unidade de estado sólido, fita magnética ou qualquer outro meio de armazenamento de dados magnéticos, um CD-ROM, qualquer outro meio de armazenamento de dados ópticos, qualquer meio físico meio com padrões de orifícios, um RAM, um DRAM, um PROM e EPROM, um FLASH- EPROM, NVRAM, qualquer outro chip de memória ou cartucho e versões em rede dos mesmos.
[060] O sistema de computador 600 pode implementar as técnicas descritas neste documento usando lógica com fio personalizado, um ou mais ASICs ou FPGAs, firmware e / ou lógica de programa que, em combinação com o sistema de computador, faz com que ou programa o sistema de computador 600 seja uma máquina de propósito especial. De acordo com uma modalidade, as técnicas aqui são realizadas pelo sistema de computador 600 em resposta ao (s) processador (es) 604 executando uma ou mais sequências de uma ou mais instruções contidas na memória principal 606. Tais instruções podem ser lidas na memória principal 606 a partir de outro meio de armazenamento, tal como dispositivo de armazenamento
608. A execução das sequências de instruções contidas na memória principal 606 faz com que o (s) processador (es) 604 execute as etapas do processo aqui descritas. Em modalidades alternativas, os circuitos com fio podem ser usados no lugar ou em combinação com as instruções do software.
[061] O sistema de computador 600 também inclui uma interface de comunicação 610 acoplada ao barramento 602. A interface de comunicação 610 fornece um acoplamento de comunicação de dados bidirecional a um ou mais links de rede que estão conectados a uma ou mais redes. Como outro exemplo, a interface de comunicação 610 pode ser um cartão de rede de área local (LAN) para fornecer uma conexão de comunicação de dados a uma LAN compatível (ou componente WAN para comunicação com uma WAN). Também podem ser implementados links sem fio.
[062] O desempenho de algumas das operações pode ser distribuído entre os processadores, não apenas residindo em uma única máquina, mas implantado em uma série de máquinas. Em algumas modalidades de exemplo, os processadores ou máquinas implementadas por processador podem estar localizados em uma única localização geográfica (por exemplo, dentro de um ambiente doméstico, um ambiente de escritório ou uma fazenda de servidores). Em outras modalidades de exemplo, os processadores ou máquinas implementadas por processador podem ser distribuídos em uma série de localizações geográficas.
[063] Embora estejam descritos neste documento exemplos e características de princípios divulgados, são possíveis modificações, adaptações e outras implementações sem se afastar do espírito e do escopo das modalidades divulgadas. Além disso, as palavras "compreendendo", "tendo", "contendo" e "incluindo" e outras formas semelhantes se destinam a ter significado equivalente e serem abertas no sentido de que um item ou itens após qualquer uma dessas palavras não pretendem ter uma lista exaustiva de tal item ou itens, ou pretende ser limitada apenas ao item ou itens listados. Também deve ser observado que, conforme usado neste documento e nas reivindicações anexas, as formas singulares "um", "uma" e "o" “a” incluem referências plurais, a menos que o contexto dite claramente o contrário.
Claims (21)
1. Método para coletar estados de processo, o método implementado por um sistema de computação que inclui um ou mais processadores meio de armazenamento não transitório que armazena instruções legíveis por máquina, o método CARACTERIZADO pelo fato de que compreende: determinar informação de evento de processo de um primeiro dispositivo de computação com base em uma observação de eventos de criação de processo e eventos de término de processo, uma coleta de lixo, e uma varredura de processo, e fornecer a informação de evento de processo a um dispositivo de computação.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a informação de evento de processo do primeiro dispositivo de computação é determinada fora de um núcleo do primeiro dispositivo de computação.
3. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a informação de evento de processo inclui um identificador, um tempo de início, e uma relação pai-filho de um determinado processo sendo executado no primeiro dispositivo de computação.
4. Método, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que um identificador único do determinado processo é determinado com base no identificador e no tempo de início.
5. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a observação inclui a adição de um determinado processo em uma lista de processo ativo com base na observação de um determinado evento de criação de processo para um determinado processo e remoção do determinado processo da lista de processo ativo com base na observação de um determinado evento de término de processo para o determinado processo.
6. Método, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que a coleta de lixo inclui estados de verificação de processos listados na lista de processos ativos para determinar se eles estão ativos e a remoção de processos determinados como não ativos da lista de processos ativos.
7. Método, de acordo com a reivindicação 6, CARACTERIZADO pelo fato de que a varredura do processo inclui varrer o primeiro dispositivo de computação para identificar processos que estão ativos.
8. Método, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de que a lista de processos que são identificados como ativos com base da varredura de processo é harmonizada com a lista de processo ativo.
9. Método, de acordo com a reivindicação 8, CARACTERIZADO pelo fato de que a coleta de lixo ocorre periodicamente em um primeiro intervalo de tempo e a varredura de processo ocorre periodicamente em um segundo intervalo de tempo, o primeiro intervalo de tempo sendo mais curto do que o segundo intervalo de tempo.
10. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o primeiro dispositivo de computação inclui um terminal de uma rede e o segundo dispositivo de computação inclui um dispositivo de computação dentro da rede, o segundo dispositivo de computação incluindo um intérprete de gráfico de processo dinâmico.
11. Método para processar estados de processo, o método implementado por um sistema de computação incluindo um ou mais processadores e mídia de armazenamento não transitória armazenando instruções legíveis por máquina, o método CARACTERIZADO pelo fato de que compreende: obter informações de evento de processo de um dispositivo de computação, as informações de evento de processo caracterizando estados de processos do dispositivo de computação; armazenar as informações do evento de processo em uma fila;
determinar informações de gráfico com base nas informações de evento de processo dentro da fila, as informações de gráfico que caracterizam estados de processos do dispositivo de computação usando nós e bordas; e armazenar as informações do gráfico em um banco de dados de gráficos.
12. Método, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que a informação de evento de processo é obtida a partir de um agente coletor de estado de processo em execução no dispositivo de computação.
13. Método, de acordo com a reivindicação 12, CARACTERIZADO pelo fato de que a informação de evento de processo é obtida e armazenada na fila por um servidor receptor de eventos do sistema de computação.
14. Método, de acordo com a reivindicação 13, CARACTERIZADO pelo fato de que a fila é um armazenamento em buffer distribuído.
15. Método, de acordo com a reivindicação 13, CARACTERIZADO pelo fato de que a informação de gráfico é determinada por um processador de fluxo do sistema de computação e o processador de fluxo é, para determinar as informações de gráfico, configurado para identificar e ordenar eventos de processo com base nas informações de evento de processo dentro da fila.
16. Método, de acordo com a reivindicação 15, CARACTERIZADO pelo fato de que a informação do gráfico inclui relações pai-filho e propriedades dos processos do dispositivo de computação.
17. Método, de acordo com a reivindicação 15, CARACTERIZADO pelo fato de que o processador de fluxo usa informações de evento de processo obtidas em momentos diferentes para identificar eventos de início de processo ausentes ou eventos de término de processo ausentes.
18. Método, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que a informação de gráfico é armazenada no banco de dados de gráfico usando uma estrutura de banco de dados de valores-chave.
19. Método, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que compreende adicionalmente: obter uma consulta a respeito de um determinado processo do dispositivo de computação; e determinar uma resposta à consulta com base nas informações do gráfico dentro do banco de dados do gráfico.
20. Método, de acordo com a reivindicação 19, CARACTERIZADO pelo fato de que a consulta é obtida e respondida por um servidor de consulta do sistema de computação.
21. Método, de acordo com a reivindicação 20, CARACTERIZADO pelo fato de que o servidor de consulta fornece um conjunto de interfaces de programação de aplicativo para obter e responder à consulta, o conjunto de interfaces de programação de aplicativo incluindo uma interface de programação de aplicativo de chamada única, uma interface de programação de aplicativo iterativa e uma interface de programação de aplicativos de processamento em lote.
Petição 870200118755, de 23/09/2020, pág. 47/58
PROCESSA
DOR DE FLUXO 112
SERVIDOR
DE
RECEPTOR CONSULTA DE EVENTO 116 108
FILA 1/6 110
BANCO DE
DADOS DE GRÁFICO 114
TEMPO
TEMPO
INTERVALO DE LIXO
TEMPO
INTERVALO DE VARREDURA
INFORMAÇÃO
DE EVENTO DE
PROCESSO Petição 870200118755, de 23/09/2020, pág. 49/58
SIM NÃO
EVENTO ÚNICO
EXTRAIR OBTER LISTA DE EVENTO E
INFORMAÇÃO EXTRAIR INFORMAÇÃO 3/6
ATUALIZAR GRÁFICO IDENTIFICAR EVENTOS
AUSENTES
CHAMADA ÚNICA / CONSULTA Petição 870200118755, de 23/09/2020, pág. 50/58 412
BANCO DE DADOS DE GRAFICO 404 SERVIÇO
DE
CONSULTA 402 CONSULTA INTERATIVA 414 4/6 CONSULTA DE EMPREGO 416
INÍCIO
INÍCIO Petição 870200118755, de 23/09/2020, pág. 51/58
OBTER INFORMAÇÃO DE EVENTO DE PROCESSO
DE UM DISPOSITIVO DE COMPUTAÇÃO
DETERMINAR INFORMAÇÃO DE EVENTO DE
PROCESSO DE UM PRIMEIRO DISPOSITIVO DE
COMPUTAÇÃO
ARMAZENAR A INFORMAÇÃO DE EVENTO DE
PROCESSO DENTRO DE UMA FILA 5/6
FORNECER INFORMAÇÃO DE EVENTO DE
PROCESSO PARA UM SEGUNDO DISPOSITIVO DE
COMPUTAÇÃO
DETERMINAR INFORMAAÇÃO DE GRÁFICO COM
BASE NA INFORMAÇÃO DO EVENTO DE
PROCESSO NA FILA
FIM
ARMAZENA A INFORMAÇÃO DE GRÁFICO
DENTRO DE UM BANCO DE DADOS DE GRÁFICO
FIM
Petição 870200118755, de 23/09/2020, pág. 52/58 Processador (es) INTERFACE DE 604 COMUNICAÇÃO 610 BARRAMENTO 602 6/6
MEMÓRIA ARMAZENAME PRINCIPAL 606 NTO 608
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/927,516 US10769001B2 (en) | 2018-03-21 | 2018-03-21 | System and method for process state processing |
US15/927,104 US10747591B2 (en) | 2018-03-21 | 2018-03-21 | Endpoint process state collector |
US15/927,104 | 2018-03-21 | ||
US15/927,516 | 2018-03-21 | ||
PCT/US2018/068014 WO2019182671A1 (en) | 2018-03-21 | 2018-12-28 | System and method for process state processing |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112020019153A2 true BR112020019153A2 (pt) | 2021-01-05 |
BR112020019153B1 BR112020019153B1 (pt) | 2022-05-03 |
Family
ID=67985087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112020019153-1A BR112020019153B1 (pt) | 2018-03-21 | 2018-12-28 | Sistema e método para coletar estados de processo, e sistema e método para processamento de estado de processo |
Country Status (3)
Country | Link |
---|---|
US (2) | US10769001B2 (pt) |
BR (1) | BR112020019153B1 (pt) |
WO (2) | WO2019182671A1 (pt) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2526501A (en) | 2013-03-01 | 2015-11-25 | Redowl Analytics Inc | Modeling social behavior |
US11888859B2 (en) | 2017-05-15 | 2024-01-30 | Forcepoint Llc | Associating a security risk persona with a phase of a cyber kill chain |
US10999296B2 (en) | 2017-05-15 | 2021-05-04 | Forcepoint, LLC | Generating adaptive trust profiles using information derived from similarly situated organizations |
US10318729B2 (en) | 2017-07-26 | 2019-06-11 | Forcepoint, LLC | Privacy protection during insider threat monitoring |
US10769001B2 (en) | 2018-03-21 | 2020-09-08 | Didi Research America, Llc | System and method for process state processing |
US11314787B2 (en) | 2018-04-18 | 2022-04-26 | Forcepoint, LLC | Temporal resolution of an entity |
US11755584B2 (en) | 2018-07-12 | 2023-09-12 | Forcepoint Llc | Constructing distributions of interrelated event features |
US11810012B2 (en) | 2018-07-12 | 2023-11-07 | Forcepoint Llc | Identifying event distributions using interrelated events |
US10949428B2 (en) | 2018-07-12 | 2021-03-16 | Forcepoint, LLC | Constructing event distributions via a streaming scoring operation |
US11436512B2 (en) | 2018-07-12 | 2022-09-06 | Forcepoint, LLC | Generating extracted features from an event |
US11811799B2 (en) | 2018-08-31 | 2023-11-07 | Forcepoint Llc | Identifying security risks using distributions of characteristic features extracted from a plurality of events |
US11025659B2 (en) | 2018-10-23 | 2021-06-01 | Forcepoint, LLC | Security system using pseudonyms to anonymously identify entities and corresponding security risk related behaviors |
US11171980B2 (en) | 2018-11-02 | 2021-11-09 | Forcepoint Llc | Contagion risk detection, analysis and protection |
CN110806958A (zh) * | 2019-10-24 | 2020-02-18 | 长城计算机软件与系统有限公司 | 一种监控方法、监控装置、存储介质及电子设备 |
US11570197B2 (en) | 2020-01-22 | 2023-01-31 | Forcepoint Llc | Human-centric risk modeling framework |
US11630901B2 (en) | 2020-02-03 | 2023-04-18 | Forcepoint Llc | External trigger induced behavioral analyses |
US11429697B2 (en) | 2020-03-02 | 2022-08-30 | Forcepoint, LLC | Eventually consistent entity resolution |
US11836265B2 (en) | 2020-03-02 | 2023-12-05 | Forcepoint Llc | Type-dependent event deduplication |
US11568136B2 (en) | 2020-04-15 | 2023-01-31 | Forcepoint Llc | Automatically constructing lexicons from unlabeled datasets |
US11516206B2 (en) | 2020-05-01 | 2022-11-29 | Forcepoint Llc | Cybersecurity system having digital certificate reputation system |
US11544390B2 (en) | 2020-05-05 | 2023-01-03 | Forcepoint Llc | Method, system, and apparatus for probabilistic identification of encrypted files |
US11895158B2 (en) | 2020-05-19 | 2024-02-06 | Forcepoint Llc | Cybersecurity system having security policy visualization |
US12061608B2 (en) * | 2020-05-22 | 2024-08-13 | Yahoo Assets Llc | Duplicate detection and replay to ensure exactly-once delivery in a streaming pipeline |
US11704387B2 (en) | 2020-08-28 | 2023-07-18 | Forcepoint Llc | Method and system for fuzzy matching and alias matching for streaming data sets |
US11190589B1 (en) | 2020-10-27 | 2021-11-30 | Forcepoint, LLC | System and method for efficient fingerprinting in cloud multitenant data loss prevention |
CN112286762A (zh) * | 2020-10-30 | 2021-01-29 | 深圳壹账通智能科技有限公司 | 基于云环境的系统信息分析方法、装置、电子设备及介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1183452C (zh) * | 2000-02-24 | 2005-01-05 | 英业达股份有限公司 | 被动式程序监控方法 |
EP1584029A1 (en) | 2003-03-31 | 2005-10-12 | Sap Ag | A method and a computer system for scheduling processes in process chains |
JP5286942B2 (ja) * | 2008-05-30 | 2013-09-11 | 富士通株式会社 | 制御方法、制御プログラム及び情報処理装置 |
CN102004680A (zh) * | 2010-11-23 | 2011-04-06 | 山东中创软件商用中间件股份有限公司 | 一种动态跟踪程序运行状态的方法及一种背板装置 |
US8584254B2 (en) * | 2011-12-08 | 2013-11-12 | Microsoft Corporation | Data access reporting platform for secure active monitoring |
US8819078B2 (en) * | 2012-07-13 | 2014-08-26 | Hewlett-Packard Development Company, L. P. | Event processing for graph-structured data |
US20140019879A1 (en) * | 2013-02-01 | 2014-01-16 | Concurix Corporation | Dynamic Visualization of Message Passing Computation |
WO2014146024A1 (en) * | 2013-03-15 | 2014-09-18 | Datatempest, Llc | Databases and methods of storing, retrieving, and processing data |
WO2015140842A1 (ja) * | 2014-03-20 | 2015-09-24 | 日本電気株式会社 | システムを監視する情報処理装置及び監視方法 |
US20150293764A1 (en) | 2014-04-10 | 2015-10-15 | Omprakash VISVANATHAN | Method and system to compose and execute business rules |
US9798882B2 (en) * | 2014-06-06 | 2017-10-24 | Crowdstrike, Inc. | Real-time model of states of monitored devices |
JP5933797B1 (ja) * | 2015-10-07 | 2016-06-15 | 株式会社ソリトンシステムズ | ログ情報生成装置及びプログラム並びにログ情報抽出装置及びプログラム |
US10171288B2 (en) | 2015-12-18 | 2019-01-01 | International Business Machines Corporation | Diagnosing faults in stateless distributed computing platforms |
US10769001B2 (en) | 2018-03-21 | 2020-09-08 | Didi Research America, Llc | System and method for process state processing |
-
2018
- 2018-03-21 US US15/927,516 patent/US10769001B2/en active Active
- 2018-03-21 US US15/927,104 patent/US10747591B2/en active Active
- 2018-12-28 WO PCT/US2018/068014 patent/WO2019182671A1/en active Application Filing
- 2018-12-28 BR BR112020019153-1A patent/BR112020019153B1/pt active IP Right Grant
- 2018-12-28 WO PCT/US2018/068004 patent/WO2019182670A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20190294481A1 (en) | 2019-09-26 |
US20190294482A1 (en) | 2019-09-26 |
BR112020019153B1 (pt) | 2022-05-03 |
US10747591B2 (en) | 2020-08-18 |
WO2019182670A1 (en) | 2019-09-26 |
US10769001B2 (en) | 2020-09-08 |
WO2019182671A1 (en) | 2019-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112020019153A2 (pt) | Sistema e método para processamento de estado de processo | |
CN110650038B (zh) | 面向多类监管对象的安全事件日志采集处理方法和系统 | |
US10990288B2 (en) | Systems and/or methods for leveraging in-memory storage in connection with the shuffle phase of MapReduce | |
Goodhope et al. | Building LinkedIn's Real-time Activity Data Pipeline. | |
US20160188426A1 (en) | Scalable distributed data store | |
Firouzi et al. | Architecting iot cloud | |
CN112000741A (zh) | 内外网数据交换系统、方法、装置、计算机设备和介质 | |
WO2018233630A1 (zh) | 故障发现 | |
CN102779185A (zh) | 一种高可用分布式全文索引方法 | |
Park et al. | Big data meets hpc log analytics: Scalable approach to understanding systems at extreme scale | |
JPWO2011108695A1 (ja) | 並列データ処理システム、並列データ処理方法及びプログラム | |
US20110271145A1 (en) | Efficient failure detection for long running data transfer jobs | |
Wang et al. | IntegrityMR: Integrity assurance framework for big data analytics and management applications | |
CN104281980A (zh) | 基于分布式计算的火力发电机组远程诊断方法及系统 | |
CN106649000A (zh) | 实时处理引擎的故障恢复方法及相应的服务器 | |
Zhou et al. | A runtime verification based trace-oriented monitoring framework for cloud systems | |
US20230409710A1 (en) | Allow list of container images based on deployment configuration at a container orchestration service | |
Chunduri et al. | Concept generation in formal concept analysis using MapReduce framework | |
CN115373886A (zh) | 服务群组容器停机方法、装置、计算机设备和存储介质 | |
CN113421109A (zh) | 一种业务核对方法、装置、电子设备和存储介质 | |
US10348596B1 (en) | Data integrity monitoring for a usage analysis system | |
Darius et al. | From Data to Insights: A Review of Cloud-Based Big Data Tools and Technologies | |
CN112579413B (zh) | 服务器运行记录变更方法、装置、计算机设备和存储介质 | |
CN111163117A (zh) | 一种基于Zookeeper的对等式调度方法和装置 | |
Abreu | Development of a centralized log management system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B350 | Update of information on the portal [chapter 15.35 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 28/12/2018, OBSERVADAS AS CONDICOES LEGAIS. |