Ir para conteúdo
meebo
Entre para seguir isso  
Guest Valter

Como usar o Splunk para analisar os logs do MikroTik 2.1 e criando gráficos

Recommended Posts

Guest Valter

Salve gente,  usar o Splunk para monitorar e representar graficamente vários dados de nossos MikroTik Routers é uma maneira agradável e gratuita de ajudá-lo a mostrar o que está acontecendo em sua rede. 

O Splunk é de uso gratuito para loggin até 500MB por dia. 


O que há de novo
Muita coisa mudou desde a versão anterior. Tanto que é melhor substituir todos os arquivos MikroTik no servidor Splunk em vez de tentar atualizar os arquivos. 
Antes de os dados serem coletados de três maneiras. 
1. Syslog 
2. SNMP 
3. Scripts (remote) O 
problema com o SNMP é que você precisa adicionar uma configuração duplicada no Syslog para manipular cada caixa que você monitora. 
Problema com o script é que você precisa configurar um trabalho no servidor Splunk que hospede o SSH em cada caixa para obter dados.
As ferramentas de script não registraram o IP do host, então você não sabia de onde vinham os dados da caixa. 

O SNMP e o Scipts foram removidos e mudam o inn para um script local no roteador que envia os dados necessários para o Splunk usando o Syslog. 
Dessa forma, todos os dados são marcados corretamente e você sabe de qual roteador você obtém dados. 

Mude o log
# 2.0 
# Removido o script de contabilização do Splunk e mova o get do data inn para o script do Mikrotik 
# Removido toda a requisição do SNMP desde que seu host tenha sido removido 
# Remove traps SNMP. Não usado 
# Atualizado "Mikrotik DHCP pool information" para usar syslog 
# Atualizado "MikroTik Traffic" para usar syslog 
# Atualizado "MikroTik uPnP" para usar syslog 
# Atualizado "MikroTik Volt / Temperature"
"Pedido Mikrotik DHCP" # Updaded para mostrar DHCP gráfica pedido 
# Adicionado "Recursos MikroTik" mostrando HDD / memória / CPU 
# Adicionado acolhimento a todos dashboard (para lidar com registros de Routers de maio, no mesmo tempo) 
# Adicionado "MikroTik Uptime" view 

# 2.1 
# Corrigido erro de digitação em "MikroTik DNS request" 
# Corrigido erro eval em "MikroTik Traffic" 
# Removido busca usado localmente em "MikroTik DNS Live uso" 
# Removido não necessário linha SED de props.conf 


Instalação 
em seu PC (Windows / Linux)
----------------------------------- 
Baixe e instale o Splunk (Windows ou Linux (recomendado)) 

Alterar para livre grupo de licenças . Muito importante para fazer antes de 30 dias de uso. !!!!!!!!!
Web gui: 
Configurações-> licenciamento-> Alterar grupo de licença-> Livre licnse-> Salvar 

o Firewall do Windows aberto para UDP no Windows (No linux não está bloqueado) 
Web gui: 
Iniciar-> digite "adv" -> Selecione: Widows Firewall com Segurança Avançada-> Regras de entrada da Sect-> Clique com o botão direito do mouse em "Regras de entrada"> Nova regra-Porta-Próximo-> UDP-> Portas locais específicas-> 514-> Próxima-> Próxima-> Próxima-> Nome "syslog"

Permitir UDP 514 (syslog) 
Web gui: 
Configuração-> Datainputs-> Adicionar novo (por trás do UDP) -> Porta 514-> Próximo-> Syscetype tipo syslog e selecione syslog-> Próximo-Enviar

Baixar o arquivo zip:
MikroTik2.1.zip Extraia-o com todas as suas pastas e copie-as para% Splunk home% / etc / app 

No Windows normalmente seria assim: C: \ Arquivos de Programas \ Splunk \ etc \ apps \ MikroTik
E no Linux: / opt / splunk / etc / apps / MikroTik

Reinicie o Splunk depois de ter adicionado os arquivos: 
Web gui: 
Configurações-> Controles do servidor-> Reiniciar o Splunk 

no seu MikroTik Router
--------------------- -------- 
Syslog
Você precisa fazer o seu roteador capaz de enviar mensagens Syslog. 
Web gui: 
Sistema-> Registro-> Ação-> Adicionar Novo-> Nome (nome do seu servidor) -> Tipo: Remoto-> Endereço Remoto: ip seu syslog-> Ok
Cli /system logging action add name=my_server target=remote remote=192.168.1.50 remote-port=514 Em seguida, selecione o que registrar. 
Eu sugiro que você envie todos os logs do DHCP, incluindo debug e todos os outros logs que não são de depuração. 
É muito importante nomear o prefixo como " MikroTik " e não " mikrotik " ou outro. 
O Splunk usa o prefixo MikroTik para descobrir que tipo de dados do syslog estão chegando a ele. 
Web gui: 
Sistema-> Registro-> Regras-> Adicionar novo-> Tópicos: dhcp-> Prefixo: MikroTik-> ação: seu servidor 
syslog-> Sistema Ok-> Registro-> Regras-> Adicionar novo-> Tópicos:! debug-> Prefixo: MikroTik-> action: seu servidor syslog-> Ok 
Cli: /system logging add action=test prefix=MikroTik topics=dhcp
/system logging add action=test prefix=MikroTik topics=!debugSelecione o que registrar
Para registrar as regras do Firewall e Nat, você precisa ativar o registro e adicionar o Prefixo do registro (sob ação). 
Inicie toda a regra de firewall que você deseja registrar com o FW_ e, em seguida, o que ela faz, como essa FW_Block_user_in_blocked_list . 
O mesmo com as regras Nat, inicie com NAT_ assim: NAT_RDP ou NAT_Minecraft

