>_Graylog2 – Gerência centralizada de Logs – Graylog2 Web – Inputs via Logstash GELF – 1.4

imagesDando continuidade na série de tutoriais sobre o Graylog2, neste quarto tutorial irei comentar sobre o Graylog2 com o Logstash.

Rumbora!

O Logstash pode se conectar a uma variedade de fontes e permite a criação de sistema de análise central altamente escalável.

Algumas opções que podem conter dentro de um arquivos de configuração do Logstash.

grok

inputs, ou entradas, que são as fontes dos eventos que serão analisados. Tais fontes devem ser arquivos alcançáveis pelo sistema operacional onde o Logstash está instalado.

filters, ou filtros, que são transformações e operações que podem ser realizadas sobre os dados presentes nos eventos. Geralmente são escritos na linguagem de scripts Grok, mas existem também outros tipos de filtros também.

outputs, ou saída, que definem onde e como os eventos serão escritos.

Leia mais em: Elasticsearch: Como gerenciar logs com Logstash http://www.devmedia.com.br/elasticsearch-como-gerenciar-logs-com-logstash/32939#ixzz3pnhVqTuO

Para que server o GROK?
O Grok tem como função analisar o texto filtrado e estruturá-lo para o Logstash.

O Grok é atualmente a melhor maneira para o Logstash analisar os dados de um evento não estruturado. Esta ferramenta é perfeita para eventos do tipo Syslog.

Para quem precisa de ajuda para construção e combinação da captura de eventos do tipo Syslog, recomendo que visite os seguintes endereços:

http://grokdebug.herokuapp.com/patterns
http://grokconstructor.appspot.com/
https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html

Passo 1 – Criando o arquivo de configuração do Logstash para o Graylog2. Neste arquivo deverá conter os seguintes parâmetros: inputs, files, filtros e output no formato GELF para o Graylog2.

Para esta primeira versão do arquivo 10-logstash.conf, estarei coletando os eventos dos seguintes arquivos de log:
/var/log/secure – /var/log/cron – /var/log/yum.log.

FILE
type – “nome” que será dado ao file que está sendo criado.
path – “caminho” do arquivo de onde será coletado os eventos.

FILTER
if [type] – Se o file contiver o type “nome”, então continue dentro do bloco.
grok  – Fará a analise através do match.
messages – Campo da mensagem que queremos coletar. É possível utilizar regex e variáveis.
add_field – Aqui temos dois campos. O primeiro será o field e o segundo o Value,  este campos serão passados no momento em for criado uma New Stream Rule.

102

101

No servidor graylog, dentro do diretório /etc/logstash/conf.d/ crie o arquivos 10-logstash.conf.

# cd /etc/logstash/conf.d/
# ls
# vim 10-logstash.conf
# Entrada padrão dos arquivos de log.
input {
# Ssh
     file {
         type => "ssh-server"
         path => "/var/log/secure"
     }

# Crontab
     file {
         type => "cron-server"
         path => "/var/log/cron"
     }

# Yum 
     file {
         type => "yum-server"
         path => "/var/log/yum.log"
     }
 }

# Filtros.
# ssh
filter {
        if [type] == "ssh-server" {
                grok {
                        match => { "message" => "Accepted %{WORD:auth_method} for %{USER:username} from %{IP:src_ip} port %{INT:src_port} ssh2" }
                        add_field => {
                                "ssh" => "service_sshd"
                        }
                }

                grok {
                        match => { "message" => "Failed password for %{USER:username} from %{IP:src_ip} port %{INT:src_port} ssh2" }
                        add_field => {
                                "ssh" => "service_sshd"
                        }
                }

        }
}
# yum
filter {
        if [type] == "yum-server" {
                grok {
                        match => { "message" => "%{SYSLOGTIMESTAMP} %{DATA:action} *\: %{GREEDYDATA:package}" }
                        add_field => {
                                "yum" => "yum_install"
                        }
                }


        }

}
# crontab
filter {
        if [type] == "cron-server" {
                grok {
                        match => { "messages" => "%{SYSLOGTIMESTAMP} %{SYSLOGHOST:syslog_hostname} CROND[*]\: *"}
                        add_field => {
                                "cron" => "crontab"
                        }
                }
        }
}
# Saída padrão para o Graylog2 no formato GELF.
output  {
        gelf {
                host => "10.1.10.57"
        }
}

Passo 2 – Reiniciando os serviços rsyslog, graylog-server e logstash.

# systemctl restart rsyslog
# systemctl restart graylog-server
# systemctl restart logstash

Passo 3 – Ajustando o permissionamento nos seguintes arquivos.

# chmod 664 /var/log/secure
# chmod 664 /var/log/yum.log
# chmod 664 /var/log/cron

Passo 4 – Ajustando o Graylog2 Web.

http://IP:9000.
No meu caso está sendo o http://10.1.10.57:9000.

1

System -> Inputs.2

Em Inputs, selecione GELF UDP.3

Informe os dados do servidor Graylog2 Server e em seguida clique em Launch.

5

4

Inicie o input clicando em Start Input.

6

10

Após inicialização do input GELF UDP, basta gerar os eventos.

evandro@vandocouto:~$ ssh root@10.1.10.57
# yum install httpd -y
# crontab -l
*/1 * * * * ls -ltr


105

Fontes:
https://www.elastic.co
http://docs.graylog.org
http://www.alexlinux.com

>_Graylog2 – Gerência centralizada de Logs – Graylog2 Web – Inputs via Logstash GELF – 1.4
Tagged on:

Deixe uma resposta

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

%d blogueiros gostam disto: