Kako instalirati Elasticsearch, Logstash i Kibana (ELK Stack) na CentOS/RHEL 7


Ako ste osoba koja je ili je u prošlosti bila zadužena za inspekciju i analizu sistemskih logova u Linuxu, znate kakva noćna mora taj zadatak može postati ako se više servisa prati istovremeno.

U prošlim danima, taj zadatak se uglavnom morao obavljati ručno, sa svakim tipom dnevnika odvojeno. Na sreću, kombinacija Elasticsearch, Logstash i Kibana na strani servera, zajedno sa Filebeat na klijentu stranu, čini da taj nekada težak zadatak danas izgleda kao šetnja parkom.

Prve tri komponente čine ono što se naziva ELK stog, čija je glavna svrha prikupljanje dnevnika sa više servera u isto vrijeme (poznato i kao centralizirano evidentiranje).

Preporučeno čitanje: 4 dobra alata za praćenje i upravljanje dnevnikom otvorenog koda za Linux

Ugrađeno web sučelje zasnovano na java omogućava vam brzu inspekciju dnevnika na prvi pogled radi lakšeg poređenja i rješavanja problema. Ove klijentske evidencije šalje Filebeat na centralni server, koji se može opisati kao agent za isporuku dnevnika.

Pogledajmo kako se svi ovi dijelovi uklapaju. Naše testno okruženje će se sastojati od sledećih mašina:

Central Server: CentOS 7 (IP address: 192.168.0.29). 2 GB of RAM.
Client #1: CentOS 7 (IP address: 192.168.0.100). 1 GB of RAM.
Client #2: Debian 8 (IP address: 192.168.0.101). 1 GB of RAM.

Imajte na umu da vrijednosti RAM koje su ovdje navedene nisu strogi preduvjeti, već preporučene vrijednosti za uspješnu implementaciju ELK steka na centralnom serveru. Manje RAM-a na klijentima neće napraviti veliku razliku, ako uopšte postoji.

Instaliranje ELK Stacka na serveru

Počnimo instalacijom ELK steka na server, zajedno sa kratkim objašnjenjem šta svaka komponenta radi:

  1. Elasticsearch pohranjuje zapise koje šalju klijenti.
  2. Logstash obrađuje te zapise.
  3. Kibana pruža web sučelje koje će nam pomoći da pregledamo i analiziramo dnevnike.

Instalirajte sljedeće pakete na centralni server. Prvo ćemo instalirati Java JDK verziju 8 (ažuriranje 102, najnovije u vrijeme pisanja ovog teksta), što je zavisnost ELK komponenti.

Možda ćete htjeti prvo provjeriti na stranici Java preuzimanja ovdje da vidite da li je dostupno novije ažuriranje.

yum update
cd /opt
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jre-8u102-linux-x64.rpm"
rpm -Uvh jre-8u102-linux-x64.rpm

Vrijeme je da provjerite da li je instalacija uspješno završena:

java -version

Da instaliramo najnovije verzije Elasticsearch, Logstash i Kibana, morat ćemo ručno kreirati spremišta za yum kao što slijedi:

Omogućite spremište Elasticsearch

1. Uvezite Elasticsearch javni GPG ključ u rpm menadžer paketa:

rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

2. Umetnite sljedeće redove u konfiguracijski fajl spremišta elasticsearch.repo:

[elasticsearch]
name=Elasticsearch repository
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

3. Instalirajte paket Elasticsearch.

yum install elasticsearch

Kada se instalacija završi, od vas će biti zatraženo da pokrenete i omogućite elasticsearch:

4. Pokrenite i omogućite uslugu.

systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch

5. Dozvolite promet preko TCP porta 9200 u vašem zaštitnom zidu:

firewall-cmd --add-port=9200/tcp
firewall-cmd --add-port=9200/tcp --permanent

6. Provjerite da li Elasticsearch odgovara na jednostavne zahtjeve preko HTTP-a:

curl -X GET http://localhost:9200

Izlaz gornje naredbe trebao bi biti sličan:

