Centralne przechowywanie i analiza logów

W rozproszonych środowiskach, w których wiele serwerów generuje różnorodne logi w przypadku wystąpienia awarii lub potrzeby analizy działania systemu istotne są rozwiązania, które umożliwiają centralne przechowywanie danych oraz ich analizę. Jednym z coraz bardziej popularnych rozwiązań tego typu jest ELK – Elasticsearch, Logstash i Kibana.

W celu zaprezentowania sposobu instalacji poszczególnych komponentów ELK, przygotowano maszynę wirtualną w VirtualBox z systemem operacyjnym Ubuntu 14.04, na której wykonano poniższe kroki.

Instalacja Java

Dodanie Oracle Java PPA do repozytorium:

seba@elk:~$ sudo add-apt-repository -y ppa:webupd8team/java

Aktualizacja danych APT po dodaniu repozytorium:

seba@elk:~$ sudo apt-get update

Instalacja Java:

seba@elk:~$ sudo apt-get -y install oracle-java8-installer

Instalacja Elasticsearch

Pobranie paczki instalacyjnej:

seba@elk:~$ wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
seba@elk:~$ echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
seba@elk:~$ sudo apt-get update

Instalacja Elasticsearch:

seba@elk:~$ sudo apt-get -y install elasticsearch

Wprowadzenie podstawowej konfiguracji:

seba@elk:~$ sudo vi /etc/elasticsearch/elasticsearch.yml

z nazwą serwera:

network.host: localhost

 
Restart Elasticsearch i ustawienie automatycznie uruchamianie przy restartch maszyny:

seba@elk:~$ sudo service elasticsearch restart
seba@elk:~$ sudo update-rc.d elasticsearch defaults 95 10

Instalacja Kibana

Pobranie paczki instalacyjnej:

seba@elk:~$ echo "deb http://packages.elastic.co/kibana/4.4/debian stable main" | sudo tee -a /etc/apt/sources.list.d/kibana-4.4.x.list
seba@elk:~$ sudo apt-get update

Instalacja Kibana i wprowadzenie podstawowej konfiguracji komponentu

seba@elk:~$ sudo apt-get -y install kibana
seba@elk:~$ sudo vi /opt/kibana/config/kibana.yml

z nazwą serwera:

server.host: „localhost”

 
Włączenie Kibana i ustawienie automatycznego uruchomienia przy restartach maszyny:

seba@elk:~$ sudo update-rc.d kibana defaults 96 9
seba@elk:~$ sudo service kibana start

Instalacja Nginx

Instalacja serwera Nginx oraz podstawowa jego konfiguracja:

seba@elk:~$ sudo apt-get install nginx apache2-utils
seba@elk:~$ sudo htpasswd -c /etc/nginx/htpasswd.users kibanaadmin
seba@elk:~$ sudo vi /etc/nginx/sites-available/default

w której serwer będzie uruchomiony na porcie 80 i będzie posiadał uwierzytelnianie:

server {
listen 80;

server_name example.com;

auth_basic „Restricted Access”;
auth_basic_user_file /etc/nginx/htpasswd.users;

location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade’;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

 
Restart serwera:

seba@elk:~$ sudo service nginx restart

Instalacja Logstash

Pobranie paczki z repozytorium i instalacja Logstash:

seba@elk:~$ echo 'deb http://packages.elastic.co/logstash/2.2/debian stable main' | sudo tee /etc/apt/sources.list.d/logstash-2.2.x.list
seba@elk:~$ sudo apt-get update
seba@elk:~$ sudo apt-get install logstash

Przygotowanie certyfikatów SSL

Utworzenie katalogów do certyfikatów oraz przygotowanie konfiguracji dla narzędzia OpenSSL:

seba@elk:~$ sudo mkdir -p /etc/pki/tls/certs
seba@elk:~$ sudo mkdir /etc/pki/tls/private
seba@elk:~$ sudo vi /etc/ssl/openssl.cnf

z adresem serwera:

subjectAltName = IP: ELK_server_private_IP

 
Wygenerowanie certyfikatu za pomocą OpenSSL

seba@elk:~$ cd /etc/pki/tls
seba@elk:~$ sudo openssl req -config /etc/ssl/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

Konfiguracja Logstash

Określenie portu, na którym będzie nasłuchiwać Logstash, a także ścieżek do certyfikatów SSL:

seba@elk:~$ sudo vi /etc/logstash/conf.d/02-beats-input.conf

input {
beats {
port => 5044
ssl => true
ssl_certificate => „/etc/pki/tls/certs/logstash-forwarder.crt”
ssl_key => „/etc/pki/tls/private/logstash-forwarder.key”
}
}

 
Ustawienie filtrwów dla Sysloga:

seba@elk:~$ sudo vi /etc/logstash/conf.d/10-syslog-filter.conf

filter {
if [type] == „syslog” {
grok {
match => { „message” => „%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}” }
add_field => [ „received_at”, „%{@timestamp}” ]
add_field => [ „received_from”, „%{host}” ]
}
syslog_pri { }
date {
match => [ „syslog_timestamp”, „MMM d HH:mm:ss”, „MMM dd HH:mm:ss” ]
}
}
}

 
Skonfigurowanie komunikacji z Elasticsearch:

seba@elk:~$ sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf

output {
elasticsearch {
hosts => [„localhost:9200”]
sniffing => true
manage_template => false
index => „%{[@metadata][beat]}-%{+YYYY.MM.dd}”
document_type => „%{[@metadata][type]}”
}
}

Sprawdzenie wprowadzonej konfiguracji, restastr Logstash i włączenie automatycznego uruchomienia przy kolejnym restarcie serwera:

seba@elk:~$ sudo service logstash configtest
seba@elk:~$ sudo service logstash restart
seba@elk:~$ sudo update-rc.d logstash defaults 96 9

Dashboards dla Kibana

Pobranie i załadowanie przykładowych konfiguracji dla Kibana:

seba@elk:~$ cd
seba@elk:~$ curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip
seba@elk:~$ unzip beats-dashboards-*.zip
seba@elk:~$ cd beats-dashboards-1.1.0/
seba@elk:~$ ./load.sh 

Załadowanie indeksu Filebeat dla Kibana

seba@elk:~$ cd
seba@elk:~$ curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json
seba@elk:~$ curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@filebeat-index-template.json

Instalacja i konfiguracja Filebeat

seba@elk:~$ echo "deb https://packages.elastic.co/beats/apt stable main" |  sudo tee -a /etc/apt/sources.list.d/beats.list
seba@elk:~$ wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
seba@elk:~$ sudo apt-get update
seba@elk:~$ sudo apt-get install filebeat

Konfiguracja Filebeat w zakresie ścieżek do logów, typu logów (syslog), adresu serwera Logstash, rozmiaru paczki z logami oraz ścieżek do certyfikatów:

seba@elk:~$ sudo vi /etc/filebeat/filebeat.yml


paths:
– /var/log/auth.log
– /var/log/syslog
# – /var/log/*.log


document_type: syslog


### Logstash as output
logstash:
# The Logstash hosts
hosts: [„ELK_server_private_IP:5044”]


bulk_max_size: 1024


tls:
# List of root certificates for HTTPS server verifications
certificate_authorities: [„/etc/pki/tls/certs/logstash-forwarder.crt”]

 
Restart Filebeat i ustawienie automatycznego uruchomienia po restartcie maszyny:

seba@elk:~$ sudo service filebeat restart
seba@elk:~$ sudo update-rc.d filebeat defaults 95 10

Sprawdzenie działania Filebeat:

seba@elk:~$ curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Time limit is exhausted. Please reload CAPTCHA.