Você deve pelo menos registrar esta regra "defconf: dropar todos não vindos da LAN" com este prefixo: FW_Drop_all_from_WAN
Web gui: 
IP-> Firewall-> selec: defconf: drop tudo não vindo de LAN-> Log: v-> Prefixo de Log: FW_Drop_all_from_WAN
Isto irá preencher a visão de ataque do MikroTik Live . 

Contabilidade
Para obter dados contábeis, você precisa ativá-lo no roteador MikroTik. ( Painel de controle do MikroTik Traffic ) 
Web gui: 
IP-> Contabilidade -> Ativar Contabilidade -> mark Threshould: 2560 OK
Cli: /ip accounting set enabled=yes threshold=2560Script
Para obter todos os outros dados, como Contabilidade de tráfego, uPnP, Integridade do sistema, Recursos do sistema e Informações do pool DHCP, você precisa deste script no MikroTik. Precisa ser nomeado: Data_to_Splunk_using_Syslog# This script is used to send data to Splunk using syslog.


# Collect accounting traffic
# ----------------------------------
# Take a snapshoot
/ip accounting snapshot take
# Send data to loggin server
foreach logline in=[/ip accounting snapshot find] do={:log info message="$[/ip accounting snapshot print as-value from=$logline]"}

# Finding dynmaic lines used in uPnP
# ----------------------------------
:foreach logline in=[/ip firewall nat find dynamic=yes] do={:log info message="$[/ip firewall nat print as-value from=$logline]"};

# Collect system resource
# ----------------------------------
:local freemem ([/system resource get free-memory]/1000000);
:local totmem ([/system resource get total-memory]/1000000);
:local freehddspace ([/system resource get free-hdd-space]/1000000);
:local totalhddspace ([/system resource get total-hdd-space]/1000000);
:local cpuload ([/system resource get cpu-load]);
:local up ([/system resource get uptime]);
:log info message="script=resource free_memory=$freemem MB total_memory=$totmem MB free_hdd_space=$freehddspace MB total_hdd_space=$totalhddspace MB cpu_load=$cpuload uptime=$up";

# Collect system health
# ----------------------------------
:local voltage ([/system health get voltage]/10);
:local temperature ([/system health get temperature]);
:log info message="script=health voltage=$voltage V temperature=$temperature C";

# Collect DHCP Pool information
# ----------------------------------
/ip pool {
   :local poolname
   :local pooladdresses
   :local poolused
   :local minaddress
   :local maxaddress
   :local findindex
   :local tmpint
   :local maxindex


 #  :put ("IP Pool Statistics")
 #  :put ("------------------")

# Iterate through IP Pools
   :foreach p in=[find] do={

      :set poolname [get $p name]
      :set pooladdresses 0
      :set poolused 0


#   Iterate through current pool's IP ranges
      :foreach r in=[:toarray [get $p range]] do={

#      Get min and max addresses
         :set findindex [:find [:tostr $r] "-"]
         :if ([:len $findindex] > 0) do={
            :set minaddress [:pick [:tostr $r] 0 $findindex]
            :set maxaddress [:pick [:tostr $r] ($findindex + 1) [:len [:tostr $r]]]
         } else={
            :set minaddress [:tostr $r]
            :set maxaddress [:tostr $r]
         }

#       Convert to array of octets (replace '.' with ',')
         :for x from=0 to=([:len [:tostr $minaddress]] - 1) do={
            :if ([:pick [:tostr $minaddress] $x ($x + 1)] = ".") do={
               :set minaddress ([:pick [:tostr $minaddress] 0 $x] . "," . \
                                       [:pick [:tostr $minaddress] ($x + 1) [:len [:tostr $minaddress]]]) }
         }
         :for x from=0 to=([:len [:tostr $maxaddress]] - 1) do={
            :if ([:pick [:tostr $maxaddress] $x ($x + 1)] = ".") do={
               :set maxaddress ([:pick [:tostr $maxaddress] 0 $x] . "," . \
                                       [:pick [:tostr $maxaddress] ($x + 1) [:len [:tostr $maxaddress]]]) }
         }

#      Calculate available addresses for current range
         :if ([:len [:toarray $minaddress]] = [:len [:toarray $maxaddress]]) do={
            :set maxindex ([:len [:toarray $minaddress]] - 1)
            :for x from=$maxindex to=0 step=-1 do={
#             Calculate 256^($maxindex - $x)
               :set tmpint 1
               :if (($maxindex - $x) > 0) do={
                  :for y from=1 to=($maxindex - $x) do={ :set tmpint (256 * $tmpint) }
               }
               :set tmpint ($tmpint * ([:tonum [:pick [:toarray $maxaddress] $x]] - \
                                                    [:tonum [:pick [:toarray $minaddress] $x]]) )
               :set pooladdresses ($pooladdresses + $tmpint)
#         for x
            }

#      if len array $minaddress = $maxaddress
         }

#      Add current range to total pool's available addresses
         :set pooladdresses ($pooladdresses + 1)

#   foreach r
      }

          :set poolused [:len [used find pool=[:tostr $poolname]]]
#   Send data
    #      :log info message=("pool=" . $poolname  . " used=" . $poolused . " total=" . $pooladdresses)
          :log info message=("script=pool pool=$poolname used=$poolused total=$pooladdresses")

# foreach p
   }
# /ip pool
}

Se tiver alguma dúvida é só perguntar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu conteúdo precisará ser aprovado por um moderador

Visitante
Você está comentando como visitante. Se você tem uma conta, por favor, entre.
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Entre para seguir isso  

×