Guia de preparação do ambiente para a criação de painéis de visualização no Kibana, utilizados no projeto GIAPS, integrado ao Ministério da Saúde.
-
É preciso observar, ao seguir os seguintes passos, que o arquivo ".csv" é essencial nesse procedimento e, por razões de confidencialidade, não está exposto nesse readme.
-
Altere a rota do arquivo ao configurar o arquivo ".conf".
- Análises aqui sobre um processo prático para restaurar um índice localmente, porém, por questões de modelo de infra local, o melhor é fazer a carga a partir de um CSV.
- É importante que mantenham o nome do índice igual ao nome do arquivo (status_implantacao_prontuario_eletronico_municipio), e também o envio do padrão de criação do índice (mapping) para preservar o campo georrefenciado - centróide do municipío.
- Este índice tem em torno de 183 mil linhas(documentos) e o CSV em anexo possui o header com o nome dos campos. Por ser um CSV, os campos q são do tipo texto estão quotados ("").
- O método de carga utilizado para o índice é usando logstash, configurando um arquivo do tipo pipeline. Após a carga, para conferência e estudo do dado, e um exemplo do painel a ser construído no kibana como exercício.
- Utilização de containers para subir localmente o ElasticSearch e o Kibana
- Versao Utilizada: 7.4.2
- Disponiveis no arquivo docker-compose.yml
version: '3.0'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.4.2
container_name: elasticsearchMS
environment:
- discovery.type=single-node
volumes:
- MS_kibana:/usr/share/elasticsearch/data
ports:
- "9200:9200"
kibana:
image: docker.elastic.co/kibana/kibana:7.4.2
environment:
SERVER_NAME: kibana.example.org
ELASTICSEARCH_URL: http://localhost:9200
ports:
- "5601:5601"
volumes:
MS_kibana:- Com o Docker Compose instalado na maquina, via linha de terminal executar
docker-compose upUsando a ferrametnta Dev Tools do Kibana, é bem simples criar o índice, conforme o print acima Para este índice, segue abaixo o modelo de criação com PUT
DELETE status_implantacao_prontuario_eletronico_municipio
GET status_implantacao_prontuario_eletronico_municipio
PUT status_implantacao_prontuario_eletronico_municipio
{
"mappings": {
"properties": {
"pt_municipio": {
"type": "geo_point"
}
}
}
}
- Configuração do Arquivo .conf
input {
file {
#Caminho do CSV
path => "/home/higor/Documents/Index/status_implantacao_prontuario_eletronico_municipio.csv"
start_position => "beginning"
sincedb_path => "/dev/null"
codec => multiline {
pattern => "^(\d){6};"
negate => true
what => "previous"
auto_flush_interval => 1
}
}
}
filter {
csv {
#Colunas Presentes no CSV
columns => [ "id","ano","ano_mes","co_mes","co_municipio_ibge","co_uf_ibge","municipio","sg_uf","situacao_implantacao_cenario1","situacao_implantacao_cenario2","sg_mes","mes_ano","qtde","data_competencia","pt_municipio","co_regiao_ibge","regiao_ibge","tipologia_ibge_mun","uf"]
skip_header => true
separator => ";"
}
mutate {
#Formato das tabelas
convert => {
"id" => "integer"
"ano" => "integer"
"ano_mes" => "integer"
"co_mes" => "integer"
"co_municipio_ibge" => "integer"
"co_uf_ibge" => "integer"
"municipio" => "string"
"sg_uf" => "string"
"situacao_implantacao_cenario1" => "string"
"situacao_implantacao_cenario2" => "string"
"sg_mes" => "string"
"mes_ano" => "string"
"qtde" => "integer"
"data_competencia" => "string"
"co_regiao_ibge" => "integer"
"regiao_ibge" => "string"
"tipologia_ibge_mun" => "string"
"uf" => "string"
}
}
mutate {
remove_field => [ "message", "path", "host" ]
}
}
output {
stdout { codec => dots }
stdout { codec => rubydebug }
elasticsearch {
hosts => ["localhost:9200"]
index => "status_implantacao_prontuario_eletronico_municipio"
}
}- Rodar o LogStash com o conf relacionada com a tabela CSV desejada.
bin/logstash -f log_municipio.conf