Provjerite jeste li dovršili gore navedene korake, a zatim nastavite s Logstash. Pošto i Logstash i Kibana dijele ključ Elasticsearch GPG, nema potrebe za ponovnim uvozom prije instaliranja paketa.

Preporučeno čitanje: Upravljajte sistemskim zapisnicima (konfigurirajte, rotirajte i uvezite u bazu podataka) u CentOS-u 7

Omogućite Logstash spremište

7. Umetnite sljedeće redove u konfiguracijski fajl spremišta logstash.repo:

[logstash]
name=Logstash
baseurl=http://packages.elasticsearch.org/logstash/2.2/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

8. Instalirajte Logstash paket:

yum install logstash

9. Dodajte SSL certifikat na osnovu IP adrese ELK servera u sljedećem redu ispod [ v3_ca ] odjeljka u >/etc/pki/tls/openssl.cnf:

[ v3_ca ]
subjectAltName = IP: 192.168.0.29

10. Generirajte samopotpisani certifikat koji vrijedi 365 dana:

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

11. Konfigurirajte Logstash ulazne, izlazne i filterske fajlove:

Unos: Kreirajte /etc/logstash/conf.d/input.conf i umetnite sljedeće redove u njega. Ovo je neophodno da bi Logstash “naučio” kako da obrađuje udarce koji dolaze od klijenata. Uvjerite se da se put do certifikata i ključa podudaraju s pravim putevima kao što je navedeno u prethodnom koraku:

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

Izlazni (/etc/logstash/conf.d/output.conf) fajl:


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

Filter (/etc/logstash/conf.d/filter.conf) fajl. Zabilježit ćemo syslog poruke radi jednostavnosti:


