Instalação do Elastic Stack 7 + ElastiFlow no Debian 10 Buster (Bônus Traffic Flow Mikrotik/RouterOS)

Para um tutorial mais atualizado acesse: https://blog.remontti.com.br/6255

Neste tutorial abordaremos a instalação e configuração do Elastic Stack 7.x, que será usado para alimentar a solução ElastiFlow.

Elastic Stack consiste no Elasticsearch, Logstash e Kibana.
Elasticsearch é um mecanismo de pesquisa baseado em texto completo.
Logstash é um mecanismo de coleta de dados e análise de log.
Kibana é uma plataforma de análise e visualização usada para exibir os painéis do ElastiFlow.
ElastiFlow fornece coleta e visualização de dados de fluxo de rede usando o Elastic Stack (Elasticsearch, Logstash e Kibana). Suporta os tipos de fluxo Netflow v5/v9, sFlow e IPFIX.

Painéis fornecidos através do ElastiFlow

Visão Global Overview

Top-N
Existem painéis Top-N separados para os principais locutores, serviços, conversas e aplicativos.

Ameaças Threats
O ElastiFlow inclui um dicionário de endereços IP públicos que são conhecidos por terem uma má reputação. Este dicionário é construído a partir de muitas fontes de dados OSINT, normalizadas para uma taxonomia comum. O painel de ameaças usa essas informações de reputação de IP para destacar três tipos de ameaça/risco.
1. Ameaças Públicas – Clientes públicos com baixa reputação de IP que estão atingindo endereços privados.
2. Servidores em Risco – Servidores Privados que estão sendo acessados ​​por clientes com baixa reputação de IP.
3. Clientes de alto risco – Clientes privados que acessam servidores públicos com baixa reputação.

Fluxos Flows
Existem painéis Sankey separados para as perspectivas Cliente/Servidor, Origem/Destino e Sistema Autônomo. As visualizações sankey são construídas usando o novo plugin de visualização Vega.

Geo IP
Existem painéis de Geo localização separados para as perspectivas Cliente/Servidor e Origem/Destino (Dados GeoLite2 criados pela MaxMind, disponíveis em http://www.maxmind.com)

Tráfego por AS AS Traffic
Fornece uma visão do tráfego para e de sistemas autônomos (intervalos de IP públicos)

Exportadores de Fluxo Flow Exporters

Detalhes do Trânsito Traffic Details

Registros de Fluxo Flow Records

Ziften ZFlow
O ElastiFlow adicionou suporte para registros IPFIX do agente ZFlow do ZFlow. Além de estar totalmente integrado aos painéis de controle padrão, os painéis ZFlow independentes exibem o tráfego de rede com base nos dados de usuário e de comando fornecidos pelo ZFlow.

Requisitos de Hardware.

Meus testes foram realizado em meu computador com VM no Virtualbox sendo 4 CPUs (i7) e 8GB de RAM

E o bixinho levou um pau!

Vou utilizar o Debian 10 instalado de forma “limpa”, sem nenhum outro pacote, para isso siga o tutorial:
Instalação Debian 10 Buster LIMPA Passo-a-passo

Com seu Debian 10 instalado acesse o mesmo e vire root!

# su - 

Instale os pacotes básicos necessários

# apt install wget apt-transport-https gnupg unzip curl net-tools

Recomendo a instalacao dos firmwares binário para vários drivers do kernel Linux, para isso adicione contrib non-free ao seu repositório.

# vim /etc/apt/sources.list
deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

deb http://deb.debian.org/debian/ buster-updates main contrib non-free
deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free
# apt update
# apt install firmware-linux firmware-linux-free firmware-linux-nonfree

Reinicie para que os novos módulos sejam carregado.

# reboot

:: Elastic Stack 7 ::

Será necessário ter o Java instalado.

# su -
# apt install default-jre

Adicione o repositório elastic.

# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
# echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" |  tee -a /etc/apt/sources.list.d/elastic-7.x.list
# apt update

Faremos a instalação individual dos pacotes elasticsearch, kibana e logstash.

:: Elasticsearch ::

Elasticsearch é um mecanismo de pesquisa baseado em texto completo.

# apt install elasticsearch

Após instalação vamos alterar network.host para ouvir apenas localhost, em seguida ativar o serviço e inicia-lo.

# sed -i 's/#network.host: 192.168.0.1/network.host: 127.0.0.1/' /etc/elasticsearch/elasticsearch.yml
# systemctl daemon-reload
# systemctl enable elasticsearch
# systemctl start elasticsearch

Cheque se o mesmo esta funcionando

# curl -X GET 127.0.0.1:9200

Retorno algo como….

{
  "name" : "lab",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "-U7i4KbKSxSgChHSxMpcfg",
  "version" : {
    "number" : "7.3.0",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "de777fa",
    "build_date" : "2019-07-24T18:30:11.767338Z",
    "build_snapshot" : false,
    "lucene_version" : "8.1.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Caso o comando `curl -X GET 127.0.0.1:9200` retorne algum erro, tente verificar se o serviço esta rodando com o comando `systemctl status elasticsearch`. Verifique nos logs `tail -f /var/log/elasticsearch/elasticsearch.log`se o erro aparece:

Failure running machine learning native code. 
This could be due to running on an unsupported OS or distribution, missing OS libraries, 
or a problem with the temp directory. To bypass this problem by running 
Elasticsearch without machine learning functionality set [xpack.ml.enabled: false]."

Se o mesmo aparecer execute o comando:

# echo "xpack.ml.enabled: false" >> /etc/elasticsearch/elasticsearch.yml
# systemctl restart elasticsearch

:: kibana ::

Kibana é uma plataforma de análise e visualização usada para exibir os painéis do ElastiFlow.

# apt install kibana

Após instalação vamos alterar server.host, em seguida ativar o serviço e inicia-lo.

# sed -i 's/#server.host: "localhost"/server.host: "0.0.0.0"/' /etc/kibana/kibana.yml
# systemctl daemon-reload
# systemctl enable kibana
# systemctl start kibana

Aguarde um pouco o serviço iniciar e já será possível acessar Kibana em seu navegador:
http://[IP-SERVIDOR]:5601

:: logstash ::

O Logstash é um mecanismo de coleta de dados e análise de log.

# apt install logstash

Para aumentar o desempenho o ElastiFlow aproveita os recursos de cache e enfileiramento disponíveis em muitos dos plugins do Logstash. Esses recursos aumentam o consumo do heap da JVM. O espaço de heap da JVM usado pelo Logstash é configurado em jvm.options. Recomenda-se que o Logstash receba pelo menos 2GB de heap da JVM. Se todas as opções, incl. Pesquisas DNS estão habilitadas aumente para 4GB. Defina o tamanho de heap da JVM.

# vim /etc/logstash/jvm.options

Altere de a cordo com a necessidades. No meu caso vou resolver nomes então vou usar 4gb

-Xms4g
-Xmx4g

Instale e atualize os plugins necessários pelo Logstash. Para usar o ElastiFlow, você precisará instalar o codec sFlow suportado pela comunidade para o Logstash. Também é recomendável que você sempre use a versão mais recente do codec Netflow, a entrada UDP e o filtro DNS. Isso pode ser conseguido executando os seguintes comandos:

# /usr/share/logstash/bin/logstash-plugin install logstash-codec-sflow --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-codec-netflow --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-input-udp --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-input-tcp --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-dns --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-geoip --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-translate --no-verify
# /usr/share/logstash/bin/logstash-plugin install --no-verify

# /usr/share/logstash/bin/logstash-plugin install logstash-codec-sflow
# /usr/share/logstash/bin/logstash-plugin update logstash-codec-netflow
# /usr/share/logstash/bin/logstash-plugin update logstash-input-udp
# /usr/share/logstash/bin/logstash-plugin update logstash-input-tcp
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-dns
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-geoip
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-translate

:: elastiflow ::

ElastiFlow fornece coleta e visualização de dados de fluxo de rede usando o Elastic Stack (Elasticsearch, Logstash e Kibana). Suporta os tipos de fluxo Netflow v5/v9, sFlow e IPFIX.

# mkdir /root/flowinstall
# cd /root/flowinstall
# wget https://github.com/robcowart/elastiflow/archive/master.zip
# unzip master.zip
# mv elastiflow-master/logstash/elastiflow/  /etc/logstash/
# mv elastiflow-master/logstash.service.d/ /etc/systemd/system/
# cp /etc/logstash/logstash-sample.conf  /etc/logstash/logstash.conf

Adicione o pipeline ElastiFlow aos pipelines.yml

# vim  /etc/logstash/pipelines.yml

Adicione ao final:

- pipeline.id: elastiflow
  path.config: "/etc/logstash/elastiflow/conf.d/*.conf"

Também defino ELASTIFLOW_RESOLVE_IP2HOST como true e defino meu servidor DNS em ELASTIFLOW_NAMESERVER para que os painéis tentem resolver os nomes DNS em vez de exibir apenas o endereço IP. Há um impacto no desempenho por isso será necessário ter RAM sobrando!
Neste exemplo vou aplicar a resolução de nomes.

# sed -i 's/ELASTIFLOW_RESOLVE_IP2HOST=false/ELASTIFLOW_RESOLVE_IP2HOST=true/' /etc/systemd/system/logstash.service.d/elastiflow.conf
# sed -i 's/ELASTIFLOW_NAMESERVER=127.0.0.1/ELASTIFLOW_NAMESERVER=1.1.1.1/' /etc/systemd/system/logstash.service.d/elastiflow.conf

Se desejar pode editar o arquivo /etc/systemd/system/logstash.service.d/elastiflow.conf
E alterar as opções conforme suas necessidades. Os dois comandos acima alteram:
ELASTIFLOW_RESOLVE_IP2HOST=true
ELASTIFLOW_NAMESERVER=1.1.1.1

Vamos configurar os arquivos init (system-install) em seguida ativar o serviço para inicialização e starta-lo.

# systemctl daemon-reload
# /usr/share/logstash/bin/system-install
# systemctl enable logstash
# systemctl start logstash

Precisamos configurar os índices do elastiflow-*padrão, execute o seguinte comando:

Atualização: O projeto da data de hoje (20/03/2020) está da versão 7.6.x e em suas releases https://github.com/robcowart/elastiflow/releases alguns arquivos não parecem mais estarem lá, uma das “gambi” é pegar esses arquivos de commits antigas. Vamos precisar deles -> elastiflow.tar.gz (boa sorte)

# cd /root/flowinstall
# wget https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow.tar.gz
# tar vxf elastiflow.tar.gz 
# curl -X POST http://127.0.0.1:5601/api/saved_objects/index-pattern/elastiflow-* -H "Content-Type: application/json" -H "kbn-xsrf: true" -d @elastiflow.index_pattern.json

O arquivo JSON contém a configuração do padrão de índice.

Agora o arquivo elastiflow.kibana.7.0.x.json deveria estar em https://github.com/robcowart/elastiflow/tree/master/kibana mas não está rsrsrs então baixe ele aqui elastiflow.kibana.7.0.x e extraia ele no seu computador. (peguei ele la da v.3.5.1)

Porém Hoje 31/03/2020 utilizando o arquivo elastiflow.kibana.7.5.x.ndjson deu certo, entao tente importar ele, caso contrario tente o citado acima (P* zona não seguem um padrão fica foda do cara dizer algo rsrsrs) (Versão testada 7.6.1)

Para que os painéis possam ser carregados no Kibana, importando o elastiflow.kibana.7.0.x.json. Isso é feito a partir do menu Management -> Saved Objects. Abra o kibana




Configurações Avançadas Recomendadas do Kibana

Modificar algumas das configurações avançadas do Kibana produzirá uma experiência mais amigável ao usar o ElastiFlow. Essas configurações são feitas em Kibana, abaixo Management -> Advanced Settings.

doc_table:highlight

Há uma penalidade de desempenho de consulta muito grande que vem com o uso do recurso de destaque. Como não é muito útil para este caso de uso, é melhor simplesmente retirá-lo.

filters:pinnedByDefault

Fixar um filtro permitirá que ele persista quando você está mudando de dashbaords. Isso é muito útil ao detalhar algo interessante e você deseja alterar os painéis para uma perspectiva diferente dos mesmos dados. Este é o primeiro cenário que mudo sempre que estou trabalhando com o Kibana.

state:storeInSessionStorage

Os URLs do Kibana podem ficar muito grandes. Especialmente quando se trabalha com visualizações Vega. Isso provavelmente resultará em mensagens de erro para usuários do Internet Explorer. Usar o armazenamento na sessão corrigirá esse problema para esses usuários.

timepicker:quickRanges

As opções padrão no Seletor de Tempo são menos que ideais, para a maioria dos casos de uso de registro e monitoramento. Felizmente, o Kibana agora permite que você personalize o selecionador de tempo. Nossas configurações recomendadas podem ser encontradas abaixo.


timepicker:

[
  {
    "from": "now-15m",
    "to": "now",
    "display": "Last 15 minutes"
  },
  {
    "from": "now-30m",
    "to": "now",
    "display": "Last 30 minutes"
  },
  {
    "from": "now-1h",
    "to": "now",
    "display": "Last 1 hour"
  },
  {
    "from": "now-2h",
    "to": "now",
    "display": "Last 2 hours"
  },
  {
    "from": "now-4h",
    "to": "now",
    "display": "Last 4 hours"
  },
  {
    "from": "now-12h",
    "to": "now",
    "display": "Last 12 hours"
  },
  {
    "from": "now-24h",
    "to": "now",
    "display": "Last 24 hours"
  },
  {
    "from": "now-48h",
    "to": "now",
    "display": "Last 48 hours"
  },
  {
    "from": "now-7d",
    "to": "now",
    "display": "Last 7 days"
  },
  {
    "from": "now-30d",
    "to": "now",
    "display": "Last 30 days"
  },
  {
    "from": "now-60d",
    "to": "now",
    "display": "Last 60 days"
  },
  {
    "from": "now-90d",
    "to": "now",
    "display": "Last 90 days"
  },
  {
    "from": "now/d",
    "to": "now/d",
    "display": "Today"
  },
  {
    "from": "now/w",
    "to": "now/w",
    "display": "This week"
  },
  {
    "from": "now/M",
    "to": "now/M",
    "display": "This month"
  },
  {
    "from": "now/d",
    "to": "now",
    "display": "Today so far"
  },
  {
    "from": "now/w",
    "to": "now",
    "display": "Week to date"
  },
  {
    "from": "now/M",
    "to": "now",
    "display": "Month to date"
  }
]

Por padrão, os dados de fluxo serão recebidos nas portas padrão para cada tipo de fluxo. Você pode alterar os IPs e as portas usadas modificando as seguintes variáveis em /etc/systemd/system/logstash.service.d/elastiflow.conf.

Se tiver alguma dificuldade verifique os logs do logstash:

# tail -f /var/log/logstash/logstash-plain.log

Use também o tcpdum para verificar se seu roteador está enviando os flows.

Se você instalou não quer atualizar com medo de algum “BO” recomendo você desativar o repositório do elastic:

# vim /etc/apt/sources.list.d/elastic-7.x.list

Comente “# deb https://artifacts.elastic.co/packages/7.x/apt stable main”

Portas Padrões
Netflow – IPv4: 2055
Netflow – IPv6: 52055
sFlow – IPv4: 6343
sFlow – IPv6: 56343
IPFIX – IPv4: 4739
IPFIX – IPv6: 54739
Pode ser alterado

BÔNUS – Enviando dados do RouterOS/Mikrotik


Onde ether1 é a interface que vai ser monitorada, no meu caso estou coletando 4k, isso vai depender muito do hardware da sua máquina, e 200.200.200.200 seria o IP do nosso servidor.

/ip traffic-flow
set cache-entries=4k enabled=yes interfaces=ether1
/ip traffic-flow target
add dst-address=200.200.200.200 version=5

Como não tem restrição ao acesso a porta 5601 é interessante você aplicar um firewall em seu servidor
Modelo simples e funcional de Firewall com iptables

Parabéns! Você concluiu! Gostou?

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Abraço!

Fonte:
https://github.com/robcowart/elastiflow/blob/master/INSTALL.md
https://www.elastic.co/guide/en/kibana/current/deb.html

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

49 Resultados

  1. Luciano disse:

    Boa noite,
    no log do logstash eu tenho essa mensagem… fica tentando instalar o tempo todo o elastiflow e não sai disso…

    2022-09-14T20:42:22,343][WARN ][logstash.outputs.elasticsearch][elastiflow] Detected a 6.x and above cluster: the `type` event field won’t be
    used to determine the document _type {:es_version=>7}
    [2022-09-14T20:42:22,462][INFO ][logstash.outputs.elasticsearch][elastiflow] Config is not compliant with data streams. `data_stream => auto` resolved to `false`
    [2022-09-14T20:42:22,471][INFO ][logstash.outputs.elasticsearch][elastiflow] Config is not compliant with data streams. `data_stream => auto` resolved to `false`
    [2022-09-14T20:42:22,582][INFO ][logstash.outputs.elasticsearch][elastiflow] Using mapping template from {:path=>”/etc/logstash/elastiflow/templates/elastiflow.template.json”}
    [2022-09-14T20:42:22,849][INFO ][logstash.outputs.elasticsearch][elastiflow] Installing Elasticsearch template {:name=>”elastiflow-4.0.1″}

  2. Marius Vinícius disse:

    Bom dia, como faço para liberar o acesso fora do localhost?

  3. Giorgio Lago disse:

    Viru uma solução paga e bem capada na comunity edition, triste 🙁

  4. Paulo Roberto Tomasi disse:

    Obrigado pelo post, funcionou certinho no Ubuntu 18.04.5 LTS

    Quanto ao import do arquivo @elastiflow.index_pattern.json vi uma discussão no Github dizendo o seguinte:

    As the instructions state here… elastiflow.index_pattern.json is for 6.4.x and earlier. Even for 6.4.x and earlier that file is installed using
    the provided curl command, not the Kibana UI. If you are using Elastic Stack 6.6.x, you need only elastiflow.kibana.6.6.x.json which is installed
    via the Kibana UI.

    A etapa de import do arquivo elastiflow.index_pattern.json para criação dos índices eu pulei (parece que essa etapa prejudica o restante do processo)

    Somente importei o arquivo elastiflow.kibana.7.8.x.ndjson via web > management > saved objects
    https://raw.githubusercontent.com/robcowart/elastiflow/master/kibana/elastiflow.kibana.7.8.x.ndjson
    conforme instruções do robcowart

    Coletando netflow perfeitamente

  5. Carlos disse:

    não está coletando…
    erro que notei. testei várias versões e mesmo comportamento (sem coleta) {?}

    [INFO ][logstash.config.source.local.configpathloader] No config files found in path {:path=>”/etc/logstash/conf.d/*.conf”}

  6. Cleiton da Silva Leal disse:

    Ola, boa noite, fora essa solução recomendaria alguma outra pra trabalharmos com flow do mikrotik que nao seja nprobe obrigado

  7. Boa noite, ao tentar executar essa parte do tutorial:

    # /usr/share/logstash/bin/logstash-plugin install logstash-codec-sflow –no-verify
    # /usr/share/logstash/bin/logstash-plugin update logstash-codec-netflow –no-verify
    # /usr/share/logstash/bin/logstash-plugin update logstash-input-udp –no-verify
    # /usr/share/logstash/bin/logstash-plugin update logstash-input-tcp –no-verify
    # /usr/share/logstash/bin/logstash-plugin update logstash-filter-dns –no-verify
    # /usr/share/logstash/bin/logstash-plugin update logstash-filter-geoip –no-verify
    # /usr/share/logstash/bin/logstash-plugin update logstash-filter-translate –no-verify
    # /usr/share/logstash/bin/logstash-plugin install –no-verify

    # /usr/share/logstash/bin/logstash-plugin install logstash-codec-sflow
    # /usr/share/logstash/bin/logstash-plugin update logstash-codec-netflow
    # /usr/share/logstash/bin/logstash-plugin update logstash-input-udp
    # /usr/share/logstash/bin/logstash-plugin update logstash-input-tcp
    # /usr/share/logstash/bin/logstash-plugin update logstash-filter-dns
    # /usr/share/logstash/bin/logstash-plugin update logstash-filter-geoip
    # /usr/share/logstash/bin/logstash-plugin update logstash-filter-translate

    Apresentou o seguinte erro:
    OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
    WARNING: An illegal reflective access operation has occurred
    WARNING: Illegal reflective access by com.headius.backport9.modules.Modules to method sun.nio.ch.NativeThread.signal(long)
    WARNING: Please consider reporting this to the maintainers of com.headius.backport9.modules.Modules
    WARNING: Use –illegal-access=warn to enable warnings of further illegal reflective access operations
    WARNING: All illegal access operations will be denied in a future release

    Alguma dica?

  8. Anderson Pereira disse:

    O meu aparece esse erro :

    [WARN ][logstash.codecs.netflow ] Can’t (yet) decode flowset id 257 from source id 0, because no template to decode it with has been received. This message will usually go away after 1 minute.

    Não estou conseguidn oresolver, e no KIBANA não chega nenhum dado

  9. DAVI N FRANCA disse:

    O Meu dá esse erro:

    Failed to execute action {:action=>LogStash::PipelineAction::Create/pipeline_id:elastiflow, :exception=>”Java::JavaLang::IllegalStateException”, :message=>”Unable to configure plugins: (PluginLoadingError) Couldn’t find any codec plugin named ‘sflow’. Are you sure this is correct? Trying to load the sflow codec plugin resulted in this error: no such file to load — logstash/codecs/sflow”, :backtrace=>[“org.logstash.config.ir.CompiledPipeline.(CompiledPipeline.java:103)”, “org.logstash.execution.JavaBasePipelineExt.initialize(JavaBasePipelineExt.java:60)”, “org.logstash.execution.JavaBasePipelineExt$INVOKER$i$1$0$initialize.call(JavaBasePipelineExt$INVOKER$i$1$0$initialize.gen)”, “org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:837)”, “org.jruby.ir.runtime.IRRuntimeHelpers.instanceSuper(IRRuntimeHelpers.java:1169)”, “org.jruby.ir.runtime.IRRuntimeHelpers.instanceSuperSplatArgs(IRRuntimeHelpers.java:1156)”, “org.jruby.ir.targets.InstanceSuperInvokeSite.invoke(InstanceSuperInvokeSite.java:39)”, “usr.share.logstash.logstash_minus_core.lib.logstash.java_pipeline.RUBY$method$initialize$0(/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:27)”, “org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:84)”, “org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:70)”, “org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)”, “org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)”, “org.jruby.RubyClass.newInstance(RubyClass.java:915)”, “org.jruby.RubyClass$INVOKER$i$newInstance.call(RubyClass$INVOKER$i$newInstance.gen)”, “org.jruby.ir.targets.InvokeSite.invoke(InvokeSite.java:183)”, “usr.share.logstash.logstash_minus_core.lib.logstash.pipeline_action.create.RUBY$method$execute$0(/usr/share/logstash/logstash-core/lib/logstash/pipeline_action/create.rb:36)”, “usr.share.logstash.logstash_minus_core.lib.logstash.pipeline_action.create.RUBY$method$execute$0$__VARARGS__(/usr/share/logstash/logstash-core/lib/logstash/pipeline_action/create.rb)”, “org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:84)”, “org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:70)”, “org.jruby.ir.targets.InvokeSite.invoke(InvokeSite.java:183)”, “usr.share.logstash.logstash_minus_core.lib.logstash.agent.RUBY$block$converge_state$2(/usr/share/logstash/logstash-core/lib/logstash/agent.rb:326)”, “org.jruby.runtime.CompiledIRBlockBody.callDirect(CompiledIRBlockBody.java:136)”, “org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:77)”, “org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:71)”, “org.jruby.runtime.Block.call(Block.java:125)”, “org.jruby.RubyProc.call(RubyProc.java:274)”, “org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:105)”, “java.base/java.lang.Thread.run(Thread.java:834)”]}
    [2020-05-11T22:49:07,166][ERROR][logstash.agent ] An exception happened when converging configuration {:exception=>LogStash::Error, :message=>”Don’t know how to handle `Java::JavaLang::IllegalStateException` for `PipelineAction::Create`”, :backtrace=>[“org/logstash/execution/ConvergeResultExt.java:109:in `create'”, “org/logstash/execution/ConvergeResultExt.java:37:in `add'”, “/usr/share/logstash/logstash-core/lib/logstash/agent.rb:339:in `block in converge_state'”]}
    [2020-05-11T22:49:07,225][FATAL][logstash.runner ] An unexpected error occurred! {:error=>#<LogStash::Error: Don't know how to handle `Java::JavaLang::IllegalStateException` for `PipelineAction::Create`>, :backtrace=>[“org/logstash/execution/ConvergeResultExt.java:109:in `create'”, “org/logstash/execution/ConvergeResultExt.java:37:in `add'”, “/usr/share/logstash/logstash-core/lib/logstash/agent.rb:339:in `block in converge_state'”]}
    [2020-05-11T22:49:07,242][ERROR][org.logstash.Logstash ] java.lang.IllegalStateException: Logstash stopped processing because of an error: (SystemExit) exit
    [2020-05-11T22:49:30,319][INFO ][logstash.runner ] Starting Logstash {“logstash.version”=>”7.6.2″}
    [2020-05-11T22:49:31,405][INFO ][logstash.config.source.local.configpathloader] No config files found in path {:path=>”/etc/logstash/conf.d/*.conf”}

  10. Rodrigo F Miniello disse:

    Pessoal tutorial atualizado.

  11. Delmar Junior disse:

    Ótimo tutorial, estou com um problema…

    As métricas não estão listando, mas se eu listo algum histórico de tempo maior lista normalmente….. resumindo como ativei agora pouco a solução dados de 40minutos atraś listam normalmente…. agora os dados mais recentes não estão listando…. algo que possa ser feito?

    O recurso da máquina está tranquilo, os serviços estão em execução e no tcpdump meus dois equipamentos de teste ( mikrotik ) estão enviando dados na porta 2055 udp.

    Atenciosamente,

  12. Rodrigo m disse:

    Muito bom e muito bem explicado … valeeu

  13. Leonardo disse:

    Boa tarde, consegui fazer a instalação sem erros, mas não consegui utilizar devido não saber cadastrar equipamentos no sistema. Poderia deixar algum exemplo?

  14. Erlan Siqueira disse:

    Boa tarde, ótimo tutorial muito obrigado por compartilhar conhecimento, eu tenho uma duvida instalei tudo certo e abri o Kibana mas não aparece nenhuma métrica da rede alguém sabe dizer oque pode estar errado??

  15. Tutorial Excelente. Agradecer ao Rudimar por compartilhar seu conhecimento. estou usando a versão 7.5.1 do ELK e a versao 4.0.0 do elasticflow e esta funcionando perfeitamente. quem quiser pode atualizar que vai de boa. e estou usando mais o Hearthbeat para chegar uptime e latência de vários serviços e tudo esta ok. um abraço a todos

  16. Deivid disse:

    Boa Tarde! Excelente tutorial!

    Porém tentei este tutorial e vários outros que encontrei, sempre termina com o mesmo erro quando verifico tail -f /var/log/logstash/logstash-plain.log.

    O erro é o seguinte:

    [2019-12-24T17:09:27,509][INFO ][logstash.inputs.udp ][elastiflow] Starting UDP listener {:address=>”10.254.254.2:6343″}
    [2019-12-24T17:09:27,514][WARN ][logstash.inputs.udp ][elastiflow] Unable to set receive_buffer_bytes to desired size. Requested 33554432 but obtained 212992 bytes.
    [2019-12-24T17:09:27,519][ERROR][logstash.inputs.udp ][elastiflow] UDP listener died {:exception=>#, :backtrace=>[“org/jruby/ext/socket/RubyUDPSocket.java:203:in `bind'”, “/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-input-udp-3.3.4/lib/logstash/inputs/udp.rb:116:in `udp_listener'”, “/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-input-udp-3.3.4/lib/logstash/inputs/udp.rb:68:in `run'”, “/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:322:in `inputworker'”, “/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:314:in `block in start_input'”]}

    • Ruan Moreira disse:

      Pessoal estou tendo esse problema The datetime zone id ‘UTC.’ is not recognised quando olho os logs do logstash, tem a ver com o timezone configurado no arquivo de configuração do Elastiflow, mas nao importa o que eu coloque lá, sempre da esse erro. Alguém ja pegou esse problema?

    • Ruan Moreira disse:

      So alterar o parametro para esse valo: Environment=”ELASTIFLOW_SFLOW_UDP_RCV_BUFF=212992″ no arquivo /etc/systemd/system/logstash.service.d/elastiflow.conf

  17. Almir Alves de Paiva disse:

    Rudimar, como eu faço para agora esse gráfico eu gerar um relatório em PDF neste mesmo exemplo, Adorei a sua dica o post funcionou perfeitamente

  18. gaspar poletto disse:

    Muito TOP!!! Tudo Funcionou perfeitamente!
    Saberia me onde posso configurar para só aguardar os dados por 1 ou 2 dias?

  19. Peterson disse:

    Boa tarde, Rudimar.

    Estou com uma dúvida.

    Neste comando apliquei o IP do servidor que estou configurando.
    # sed -i ‘s/#network.host: xxx.xxx.xxx.xxxx/network.host: 127.0.0.1/’ /etc/elasticsearch/elasticsearch.yml

    E tudo rodou perfeitamente.

    Quando apliquei o comando:
    curl -X GET 127.0.0.1:9200

    Deu o seguinte retorno:
    curl: (7) Failed to connect to 127.0.0.1 port 9200: Conexão recusada

    Pode dar uma ajuda

  20. Junior disse:

    Ótimo tutorial, já tinha tentado fazer essa instalação diversas vezes mas sem sucesso, mas com seu tutorial correu tudo em orde, obrigado por compartilhar.
    Dúvida, como coloca senha no kibana, pois ele está sem senha para o acesso.

  21. Otimo tutorial … parabens, todos os problemas que eu tive consegui solver com seus tutoriais continue assim … forte abraço …

    Uma duvida, para pegar os logs dos mk’s qual porta eu uso para cadastrar nos mikrotiks?

    Valeu

  22. gilmar disse:

    Adicionar um login e senha para o kibana não ficar acessível para qualquer um. como seria?

  23. Ciro Moniz disse:

    Bom dia,

    Excelente tutorial, ainda não finalizei, mas estou seguindo a risca e está indo sem problemas (como sempre).

    Estou fazendo em uma VM limitada com 2G de ram e percebi que consome muito recurso de hardware, neste caso (RAM).

    Minha dúvida é a seguinte … se eu rodar na nuvem (tbm uma VPS – uma máquina na OVH) daria pra coletar e monitorar dados de minha rede LAN ? dos meus roteadores mikrotik ?

    Acho que seria até mais indicado, pois na nuvem tenho melhor hardware, IP público etc

  24. Rafael disse:

    Após mais de ano tentando fazer o Elasticflow funcionar, finalmente um tutorial exequível! Excelente!
    Ótimo trabalho!

  25. Adeilton Junior disse:

    Cara. Te Amo!
    Show de Bola. Parabéns! Tutorial muito claro.
    Impossível não da da certo.

  26. Jean disse:

    EXcelente Tutorial neste caso tenho que configurar na minha borda ou posso usar no meu CORE? e a porta seria a porta de UPlink ou porta que sai para ElasticFlow?

  27. Max disse:

    Tutorial muito claro. Finalmente consegui fazer funcionar.
    Muito obrigado.

  28. Paulo Jr Andrade disse:

    Parabéns novamente Rudimar, excelente tutorial !!!
    E como fica com o Vyos ? sabes como proceder ???
    Grande abraço.

  29. Junior disse:

    Excelente tutorial como sempre, instalação ocorreu corretamente, só não entendi como adicionar no caso um mikrotik ao mesmo.
    Parabéns!!!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *