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


Ako ste osoba koja je, ili je bila u prošlosti, zadužena za inspekciju i analizu zapisnika sustava u Linuxu, znate u kakvu noćnu moru taj zadatak može postati ako se više usluga nadzire istovremeno.

U prošlim danima taj se zadatak morao obavljati uglavnom ručno, pri čemu se svaka vrsta dnevnika obrađivala zasebno. Srećom, kombinacija Elasticsearch, Logstash i Kibana na strani poslužitelja, uz Filebeat na klijentu stranu, čini da taj nekada težak zadatak danas izgleda kao šetnja parkom.

Prve tri komponente tvore ono što se naziva ELK stog, čija je glavna svrha prikupljanje zapisa s više poslužitelja u isto vrijeme (poznato i kao centralizirano bilježenje).

Predloženo za čitanje: 4 dobra alata za nadzor i upravljanje zapisima otvorenog koda za Linux

Ugrađeno web sučelje temeljeno na Javi omogućuje vam brz pregled zapisa na prvi pogled radi lakše usporedbe i rješavanja problema. Ove klijentske zapise šalje Filebeat na središnji poslužitelj, koji se može opisati kao agent za slanje zapisa.

Pogledajmo kako se svi ovi dijelovi slažu. Naše testno okruženje sastojat će se od sljedećih strojeva:

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 ovdje navedene vrijednosti RAM nisu strogi preduvjeti, već preporučene vrijednosti za uspješnu implementaciju ELK stoga na središnjem poslužitelju. Manje RAM-a na klijentima neće napraviti veliku razliku, ako je uopće bude.

Instaliranje ELK Stack na poslužitelj

Započnimo instaliranjem ELK stoga na poslužitelju, zajedno s kratkim objašnjenjem što svaka komponenta radi:

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

Instalirajte sljedeće pakete na središnji poslužitelj. Najprije ćemo instalirati Java JDK verziju 8 (ažuriranje 102, najnovije u vrijeme pisanja ovog teksta), što je ovisnost ELK komponenti.

Možda ćete htjeti prvo provjeriti na stranici za preuzimanje Jave ovdje da vidite postoji li 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 je li instalacija uspješno dovršena:

java -version

Da bismo instalirali najnovije verzije Elasticsearch, Logstash i Kibana, morat ćemo ručno izraditi spremišta za yum kako slijedi:

Omogući spremište Elasticsearch

1. Uvezite Elasticsearch javni GPG ključ u rpm upravitelj paketa:

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

2. Umetnite sljedeće retke u konfiguracijsku datoteku 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 instalacija završi, od vas će se tražiti da pokrenete i omogućite elasticsearch:

4. Pokrenite i omogućite uslugu.

systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch

5. Dopustite promet preko TCP priključka 9200 u vašem vatrozidu:

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

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

curl -X GET http://localhost:9200

Izlaz gornje naredbe trebao bi biti sličan:

Obavezno izvršite gornje korake, a zatim nastavite s Logstashom. Budući da i Logstash i Kibana dijele Elasticsearch GPG ključ, nema potrebe za ponovnim uvozom prije instaliranja paketa.

Predloženo za čitanje: Upravljanje zapisnicima sustava (konfiguracija, rotiranje i uvoz u bazu podataka) u CentOS 7

Omogući Logstash spremište

7. Umetnite sljedeće retke u konfiguracijsku datoteku 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 paket Logstash:

yum install logstash

9. Dodajte SSL certifikat temeljen na IP adresi ELK poslužitelja u sljedeći red ispod odjeljka [ v3_ca ] 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 filter datoteke:

Unos: Kreirajte /etc/logstash/conf.d/input.conf i umetnite sljedeće retke u njega. Ovo je neophodno kako bi Logstash “naučio” kako obrađivati ritmove koji dolaze od klijenata. Uvjerite se da put do certifikata i ključa odgovara pravim putovima kako 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"
  }
}

Izlazna (/etc/logstash/conf.d/output.conf) datoteka:


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) datoteka. Zabilježit ćemo poruke syslog-a 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 vatrozid da omogućite Logstashu da dobije zapise od klijenata (TCP port 5044):

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

Omogući Kibana repozitorij

14. Umetnite sljedeće retke u konfiguracijsku datoteku 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 paket Kibana:

yum install kibana

16. Pokrenite i omogućite Kibanu.

systemctl daemon-reload
systemctl start kibana
systemctl enable kibana

17. Provjerite možete li pristupiti Kibaninom web sučelju s drugog računala (dopustite 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 provjerite možete li pristupiti web sučelju:

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

Predloženo za čitanje: Pratite zapise poslužitelja u stvarnom vremenu pomoću alata “Log.io” u Linuxu

Instalirajte Filebeat na poslužitelje klijenata

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

1. Kopirajte SSL certifikat s poslužitelja na klijente:

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

2. Uvezite javni GPG ključ Elasticsearch u upravitelj paketa rpm:

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

3. Napravite spremište za Filebeat (/etc/yum.repos.d/filebeat.repo) u CentOS > temeljene 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 za instaliranje Filebeata 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 paket Filebeat:

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

Konfigurirajte Filebeat

Riječ opreza ovdje. Konfiguracija Filebeat pohranjuje se u datoteci YAML koja zahtijeva striktno uvlačenje. Budite oprezni s ovim dok uređujete /etc/filebeat/filebeat.yml na sljedeći način:

  1. Pod stazama naznačite koje datoteke dnevnika treba "poslati" na ELK poslužitelj.
  2. Pod prospektori:
input_type: log
document_type: syslog
  1. Pod izlazom:

    1. Odkomentirajte redak koji počinje s logstash.
    2. Naznačite IP adresu vašeg ELK poslužitelja i priključak na kojem Logstash sluša u hostovima.
    3. Provjerite pokazuje li put do certifikata stvarnu datoteku koju ste izradili u Koraku I (odjeljak Logstash) iznad.

Gore navedeni koraci ilustrirani su na sljedećoj slici:

Spremite promjene, a zatim ponovno pokrenite Filebeat na klijentima:

systemctl restart filebeat

Nakon što dovršimo gore navedene korake za klijente, slobodno nastavite.

Testiranje Filebeata

Kako biste provjerili mogu li se dnevnici s klijenata uspješno slati i primati, pokrenite sljedeću naredbu na ELK poslužitelju:

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 pogrešaka u konfiguracijskoj datoteci Filebeat.

journalctl -xe

nakon pokušaja ponovnog pokretanja Filebeat će vas uputiti na uvredljive retke.

Testiranje Kibane

Nakon što smo potvrdili da klijenti šalju zapise i da li ih poslužitelj uspješno prima. Prva stvar koju ćemo morati učiniti u Kibani je konfigurirati uzorak indeksa i postaviti ga kao zadanog.

Indeks možete opisati kao punu bazu podataka u kontekstu relacijske baze podataka. Ići ćemo s filebeat-* (ili možete koristiti preciznije kriterije pretraživanja kako je objašnjeno u službenoj dokumentaciji).

Unesite filebeat-* u Naziv indeksa ili polje uzorka i zatim kliknite Stvori:

Imajte na umu da ćete kasnije moći unijeti detaljnije kriterije pretraživanja. Zatim kliknite zvjezdicu unutar zelenog pravokutnika da biste ga konfigurirali kao zadani uzorak indeksa:

Konačno, u izborniku Otkrij pronaći ćete nekoliko polja za dodavanje u izvješće o vizualizaciji dnevnika. Samo zadržite pokazivač iznad njih i kliknite Dodaj:

Rezultati će biti prikazani u središnjem dijelu zaslona kao što je prikazano gore. Slobodno se poigrajte (dodajte i uklonite polja iz izvješća dnevnika) kako biste se upoznali s Kibanom.

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

Sažetak

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

Sada možete pogledati službenu Elasticsearch dokumentaciju i pronaći više pojedinosti o tome kako koristiti ovu postavku za učinkovitiji pregled i analizu vaših zapisa.

Ako imate pitanja, ne ustručavajte se pitati. Radujemo se vašem odgovoru.