Mudanças entre as edições de "Elastic Btracker"

De MSTECH wiki
Ir para: navegação, pesquisa
(Apagando todos os documentos do mapeamento)
(Ambientes)
 
(26 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
 +
== Ambientes ==
 +
Configuração: Tabela ''PARAMETRO'' do BlueMonitor
 +
 +
https://wiki.mstech.com.br/index.php/BlueMonitorAPI#Inventory
 +
 +
== Aplicativos úteis ==
 +
Sense - Google Chrome
 +
https://chrome.google.com/webstore/detail/sense-beta/lhjgkmllcaadmopgmanpapmpjgmfcfig
 +
 +
Plugin client rest, parecido com o PostMan, facilita as queries para o elasticSearch
 +
 +
== Criando mapeamento (estrutura do índice) ==
 +
Criando o índice chamado "bluemonitor", e o mapeamento chamado "report":
 +
 +
no Sense:
 +
 +
URL: http://192.168.46.12:9200
 +
Body:
 +
 +
PUT bluemonitor
 +
{
 +
  "aliases": {},
 +
  "mappings": {
 +
    "report": {
 +
        "properties": {
 +
          "activeWindowName": {
 +
              "type": "keyword"
 +
          },
 +
          "activeWindowTitle": {
 +
              "type": "text",
 +
              "fields": {
 +
                "keyword": {
 +
                    "type": "keyword",
 +
                    "ignore_above": 256
 +
                }
 +
              }
 +
          },
 +
          "diretoriaID": {
 +
              "type": "keyword"
 +
          },
 +
          "diretoriaName": {
 +
              "type": "text",
 +
              "fields": {
 +
                "keyword": {
 +
                    "type": "keyword",
 +
                    "ignore_above": 256
 +
                }
 +
              }
 +
          },
 +
          "finalUseTimeStamp": {
 +
              "type": "date"
 +
          },
 +
          "macAddress": {
 +
              "type": "text",
 +
              "fields": {
 +
                "keyword": {
 +
                    "type": "keyword",
 +
                    "ignore_above": 256
 +
                }
 +
              }
 +
          },
 +
          "peopleName": {
 +
              "type": "text",
 +
              "fields": {
 +
                "keyword": {
 +
                    "type": "keyword",
 +
                    "ignore_above": 256
 +
                }
 +
              }
 +
          },
 +
          "processList": {
 +
              "type": "text",
 +
              "fields": {
 +
                "keyword": {
 +
                    "type": "keyword",
 +
                    "ignore_above": 256
 +
                }
 +
              }
 +
          },
 +
          "schoolID": {
 +
              "type": "keyword"
 +
          },
 +
          "schoolName": {
 +
              "type": "keyword"
 +
          },
 +
          "systemOSVersion": {
 +
              "type": "text",
 +
              "fields": {
 +
                "keyword": {
 +
                    "type": "keyword",
 +
                    "ignore_above": 256
 +
                }
 +
              }
 +
          },
 +
          "timeSpent": {
 +
              "type": "long"
 +
          },
 +
          "userName": {
 +
              "type": "text",
 +
              "fields": {
 +
                "keyword": {
 +
                    "type": "keyword",
 +
                    "ignore_above": 256
 +
                }
 +
              }
 +
          },
 +
          "userType": {
 +
              "type": "keyword"
 +
          }
 +
        }
 +
    }
 +
  }
 +
}
 +
 +
== Gravando um documento no formato Btracker no Elastic ==
 +
Server (url): http://192.168.46.12:9200/
 +
 +
Body:
 +
 +
POST /bluemonitor/report
 +
{
 +
              "userName": "marriely.garcia",
 +
              "peopleName": "",
 +
              "processList": null,
 +
              "activeWindowName": "chrome",
 +
              "activeWindowTitle": "Guia para geração de relatórios de bugs do Youtrack - MSTECH wiki - Google Chrome",
 +
              "macAddress": "00:00:00:00:00:00:00:E0 | 78:2B:CB:C3:1E:55 | 00:00:00:00:00:00:00:E0 | 00:15:5D:C4:73:C5 | ",
 +
              "finalUseTimeStamp": "2016-11-24T09:15:31Z",
 +
              "timeSpent": 1,
 +
              "systemOSVersion": "Windows 8.1 6.3",
 +
              "schoolID": "30333",
 +
              "schoolName": "ESCOLA DA VIDA                        ",
 +
              "schoolNameCode": "30333|||ESCOLA DA VIDA                        ",
 +
              "diretoriaID": "20111",
 +
              "diretoriaName": "BONIFACIO",
 +
              "userLogin": "Emerson",
 +
              "userType": "aluno"
 +
           
 +
}
 +
 +
 +
== Apagando todos os documentos do mapeamento ==
 +
Server (url): http://192.168.46.12:9200
 +
body:
 +
 +
DELETE bluemonitor
 +
 +
 +
== Listando registros (GET) ==
 +
* no browser: http://192.168.46.3:9200/bluemonitor/report/_search
 +
* no Sense:
 +
(o sense considera os espaços e quebras de linha, caso tenha algo errado, ele não dá o comando)
 +
 +
GET bluemonitor/report/_search
 +
{
 +
  "query": { "match_all": {} }
 +
}
 +
 +
== Correção Erros ==
 +
Caso o serviço não esteja iniciando, verificar primeiro:
 +
1 - services.msc -> Serviço Elastic está iniciado?
 +
 +
1a - Se iniciar, atualize a tela do services.msc algumas vezes com o F5, se ele parar de rodar, é porque pode estar com incompatibilidade de IPs.
 +
 +
2 - Abrir o arquivo "elasticsearch.yml" NO WORDPAD (NÃO USAR NOTEPAD) em Elastic\config, vá para a última linha, verifique o IP, e se o mesmo pode ser usado. é o IP de saída, por onde as outras máquinas vão acessar o server elastic.
 +
 +
3 - Ir nas configurações de rede: Painel de Controle\Rede e Internet\Conexões de Rede
 +
localize a rede ativa atual, botão direito -> Propriedades -> Protocolo TCP/IP Versão 4 (TCP/IPv4) -> Propriedades.
 +
 +
4 - Marcar: "usar o seguinte endereço de IP";
 +
a - Endereço IP: (o mesmo do elasticsearch.yml): ex: 192.168.46.12
 +
b - Máscara de sub-rede: 255.255.255.0
 +
c - 192.168.46.1
 +
d - Usar os seguintes endereços de servidor DNS -> servidor dns preferencial: 192.168.250.1
 +
 +
Caso não funcione, ou você não saiba o IP correto de saída, consulte o GTI.
 +
 
== Introdução (Histórico e-mails) ==
 
== Introdução (Histórico e-mails) ==
 +
 +
 +
Em 8 de fevereiro de 2017 13:36, Thiago Froes <thiago.froes@mstech.com.br> escreveu:
 +
Olá Casella, tudo bem?
 +
 +
Segue abaixo a estrutura do índice que criamos nos ambiente de homologação e produção que obtiveram sucesso na execução dos relatórios:
 +
 +
/*******************************************************************************/
 +
Criar Indice
 +
/*******************************************************************************/
 +
 +
PUT bluemonitor
 +
{
 +
  "aliases": {},
 +
  "mappings": {
 +
      "report": {
 +
        "properties": {
 +
            "activeWindowName": {
 +
              "type": "keyword"
 +
            },
 +
            "activeWindowTitle": {
 +
              "type": "text",
 +
              "fields": {
 +
                  "keyword": {
 +
                    "type": "keyword",
 +
                    "ignore_above": 256
 +
                  }
 +
              }
 +
            },
 +
            "diretoriaID": {
 +
              "type": "keyword"
 +
            },
 +
            "diretoriaName": {
 +
              "type": "text",
 +
              "fields": {
 +
                  "keyword": {
 +
                    "type": "keyword",
 +
                    "ignore_above": 256
 +
                  }
 +
              }
 +
            },
 +
            "finalUseTimeStamp": {
 +
              "type": "date"
 +
            },
 +
            "macAddress": {
 +
              "type": "text",
 +
              "fields": {
 +
                  "keyword": {
 +
                    "type": "keyword",
 +
                    "ignore_above": 256
 +
                  }
 +
              }
 +
            },
 +
            "peopleName": {
 +
              "type": "text",
 +
              "fields": {
 +
                  "keyword": {
 +
                    "type": "keyword",
 +
                    "ignore_above": 256
 +
                  }
 +
              }
 +
            },
 +
            "processList": {
 +
              "type": "text",
 +
              "fields": {
 +
                  "keyword": {
 +
                    "type": "keyword",
 +
                    "ignore_above": 256
 +
                  }
 +
              }
 +
            },
 +
            "schoolID": {
 +
              "type": "keyword"
 +
            },
 +
            "schoolName": {
 +
              "type": "keyword"
 +
            },
 +
            "systemOSVersion": {
 +
              "type": "text",
 +
              "fields": {
 +
                  "keyword": {
 +
                    "type": "keyword",
 +
                    "ignore_above": 256
 +
                  }
 +
              }
 +
            },
 +
            "timeSpent": {
 +
              "type": "long"
 +
            },
 +
            "userName": {
 +
              "type": "text",
 +
              "fields": {
 +
                  "keyword": {
 +
                    "type": "keyword",
 +
                    "ignore_above": 256
 +
                  }
 +
              }
 +
            },
 +
            "userType": {
 +
              "type": "keyword"
 +
            }
 +
        }
 +
      }
 +
  }
 +
}
 +
 +
Obrigado
 +
 +
 +
 +
 
2016-12-27 17:50 GMT-02:00 André Ruz <andre.ruz@mstech.com.br>:
 
2016-12-27 17:50 GMT-02:00 André Ruz <andre.ruz@mstech.com.br>:
 
Depois que o Casella enviou pra mim o commando put que o btracker gera, suportando também o json que o Antônio enviou no e-mail abaixo:
 
Depois que o Casella enviou pra mim o commando put que o btracker gera, suportando também o json que o Antônio enviou no e-mail abaixo:
Linha 9: Linha 297:
 
   
 
   
  
{  
+
{  
 
   "mappings":{  
 
   "mappings":{  
 
       "report":{  
 
       "report":{  
Linha 79: Linha 367:
 
       }
 
       }
 
   }
 
   }
}
+
}
  
 
   
 
   
Linha 178: Linha 466:
  
  
<appSettings>
+
<appSettings>
 
     <add key="urlElasticSearchBTracker" value="http://192.168.44.3:9200/bluemonitor"/>
 
     <add key="urlElasticSearchBTracker" value="http://192.168.44.3:9200/bluemonitor"/>
</appSettings>
+
</appSettings>
  
  
Linha 188: Linha 476:
  
 
PUT http://192.168.44.3:9200  
 
PUT http://192.168.44.3:9200  
{
+
{
 
   "mappings": {
 
   "mappings": {
 
       "btracker_app": {
 
       "btracker_app": {
Linha 210: Linha 498:
 
       }
 
       }
 
   }
 
   }
}
+
}
  
 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Linha 229: Linha 517:
  
  
{
+
{
 
               "userName": "marriely.garcia",
 
               "userName": "marriely.garcia",
 
               "peopleName": "",
 
               "peopleName": "",
Linha 246: Linha 534:
 
               "userLogin": "Emerson",
 
               "userLogin": "Emerson",
 
               "userType": "aluno"
 
               "userType": "aluno"
}
+
}
  
 
Porém, para desenvolver todos os relatórios do BTracker, estou utilizando apenas as propriedades abaixo.
 
Porém, para desenvolver todos os relatórios do BTracker, estou utilizando apenas as propriedades abaixo.
  
{
+
{
 
               "activeWindowName": "chrome",
 
               "activeWindowName": "chrome",
 
               "timeSpent": 1,
 
               "timeSpent": 1,
Linha 256: Linha 544:
 
               "diretoriaID": "20111",
 
               "diretoriaID": "20111",
 
               "userType": "aluno"
 
               "userType": "aluno"
}
+
}
  
 
O propósito de cada atributo é:
 
O propósito de cada atributo é:
Linha 280: Linha 568:
 
Antônio Marcos
 
Antônio Marcos
  
== Aplicativos úteis ==
+
== Comandos Python (DarthFaker) ==
Sense - Google Chrome
+
App para gerar uma massa de dados em um índice pré-existente no server elastic.
https://chrome.google.com/webstore/detail/sense-beta/lhjgkmllcaadmopgmanpapmpjgmfcfig
+
  
== Criando mapeamento (estrutura do índice) ==
+
=== Instalação ===
Criando o índice chamado "bluemonitor", e o mapeamento chamado "report":
+
- baixar o Python v 2.7.13: https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi
 +
- instalar
  
no Sense:
+
=== Compilando ===
  
URL: http://192.168.46.12:9200/bluemonitor
+
Abrir o gitbash, ir na raiz da aplicação onde tem o arquivo __init__.py (exemplo)
Body:
+
  
PUT
+
ruz@MS-N2437 MINGW64 /c/Documents and Settings/ruz/Documents/Ruz/MSTECH/BlueMonitorapi/Inventario/elasticsearch/elasticsearch
{
+
  "mappings":{
+
      "report":{
+
        "properties":{
+
            "finalUseTimeStamp":{
+
              "format":"dateOptionalTime",
+
              "type":"date"
+
            },
+
            "processList":{
+
              "index":"not_analyzed",
+
              "type":"string"
+
            },
+
            "timeSpent":{
+
              "type":"keyword"
+
            },
+
            "peopleName":{
+
              "index":"not_analyzed",
+
              "type":"string"
+
            },
+
            "systemOSVersion":{
+
              "index":"not_analyzed",
+
              "type":"string"
+
            },
+
            "diretoriaID":{
+
              "index":"not_analyzed",
+
              "type":"keyword"
+
            },
+
            "userName":{
+
              "index":"not_analyzed",
+
              "type":"string"
+
            },
+
            "schoolNameCode":{
+
              "index":"not_analyzed",
+
              "type":"string"
+
            },
+
            "activeWindowName":{
+
              "index":"not_analyzed",
+
              "type":"string"
+
            },
+
            "activeWindowTitle":{
+
              "index":"not_analyzed",
+
              "type":"string"
+
            },
+
            "userLogin":{
+
              "index":"not_analyzed",
+
              "type":"string"
+
            },
+
            "macAddress":{
+
              "index":"not_analyzed",
+
              "type":"string"
+
            },
+
            "diretoriaName":{
+
              "index":"not_analyzed",
+
              "type":"string"
+
            },
+
            "schoolID":{
+
              "index":"not_analyzed",
+
              "type":"keyword"
+
            },
+
            "userType":{
+
              "index":"not_analyzed",
+
              "type":"keyword"
+
            },
+
            "schoolName":{
+
              "index":"not_analyzed",
+
              "type":"string"
+
            }
+
        }
+
      }
+
  }
+
}
+
  
=== Teste ===
+
, e digitar:
http://192.168.46.12:9200/bluemonitor/report/_search
+
  
== Gravando um documento no formato Btracker no Elastic ==
+
python __init__.py
Server (url): http://192.168.46.12:9200/
+
  
Body:
+
caso venha a mensagem de erro de que não foi possível encontrar o nome 'python', talvez foi por causa da instalação, em que ele não ficou como variável de ambiente, então digite:
  
POST /bluemonitor/report
+
/c/Python27/python.exe __init__.py
{
+
              "userName": "marriely.garcia",
+
              "peopleName": "",
+
              "processList": null,
+
              "activeWindowName": "chrome",
+
              "activeWindowTitle": "Guia para geração de relatórios de bugs do Youtrack - MSTECH wiki - Google Chrome",
+
              "macAddress": "00:00:00:00:00:00:00:E0 | 78:2B:CB:C3:1E:55 | 00:00:00:00:00:00:00:E0 | 00:15:5D:C4:73:C5 | ",
+
              "finalUseTimeStamp": "2016-11-24T09:15:31Z",
+
              "timeSpent": 1,
+
              "systemOSVersion": "Windows 8.1 6.3",
+
              "schoolID": "30333",
+
              "schoolName": "ESCOLA DA VIDA                        ",
+
              "schoolNameCode": "30333|||ESCOLA DA VIDA                        ",
+
              "diretoriaID": "20111",
+
              "diretoriaName": "BONIFACIO",
+
              "userLogin": "Emerson",
+
              "userType": "aluno"
+
           
+
        }
+
  
=== Teste ===
+
=== Importando módulos externos ===
* no browser: http://192.168.46.12:9200/bluemonitor/report/_search
+
* no Sense:
+
server: http://192.168.46.12:9200/bluemonitor/report
+
body:
+
GET _search
+
{
+
  "query": { "match_all": {} }
+
}
+
  
== Apagando todos os documentos do mapeamento ==
+
Caso dê erro de importação, é necessário importar o módulo. Ex:
Server (url): http://192.168.46.12:9200
+
body: DELETE bluemonitor
+
  
=== testando ===
+
Erro:
(o sense considera os espaços e quebras de linha, caso estejam errado, ele não dá o comando)
+
Traceback (most recent call last):
 +
  File "__init__.py", line 5, in <module>
 +
    from darthfaker import Faker
  
  GET bluemonitor/report/_search
+
Executar o instalador de módulos externos do Python, o "easy_install.exe":
{
+
 
  "query": { "match_all": {} }
+
  /c/Python27/Scripts/easy_install.exe elasticsearch
  }
+
 
 +
até acabar todos os erros.
 +
 
 +
=== Busca ===
 +
 
 +
No git bash, entrar na pasta raiz que será efetuada a busca e entrar:
 +
 
 +
  $ grep -nir activeWindowName *
 +
 
 +
Neste exemplo, ele busca pelas ocorrências "activeWindowName" em todos os arquivos da pasta corrente e subpastas de onde está sendo executado.

Edição atual tal como às 19h17min de 7 de novembro de 2017

Ambientes

Configuração: Tabela PARAMETRO do BlueMonitor
https://wiki.mstech.com.br/index.php/BlueMonitorAPI#Inventory

Aplicativos úteis

Sense - Google Chrome https://chrome.google.com/webstore/detail/sense-beta/lhjgkmllcaadmopgmanpapmpjgmfcfig

Plugin client rest, parecido com o PostMan, facilita as queries para o elasticSearch

Criando mapeamento (estrutura do índice)

Criando o índice chamado "bluemonitor", e o mapeamento chamado "report":

no Sense:

URL: http://192.168.46.12:9200 Body:

PUT bluemonitor
{
 "aliases": {},
 "mappings": {
    "report": {
       "properties": {
          "activeWindowName": {
             "type": "keyword"
          },
          "activeWindowTitle": {
             "type": "text",
             "fields": {
                "keyword": {
                   "type": "keyword",
                   "ignore_above": 256
                }
             }
          },
          "diretoriaID": {
             "type": "keyword"
          },
          "diretoriaName": {
             "type": "text",
             "fields": {
                "keyword": {
                   "type": "keyword",
                   "ignore_above": 256
                }
             }
          },
          "finalUseTimeStamp": {
             "type": "date"
          },
          "macAddress": {
             "type": "text",
             "fields": {
                "keyword": {
                   "type": "keyword",
                   "ignore_above": 256
                }
             }
          },
          "peopleName": {
             "type": "text",
             "fields": {
                "keyword": {
                   "type": "keyword",
                   "ignore_above": 256
                }
             }
          },
          "processList": {
             "type": "text",
             "fields": {
                "keyword": {
                   "type": "keyword",
                   "ignore_above": 256
                }
             }
          },
          "schoolID": {
             "type": "keyword"
          },
          "schoolName": {
             "type": "keyword"
          },
          "systemOSVersion": {
             "type": "text",
             "fields": {
                "keyword": {
                   "type": "keyword",
                   "ignore_above": 256
                }
             }
          },
          "timeSpent": {
             "type": "long"
          },
          "userName": {
             "type": "text",
             "fields": {
                "keyword": {
                   "type": "keyword",
                   "ignore_above": 256
                }
             }
          },
          "userType": {
             "type": "keyword"
          }
       }
    }
 }
}

Gravando um documento no formato Btracker no Elastic

Server (url): http://192.168.46.12:9200/

Body:

POST /bluemonitor/report
{
              "userName": "marriely.garcia",
              "peopleName": "",
              "processList": null,
              "activeWindowName": "chrome",
              "activeWindowTitle": "Guia para geração de relatórios de bugs do Youtrack - MSTECH wiki - Google Chrome",
              "macAddress": "00:00:00:00:00:00:00:E0 | 78:2B:CB:C3:1E:55 | 00:00:00:00:00:00:00:E0 | 00:15:5D:C4:73:C5 | ",
              "finalUseTimeStamp": "2016-11-24T09:15:31Z",
              "timeSpent": 1,
              "systemOSVersion": "Windows 8.1 6.3",
              "schoolID": "30333",
              "schoolName": "ESCOLA DA VIDA                         ",
              "schoolNameCode": "30333|||ESCOLA DA VIDA                         ",
              "diretoriaID": "20111",
              "diretoriaName": "BONIFACIO",
              "userLogin": "Emerson",
              "userType": "aluno"
           
}


Apagando todos os documentos do mapeamento

Server (url): http://192.168.46.12:9200 body:

DELETE bluemonitor


Listando registros (GET)

(o sense considera os espaços e quebras de linha, caso tenha algo errado, ele não dá o comando)

GET bluemonitor/report/_search
{
 "query": { "match_all": {} }
}

Correção Erros

Caso o serviço não esteja iniciando, verificar primeiro:

1 - services.msc -> Serviço Elastic está iniciado?
1a - Se iniciar, atualize a tela do services.msc algumas vezes com o F5, se ele parar de rodar, é porque pode estar com incompatibilidade de IPs.
2 - Abrir o arquivo "elasticsearch.yml" NO WORDPAD (NÃO USAR NOTEPAD) em Elastic\config, vá para a última linha, verifique o IP, e se o mesmo pode ser usado. é o IP de saída, por onde as outras máquinas vão acessar o server elastic.
3 - Ir nas configurações de rede: Painel de Controle\Rede e Internet\Conexões de Rede

localize a rede ativa atual, botão direito -> Propriedades -> Protocolo TCP/IP Versão 4 (TCP/IPv4) -> Propriedades.

4 - Marcar: "usar o seguinte endereço de IP";
a - Endereço IP: (o mesmo do elasticsearch.yml): ex: 192.168.46.12
b - Máscara de sub-rede: 255.255.255.0
c - 192.168.46.1
d - Usar os seguintes endereços de servidor DNS -> servidor dns preferencial: 192.168.250.1

Caso não funcione, ou você não saiba o IP correto de saída, consulte o GTI.

Introdução (Histórico e-mails)

Em 8 de fevereiro de 2017 13:36, Thiago Froes <thiago.froes@mstech.com.br> escreveu: Olá Casella, tudo bem?

Segue abaixo a estrutura do índice que criamos nos ambiente de homologação e produção que obtiveram sucesso na execução dos relatórios:

/*******************************************************************************/
Criar Indice
/*******************************************************************************/

PUT bluemonitor
{
  "aliases": {},
  "mappings": {
     "report": {
        "properties": {
           "activeWindowName": {
              "type": "keyword"
           },
           "activeWindowTitle": {
              "type": "text",
              "fields": {
                 "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                 }
              }
           },
           "diretoriaID": {
              "type": "keyword"
           },
           "diretoriaName": {
              "type": "text",
              "fields": {
                 "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                 }
              }
           },
           "finalUseTimeStamp": {
              "type": "date"
           },
           "macAddress": {
              "type": "text",
              "fields": {
                 "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                 }
              }
           },
           "peopleName": {
              "type": "text",
              "fields": {
                 "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                 }
              }
           },
           "processList": {
              "type": "text",
              "fields": {
                 "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                 }
              }
           },
           "schoolID": {
              "type": "keyword"
           },
           "schoolName": {
              "type": "keyword"
           },
           "systemOSVersion": {
              "type": "text",
              "fields": {
                 "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                 }
              }
           },
           "timeSpent": {
              "type": "long"
           },
           "userName": {
              "type": "text",
              "fields": {
                 "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                 }
              }
           },
           "userType": {
              "type": "keyword"
           }
        }
     }
  }
}

Obrigado



2016-12-27 17:50 GMT-02:00 André Ruz <andre.ruz@mstech.com.br>: Depois que o Casella enviou pra mim o commando put que o btracker gera, suportando também o json que o Antônio enviou no e-mail abaixo:


PUT: http://10.17.15.150:9200/bluemonitor


{ 
  "mappings":{ 
     "report":{ 
        "properties":{ 
           "finalUseTimeStamp":{ 
              "format":"dateOptionalTime",
              "type":"date"
           },
           "processList":{ 
              "index":"not_analyzed",
              "type":"string"
           },
           "timeSpent":{ 
              "type":"keyword"
           },
           "peopleName":{ 
              "index":"not_analyzed",
              "type":"string"
           },
           "systemOSVersion":{ 
              "index":"not_analyzed",
              "type":"string"
           },
           "diretoriaID":{ 
              "index":"not_analyzed",
              "type":"keyword"
           },
           "userName":{ 
              "index":"not_analyzed",
              "type":"string"
           },
           "schoolNameCode":{ 
              "index":"not_analyzed",
              "type":"string"
           },
           "activeWindowName":{ 
              "index":"not_analyzed",
              "type":"string"
           },
           "activeWindowTitle":{ 
              "index":"not_analyzed",
              "type":"string"
           },
           "userLogin":{ 
              "index":"not_analyzed",
              "type":"string"
           },
           "macAddress":{ 
              "index":"not_analyzed",
              "type":"string"
           },
           "diretoriaName":{ 
              "index":"not_analyzed",
              "type":"string"
           },
           "schoolID":{ 
              "index":"not_analyzed",
              "type":"keyword"
           },
           "userType":{ 
              "index":"not_analyzed",
              "type":"keyword"
           },
           "schoolName":{ 
              "index":"not_analyzed",
              "type":"string"
           }
        }
     }
  }
}


A configuração ocorreu com sucesso. Ainda temos pendente de um problema com um dos filtros que no nosso ambiente de backup funciona, mas na homologação ainda não deu certo. Fora isso, o retorno aparentemente mostrado na página foi realizado com sucesso.


André Ruz

Estratégias Tecnológicas


Cel. +55 14 98809-8569 Tel. +55 14 3235-5500 mstech [ www.mstech.com.br ]

Antes de imprimir, pense em sua responsabilidade com o meio ambiente


De: Bruno Fernandes Casella [1] Enviada em: terça-feira, 27 de dezembro de 2016 16:16 Para: André de Oliveira Ruz <andre.ruz@mstech.com.br> Cc: Thiago Favarin Froes <thiago.froes@mstech.com.br> Assunto: Re: Re: Bluemonitor - Relatórios de uso de aplicações (btracker)


Apenas para deixar claro que configurar o elastic apenas com o comando do PUT do email, vai dar erro.


Bruno Fernandes Casella Desenvolvimento Diretoria de Operações

Tel. (14) 3235-5500 - Ramal 5590 mstech [ www.mstech.com.br ] Antes de imprimir, pense em sua

responsabilidade com o meio ambiente


2016-12-27 12:17 GMT-02:00 André de Oliveira Ruz <andre.ruz@mstech.com.br>:







Mensagem original --------

Assunto:

Re: Bluemonitor - Relatórios de uso de aplicações (btracker)

Data:

05/12/2016 12:36

De:

Antonio Filho <antonio.filho@mstech.com.br>

Para:

Arnaldo Gerner Rosa <arnaldo.gerner@mstech.com.br>, andre.ruz@mstech.com.br



ERRATA: Em MAPEAMENTO ELASTIC SEARCH, favor considere realizar o comando PUT com a URL contendo o índice bluemonitor, caso bluemonitor tenha sido o nome do índice escolhido. Exemplo: http://192.168.44.3:9200/bluemonitor




Em 05/12/2016 11:21, Antonio Filho escreveu:

Olá, bom dia.

Gerei a #38 e última versão do BlueMonitorSSO-Dev, versão 5.5.10.2. Publiquei esta versão no TS-IIS03. Para o pacote dessa nova versão faz-se necessário alterar o Web.config do Bluemonitor e mapear o índice e tipo utilizados no Elastic Search, assim como dizem as linhas abaixo.

WEB.CONFIG

No Web.config do Bluemonitor é necessário incluir a chave "urlElasticSearchBTracker" dentro da tag appSettings, e o valor dela deve ser a URL completa do servidor do Elastic Search, apontando para o índice utilizado pelo BTracker, e com o protocolo. Se o índice utilizado no Elastic Search se chama bluemonitor, e o serviço está em http://192.168.44.3:9200, a URL seria: http://192.168.44.3:9200/bluemonitor


<appSettings>
   <add key="urlElasticSearchBTracker" value="http://192.168.44.3:9200/bluemonitor"/>
</appSettings>


MAPEAMENTO ELASTIC SEARCH

Quando o serviço do Elastic Search estiver respondendo por um IP e porta, por exemplo http://192.168.44.3:9200, se o índice escolhido se chamar bluemonitor e o tipo do documento btracker_app, então execute um comando PUT para a URL http://192.168.44.3:9200 com o JSON abaixo para mapear os dados e possibilitar a utilização dos "relatórios do btracker" no Bluemonitor.

PUT http://192.168.44.3:9200

{
  "mappings": {
     "btracker_app": {
        "properties": {
            "diretoriaID": {
                "type": "keyword",
                "index": "not_analyzed"
            },
            "schoolID": {
                "type": "keyword",
                "index": "not_analyzed"
            },
           "userType": {
               "type": "keyword",
               "index": "not_analyzed"
           },
            "timeSpent": {
                "type": "keyword"
            }
        }
     }
  }
}

Abaixo estão algumas observações e notas que considero importantes e/o necessárias.


TESTES

Acredito que mais testes com volumes diferentes de dados deveriam ter sido executados, porém como o tempo não permitiu, a Halana e eu focamos em testar os relatórios com uma massa de dados que permitisse a análise e constatasse a precisão dos cálculos para o resultado esperado nos modelos propostos pelo requisito.


PERFORMANCE DO ELASTIC SEARCH

Tamanho do documento

Os documentos que estão sendo gerados e salvos no Elastic Search pelo BTracker tem atributos iguais aos que estão abaixo.


{
              "userName": "marriely.garcia",
              "peopleName": "",
              "processList": null,
              "activeWindowName": "chrome",
              "activeWindowTitle": "Guia para geração de relatórios de bugs do Youtrack - MSTECH wiki - Google Chrome",
              "macAddress": "00:00:00:00:00:00:00:E0 | 78:2B:CB:C3:1E:55 | 00:00:00:00:00:00:00:E0 | 00:15:5D:C4:73:C5 | ",
              "finalUseTimeStamp": "2016-11-24T09:15:31Z",
              "timeSpent": 1,
              "systemOSVersion": "Windows 8.1 6.3",
              "schoolID": "30333",
              "schoolName": "ESCOLA DA VIDA                         ",
              "schoolNameCode": "30333|||ESCOLA DA VIDA                         ",
              "diretoriaID": "20111",
              "diretoriaName": "BONIFACIO",
              "userLogin": "Emerson",
              "userType": "aluno"
}

Porém, para desenvolver todos os relatórios do BTracker, estou utilizando apenas as propriedades abaixo.

{
              "activeWindowName": "chrome",
              "timeSpent": 1,
              "schoolID": "30333",
              "diretoriaID": "20111",
              "userType": "aluno"
}

O propósito de cada atributo é:

"activeWindowName" = Identificar a aplicação que foi utilizada "timeSpent" = Contabilizar o tempo de utilização da aplicação em minutos "schoolID" = Identificar a escola pertencente a uma diretoria "diretoriaID": Identificar a diretoria de uma escola "userType": Identificar o tipo de usuário que utilizou a aplicação


Aconselho não salvar o restante do documento que não está sendo utilizado desde que não tenham planos de consultá-los mais tarde, para outros propósitos ou mesmo em relatórios, preferencialmente associados aos atributos que utilizei. O motivo é que não se preocupar com isso é um erro, visto que a indexação do Elastic Search pode consumir o disco rígido e memória RAM de maneira inapropriada, dependendo do volume de dados que armazena e utiliza, principalmente em operações de agregação e ordenação - que estão sendo utilizados nos relatórios do BTracker - e também pela falta de tempo em analisar se o Elastic Search está configurado adequadamente para a nossa necessidade de uso, como explica um pouco o próprio blog oficial da ferramenta: https://www.elastic.co/blog/elasticsearch-storage-the-true-story


Atualização automática de dados

Caso necessário mais tarde fazer com que o relatório seja atualizado automaticamente, definindo uma periodicidade de atualização, causando a sensação de que está trabalhando e exibindo dados em tempo real, o VueJS foi utilizado para agilizar o bind de dados na view, principalmente se forem desenvolvidos campos de pesquisa, filtros ou botões de ordenação, e comandos da api de pesquisa (_search) do Elastic Search estão sendo utilizados para diminuir o tráfego de dados na rede, e custo de processamento de dados no servidor do Bluemonitor e browser do cliente; o que não precisa ser mudado caso não seja necessário atualizar os dados periodicamente. Porém, para agilizar a abertura dos relatórios, faz-se necessário melhorar a consulta de dados ou mudar a estratégia de armazenamento de diretorias e escolas do Bluemonitor, pois os dados são cacheados após a primeira consulta, sempre que o usuário acessa o relatório pela primeira vez, após autenticar-se no sistema, mas o primeiro acesso é sempre muito lento.


Quaisquer dúvidas sobre como realizar os procedimentos acima, estou à disposição.

Att, Antônio Marcos

Comandos Python (DarthFaker)

App para gerar uma massa de dados em um índice pré-existente no server elastic.

Instalação

- baixar o Python v 2.7.13: https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi - instalar

Compilando

Abrir o gitbash, ir na raiz da aplicação onde tem o arquivo __init__.py (exemplo)

ruz@MS-N2437 MINGW64 /c/Documents and Settings/ruz/Documents/Ruz/MSTECH/BlueMonitorapi/Inventario/elasticsearch/elasticsearch

, e digitar:

python __init__.py

caso venha a mensagem de erro de que não foi possível encontrar o nome 'python', talvez foi por causa da instalação, em que ele não ficou como variável de ambiente, então digite:

/c/Python27/python.exe __init__.py

Importando módulos externos

Caso dê erro de importação, é necessário importar o módulo. Ex:

Erro:

Traceback (most recent call last):
 File "__init__.py", line 5, in <module>
   from darthfaker import Faker

Executar o instalador de módulos externos do Python, o "easy_install.exe":

/c/Python27/Scripts/easy_install.exe elasticsearch

até acabar todos os erros.

Busca

No git bash, entrar na pasta raiz que será efetuada a busca e entrar:

$ grep -nir activeWindowName *

Neste exemplo, ele busca pelas ocorrências "activeWindowName" em todos os arquivos da pasta corrente e subpastas de onde está sendo executado.