Serviço de Eventos

Serviço que permite a busca dos eventos coletados pelo fSense nas estações de trabalho.

Exportar Eventos - Exemplo de Implementação CSV

Para exportar os eventos no formato .csv, podemos fazer da seguinte maneira.

Configuração do Arquivo Properties.

Definição do Serviço

No arquivo fsense.properties, defina o serviço a ser executado ajustando a propriedade service.name para EVENT_SERVICE.

    # SERVICO A SER EXECUTADO
service.name=EVENT_SERVICE

Método do Serviço

Configure o método do serviço para EXPORT_EVENTS através da propriedade service.method.

    # METODO DO SERVIÇO A SER EXECUTADO
service.method=EXPORT_EVENTS

Tipo de Operação

Especifique o tipo de operação desejado através da propriedade operation.type. Defina o como CSV para exportar para um arquivo CSV ou como DATABASE para exportar para um banco de dados. Para esta implementação, defina CSV.

    # TIPO DE OPERAÇÃO
operation.type=csv

Parâmetros de Exportação

É necessário definir um perÍodo de data para busca de eventos. Estes parâmetros podem ser definidos no arquivo fsense.properties através das propriedades event.initialDate e event.finalDate. Veja o exemplo abaixo para referência:

    # INTERVALO DE DATAS [dd/MM/yyyy] PARA SERVIÇO DE EVENTOS
event.initialDate = 04/12/2023
event.finalDate = 07/12/2023

Também é possível opcionalmente especificar a hora inicial e hora final para a busca de eventos através das propriedades event.initialHour e event.finalHour.

    # INTERVALO DE HORAS PARA SERVIÇO DE EVENTOS
# FAVOR PREENCHER NESTE FORMATO [HH:mm:ss]
# SE VAZIO SE CONSIDERA ENTRE 00:00:00 e 23:59:59
event.initialHour =
event.finalHour =

É possível buscar eventos com base no horário em que ocorreram na máquina do usuário, ou com base que foi dada entrada no sistema. Se desejar que os eventos sejam buscados com base no momento que ocorreram na máquina do usuário, defina a propriedade event.findByCreationDate como true.

    # SE BUSCA POR DATA DE CRIAÇÃO SELECIONE [true/false]
# POR PADRAO FALSE
event.findByCreationDate=false

Também é possível filtrar por um usuário específico. Para isso basta informar na propriedade event.login o usuário que deseja filtrar.

    #FILTRA POR LOGIN DO USUÁRIO. Exemplo: event.login=maria_silva
event.login=

Execução da Aplicação

Após configurar o arquivo fsense.properties, execute a aplicação. A aplicação realizará requisições HTTP à API fSense para obter os eventos e gerará um arquivo CSV como nome events_{ANO_MES_DIA}.csv.

    ========================================================
SELECTED SERVICE [EVENT_SERVICE]
========================================================
OPERATION TYPE: CSV
========================================================
SELECTED METHOD [EXPORT_EVENTS]
Getting events of day: 04-12-2023
find by creation date: false
token is valid?: false
========================================================
Starting authentication process
Getting access token
Token received.
ba88697a-1c96-4a31-93b7-93cfae727ccb
========================================================
AUTHENTICATION SUCCESSFULLY
========================================================
Nº of records found: 1662
Nº pages found: 1
Get events page 1/1
========================================================
File generated: events_2023-12-04.csv
Status: successfully saved
File saved in path: ./src/main/resources/files/export/events_2023-12-04.csv
========================================================
EXPORT EVENTS FINISHED SUCCESSFULLY
========================================================
End of execution.

Os arquivos são armazenados no diretório src/main/resources/files/export/.

Verificação da Operação

Após a execução da aplicação, abra o arquivo gerado para verificar os eventos exportados. O arquivo exportado terá uma estrutura semelhante à do exemplo abaixo:

'application','login','processName','evtDurationMilliseconds','host','url','machine','internalIp','evtFired','evtStopped','creationDate','mouseClicksPerMillisecond','keystrokesPerMillisecond','keystrokesCount','mouseClicksCount'
'Lock Time','maria_silva','Lock Time','47089016','_SEARCHING_','','N-TEC-MARIA','172.25.128.1','2024-09-05T03:00:00.000+00:00','2024-09-05T16:04:49.068+00:00','2024-09-05T03:05:02.901+00:00','0.0','0.0','0','0'
'Lock Time','maria_silva','Lock Time','1197831','_SEARCHING_','','N-TEC-MARIA','172.25.128.1','2024-09-05T16:04:49.068+00:00','2024-09-05T16:24:46.900+00:00','2024-09-05T16:24:59.111+00:00','','','',''
'Google Chrome','maria_silva','chrome','1399','_SEARCHING_','','N-TEC-MARIA','172.25.128.1','2024-09-05T16:24:46.900+00:00','2024-09-05T16:24:48.299+00:00','2024-09-05T16:24:59.111+00:00','0.0','0.0','0','0'
'Java(TM) Platform SE binary','maria_silva','jabswitch','67','','','N-TEC-MARIA','172.25.128.1','2024-09-05T16:24:48.299+00:00','2024-09-05T16:24:48.366+00:00','2024-09-05T16:24:59.111+00:00','0.0','0.0','0','0'
'Google Chrome','maria_silva','chrome','3964','_SEARCHING_','','N-TEC-MARIA','172.25.128.1','2024-09-05T16:24:48.366+00:00','2024-09-05T16:24:52.330+00:00','2024-09-05T16:25:17.015+00:00','2.522704339051463','0.0','0','1'
'Microsoft Teams','maria_silva','ms-teams','369994','','','N-TEC-MARIA','172.25.128.1','2024-09-05T16:24:52.331+00:00','2024-09-05T16:31:02.326+00:00','2024-09-05T16:31:11.396+00:00','2.1621913786577125E-5','0.0','0','8'
'Microsoft Edge WebView2','maria_silva','msedgewebview2','147','','','N-TEC-MARIA','172.25.128.1','2024-09-05T16:31:02.326+00:00','2024-09-05T16:31:02.473+00:00','2024-09-05T16:31:11.396+00:00','0.0','0.0','0','0'
'Microsoft Teams','maria_silva','ms-teams','548484','','','N-TEC-MARIA','172.25.128.1','2024-09-05T16:31:02.473+00:00','2024-09-05T16:40:10.957+00:00','2024-09-05T16:40:36.145+00:00','3.6464144806411857E-6','0.0','0','2'
'Windows Explorer','maria_silva','explorer','416','','','N-TEC-MARIA','172.25.128.1','2024-09-05T16:40:10.957+00:00','2024-09-05T16:40:11.373+00:00','2024-09-05T16:40:36.145+00:00','0.0','0.0','0','0'
'Search application','maria_silva','SearchApp','4947','','','N-TEC-MARIA','172.25.128.1','2024-09-05T16:40:11.373+00:00','2024-09-05T16:40:16.320+00:00','2024-09-05T16:40:41.668+00:00','2.0214271275520516','4.042854255104103','2','1'
'Microsoft Excel','maria_silva','EXCEL','15553','','','N-TEC-MARIA','172.25.128.1','2024-09-05T16:40:18.223+00:00','2024-09-05T16:40:33.776+00:00','2024-09-05T16:40:41.668+00:00','0.0','0.0','0','0'
'Idle Time','maria_silva','Idle Time','837122','','','N-TEC-MARIA','172.25.128.1','2024-09-05T16:40:33.776+00:00','2024-09-05T16:54:30.899+00:00','2024-09-05T16:54:53.663+00:00','0.0','0.0','0','0'

Exportar Eventos - Exemplo de Implementação de Banco de Dados

Para exportar os eventos fazendo a persistência no banco de dados, podemos fazer da seguinte maneira.

Configuração do Arquivo Properties.

Definição do Serviço

No arquivo fsense.properties, defina o serviço a ser executado ajustando a propriedade service.name para EVENT_SERVICE.

    # SERVICO A SER EXECUTADO
service.name=EVENT_SERVICE

Método do Serviço

Configure o método do serviço para EXPORT_EVENTS através da propriedade service.method.

    # METODO DO SERVIÇO A SER EXECUTADO
service.method=EXPORT_EVENTS

Tipo de Operação

Especifique o tipo de operação desejado através da propriedade operation.type. Defina o como CSV para exportar para um arquivo CSV ou como DATABASE para exportar para um banco de dados. Para esta implementação, defina DATABASE.

    # TIPO DE OPERAÇÃO
operation.type=database

Parâmetros de Exportação

É necessário definir um perÍodo de data para busca de eventos. Estes parâmetros podem ser definidos no arquivo fsense.properties através das propriedades event.initialDate e event.finalDate. Veja o exemplo abaixo para referência:

    # INTERVALO DE DATAS [dd/MM/yyyy] PARA SERVIÇO DE EVENTOS
event.initialDate = 04/12/2023
event.finalDate = 07/12/2023

