Mudanças entre as edições de "Elastic Btracker"
(→Introdução (Histórico e-mails)) |
(→Criando mapeamento (estrutura do índice)) |
||
| Linha 14: | Linha 14: | ||
Body: | Body: | ||
| − | PUT | + | 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 == | == Gravando um documento no formato Btracker no Elastic == | ||
Edição das 15h08min de 5 de maio de 2017
Índice
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/bluemonitor 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)
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.
{
"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.