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
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.
Meus testes foram realizado em meu computador com VM no Virtualbox sendo 4 CPUs (i7) e 8GB de RAM
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
filters:pinnedByDefault
state:storeInSessionStorage
timepicker:quickRanges
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 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
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″}
Bom dia, como faço para liberar o acesso fora do localhost?
Viru uma solução paga e bem capada na comunity edition, triste 🙁
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
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”}
Ola, boa noite, fora essa solução recomendaria alguma outra pra trabalharmos com flow do mikrotik que nao seja nprobe obrigado
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?
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
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”}
Pessoal tutorial atualizado.
Ó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,
No meu caso eu tava tendo problemas tambem, eu aumentei q quantidade de gigas no
-Xms4g
-Xmx4g
Pois tinha uma carga grande de flows
Muito bom e muito bem explicado … valeeu
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?
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??
Também estou com esse Problema. Não Aparece nada. Conseguiu Resolver?
Infelizmente não :/
Pra mim funcionou quando configurei um mikrotik, mas quando tentei colocar um Huawei tive o mesmo problema que voces
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
Bacana! Em breve faço algum teste e atualizo o tutorial tb. Obrigado
Qual a versão dos “objetos” pro Kibana você utilizou? porque só tem disponível a versão 7.0.
Os dashboards ficam sem dados para exibir (como se não tivesse coletando).
Já tentei na vesão: 7.3.0; 7.6.1 e na atual 7.9.1 e NADA. Já to fazendo o tutorial no modo automático rsrs… gravei rs
Teria como dá um Help você/alguém rs.. ? abÇ
https://ibb.co/album/Q9rbHn
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'”]}
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?
So alterar o parametro para esse valo: Environment=”ELASTIFLOW_SFLOW_UDP_RCV_BUFF=212992″ no arquivo /etc/systemd/system/logstash.service.d/elastiflow.conf
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
Muito TOP!!! Tudo Funcionou perfeitamente!
Saberia me onde posso configurar para só aguardar os dados por 1 ou 2 dias?
Fiz usando o curator chamando no cron, não sei se existe outra maneira.
Tem como deixar o exemplo do comando que colocou no cron, fazendo favor?
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
Mesmo problema por aqui
Basta reaplicar o comando 😉
# sed -i ‘s/#network.host: xxx.xxx.xxx.xxxx/network.host: 127.0.0.1/’ /etc/elasticsearch/elasticsearch.yml
Ó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.
Se descobrir compartilhe rsrsrs, não tive tempo para ver se tem alguma forma fácil.
Estou usando a autenticação no diretório com arquivo de senha htpasswd. Uso nginx.
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
Nao entendi muito bem, mas no final do tutorial explica como configurar no mk.
Adicionar um login e senha para o kibana não ficar acessível para qualquer um. como seria?
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
Após mais de ano tentando fazer o Elasticflow funcionar, finalmente um tutorial exequível! Excelente!
Ótimo trabalho!
Cara. Te Amo!
Show de Bola. Parabéns! Tutorial muito claro.
Impossível não da da certo.
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?
Provavelmente vc queria saber dados do seu trafego geral, entao seria a(s) porta(s) de uplink, mas se vc deseja analisar o trafego de uma unica porta.
Tutorial muito claro. Finalmente consegui fazer funcionar.
Muito obrigado.
Glória…. a Deuxxxx!
Parabéns novamente Rudimar, excelente tutorial !!!
E como fica com o Vyos ? sabes como proceder ???
Grande abraço.
Dá uma olhada nesse link.
Excelente tutorial como sempre, instalação ocorreu corretamente, só não entendi como adicionar no caso um mikrotik ao mesmo.
Parabéns!!!