Também é possível opcionalmente especificar a hora inicial e hora final para a busca de eventos através das propriedades event.initialHour e event.finalHour.

    # INTERVALO DE HORAS PARA SERVIÇO DE EVENTOS
# FAVOR PREENCHER NESTE FORMATO [HH:mm:ss]
# SE VAZIO SE CONSIDERA ENTRE 00:00:00 e 23:59:59
event.initialHour =
event.finalHour =

É possível buscar eventos com base no horário em que ocorreram na máquina do usuário, ou com base que foi dada entrada no sistema. Se desejar que os eventos sejam buscados com base no momento que ocorreram na máquina do usuário, marque esta opção como true.

    # SE BUSCA POR DATA DE CRIAÇÃO SELECIONE [true/false]
# POR PADRÃO FALSE
event.findByCreationDate=false

Também é possível filtrar por um usuário específico. Para isso basta informar no parâmetro event.login o usuário que deseja filtrar.

    #FILTRA POR LOGIN DO USUÁRIO. Exemplo: event.login=44944_wester
event.login=

Execução da Aplicação

Após configurar o arquivo fsense.properties, execute a aplicação. A aplicação realizará requisições HTTP à API fSense para obter os dados de eventos e em seguida fará a persistência dos dados no banco.

    ========================================================
SELECTED SERVICE [EVENT_SERVICE]
========================================================
OPERATION TYPE: DATABASE
========================================================
SELECTED METHOD [EXPORT_EVENTS]
Getting events of day: 04-12-2023
find by creation date: false
token is valid?: false
========================================================
Starting authentication process
Getting access token
Token received.
ba88697a-1c96-4a31-93b7-93cfae727ccb
========================================================
AUTHENTICATION SUCCESSFULLY
========================================================
Nº of records found: 1662
Nº pages found: 1
Get events page 1/1
========================================================
SAVING ON DATABASE
========================================================
Open database connection
Saving on tb_event
Update Count: 1662
Database connection close
========================================================
SAVING DATABASE EVENTS FINISHED SUCCESSFULLY
========================================================
End of execution.

Verificação da Operação

Após a execução da aplicação, abra a ferramenta de banco de dados de sua preferência e faça uma consulta na tabela tb_event.

    SELECT * FROM tb_event;

A tabela terá uma estrutura semelhante à esta:

applicationloginprocessNameevtDurationMillisecondshosturlmachineinternalIpevtFiredevtStoppedcreationDatemouseClicksPerMillisecondkeystrokesPerMillisecondkeystrokesCountmouseClicksCount
Lock Timemaria_silvaLock Time47089016SEARCHINGN-TEC-MARIA172.25.128.12024-09-05T03:00:00.000+00:002024-09-05T16:04:49.068+00:002024-09-05T03:05:02.901+00:000.00.000
Lock Timemaria_silvaLock Time1197831SEARCHINGN-TEC-MARIA172.25.128.12024-09-05T16:04:49.068+00:002024-09-05T16:24:46.900+00:002024-09-05T16:24:59.111+00:00
Google Chromemaria_silvachrome1399SEARCHINGN-TEC-MARIA172.25.128.12024-09-05T16:24:46.900+00:002024-09-05T16:24:48.299+00:002024-09-05T16:24:59.111+00:000.00.000
Java(TM) Platform SE binarymaria_silvajabswitch67N-TEC-MARIA172.25.128.12024-09-05T16:24:48.299+00:002024-09-05T16:24:48.366+00:002024-09-05T16:24:59.111+00:000.00.000
Windows Explorermaria_silvaexplorer1N-TEC-MARIA172.25.128.12024-09-05T16:24:52.330+00:002024-09-05T16:24:52.331+00:002024-09-05T16:25:17.015+00:000.00.00654
Microsoft Teamsmaria_silvams-teams369994N-TEC-MARIA172.25.128.12024-09-05T16:24:52.331+00:002024-09-05T16:31:02.326+00:002024-09-05T16:31:11.396+00:0021620.00245
Microsoft Edge WebView2maria_silvamsedgewebview2147N-TEC-MARIA172.25.128.12024-09-05T16:31:02.326+00:002024-09-05T16:31:02.473+00:002024-09-05T16:31:11.396+00:000.00.00252
Microsoft Teamsmaria_silvams-teams548484N-TEC-MARIA172.25.128.12024-09-05T16:31:02.473+00:002024-09-05T16:40:10.957+00:002024-09-05T16:40:36.145+00:0036460.00864