filter {
if [type] == "syslog" {
	grok {
  	match => { "message" => "%{SYSLOGLINE}" }
	}

	date {
match => [ "timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
  }
}

12. Provjerite Logstash konfiguracijske datoteke.

service logstash configtest

13. Pokrenite i omogućite logstash:

systemctl daemon-reload
systemctl start logstash
systemctl enable logstash

14. Konfigurirajte firewall kako biste omogućili Logstash-u da dobije dnevnike od klijenata (TCP port 5044):

firewall-cmd --add-port=5044/tcp
firewall-cmd --add-port=5044/tcp --permanent

Omogućite Kibana Repozitorijum

14. Umetnite sljedeće redove u konfiguracijski fajl spremišta kibana.repo:

[kibana]
name=Kibana repository
baseurl=http://packages.elastic.co/kibana/4.4/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

15. Instalirajte Kibana paket:

yum install kibana

16. Pokrenite i omogućite Kibana.

systemctl daemon-reload
systemctl start kibana
systemctl enable kibana

17. Uvjerite se da možete pristupiti Kibaninom web sučelju s drugog računara (omogućite promet na TCP portu 5601):

firewall-cmd --add-port=5601/tcp
firewall-cmd --add-port=5601/tcp --permanent

18. Pokrenite Kibana (http://192.168.0.29:5601) da potvrdite da možete pristupiti web sučelju:

Vratit ćemo se ovdje nakon što instaliramo i konfiguriramo Filebeat na klijentima.

Predloženo čitanje: Nadgledajte zapise servera u realnom vremenu pomoću alata “Log.io” u Linuxu

Instalirajte Filebeat na klijentske servere

Pokazat ćemo vam kako to učiniti za Klijenta #1 (ponovite za Klijenta #2 nakon toga, mijenjajući putanje ako je primjenjivo na vašu distribuciju).

1. Kopirajte SSL certifikat sa servera na klijente:

scp /etc/pki/tls/certs/logstash-forwarder.crt [email :/etc/pki/tls/certs/

2. Uvezite Elasticsearch javni GPG ključ u rpm menadžer paketa:

rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

3. Kreirajte spremište za Filebeat (/etc/yum.repos.d/filebeat.repo) u CentOSu > zasnovane distribucije:

[filebeat]
name=Filebeat for ELK clients
baseurl=https://packages.elastic.co/beats/yum/el/$basearch
enabled=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
gpgcheck=1

4. Konfigurirajte izvor da instalirate Filebeat na Debian i njegove derivate:

aptitude install apt-transport-https
echo "deb https://packages.elastic.co/beats/apt stable main" > /etc/apt/sources.list.d/filebeat.list
aptitude update

5. Instalirajte Filebeat paket:

yum install filebeat        [On CentOS and based Distros]
aptitude install filebeat   [On Debian and its derivatives]

6. Pokrenite i omogućite Filebeat:

systemctl start filebeat
systemctl enable filebeat

Konfigurišite Filebeat

Reč opreza. Konfiguracija Filebeat je pohranjena u YAML datoteci, koja zahtijeva strogo uvlačenje. Budite oprezni s ovim dok uređujete /etc/filebeat/filebeat.yml na sljedeći način:

  1. U okviru putanja, naznačite koje datoteke evidencije treba “isporučiti” na ELK server.
  2. Pod prokopačima:
input_type: log
document_type: syslog
  1. Pod izlaz:

    1. Dekomentirajte red koji počinje sa logstash.
    2. Navedite IP adresu vašeg ELK servera i port na kojem Logstash sluša u hostovima.
    3. Uvjerite se da put do certifikata ukazuje na stvarnu datoteku koju ste kreirali u I. koraku (Logstash odjeljak) iznad.

Gore navedeni koraci su ilustrirani na sljedećoj slici:

Sačuvajte promjene, a zatim ponovo pokrenite Filebeat na klijentima:

systemctl restart filebeat

Kada završimo gore navedene korake za klijente, slobodno nastavite.

Testiranje Filebeat-a

Da biste provjerili da li se zapisnici od klijenata mogu uspješno poslati i primiti, pokrenite sljedeću naredbu na ELK serveru:

curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

Izlaz bi trebao biti sličan (primijetite kako se poruke od /var/log/messages i /var/log/secure primaju od client1 i klijent2):

U suprotnom, provjerite ima li grešaka u konfiguracijskoj datoteci Filebeat.

journalctl -xe

nakon pokušaja ponovnog pokretanja Filebeat će vas uputiti na vrijeđajuću liniju(e).

Testing Kibana

Nakon što smo potvrdili da se logovi šalju od strane klijenata i da su uspješno primljeni na server. Prva stvar koju ćemo morati da uradimo u Kibana je da konfigurišemo indeksni obrazac i postavimo ga kao podrazumevani.

Možete opisati indeks kao punu bazu podataka u kontekstu relacijske baze podataka. Ići ćemo sa filebeat-* (ili možete koristiti precizniji kriterij pretraživanja kako je objašnjeno u službenoj dokumentaciji).

Unesite filebeat-* u Naziv indeksa ili polje uzorka, a zatim kliknite na Kreiraj:

Imajte na umu da će vam kasnije biti dozvoljeno da unesete preciznije kriterije pretraživanja. Zatim kliknite na zvijezdu unutar zelenog pravokutnika da ga konfigurirate kao zadani indeksni obrazac:

Konačno, u meniju Otkrijte pronaći ćete nekoliko polja za dodavanje u izvještaj vizualizacije dnevnika. Samo zadržite pokazivač iznad njih i kliknite Dodaj:

Rezultati će biti prikazani u središnjem dijelu ekrana kao što je prikazano iznad. Slobodno se poigrajte (dodajte i uklonite polja iz izvještaja dnevnika) da biste se upoznali sa Kibanom.

Prema zadanim postavkama, Kibana će prikazati zapise koji su obrađeni u posljednjih 15 minuta (pogledajte gornji desni kut), ali to ponašanje možete promijeniti odabirom drugog vremenskog okvira:

Sažetak

U ovom članku smo objasnili kako postaviti ELK stog za prikupljanje sistemskih dnevnika koje šalju dva klijenta, CentOS 7 i Debian 8 strojevi.

Sada možete pogledati zvaničnu Elasticsearch dokumentaciju i pronaći više detalja o tome kako koristiti ovu postavku za efikasniju inspekciju i analizu vaših dnevnika.

Ako imate bilo kakvih pitanja, ne ustručavajte se pitati. Radujemo se Vašem odgovoru.