Elasticsearchi, Logstashi ja Kibana (ELK-i virna) installimine CentOS/RHEL 7-le


Kui olete isik, kes vastutab või on varem olnud Linuxi süsteemilogide kontrollimise ja analüüsimise eest, teate, mis õudusunenägu sellest ülesandest võib saada, kui korraga jälgitakse mitut teenust.

Varasematel päevadel tuli seda ülesannet teha enamasti käsitsi, kusjuures iga logitüübi käsitleti eraldi. Õnneks muudab serveripoolne Elasticsearchi, Logstashi ja Kibana kombinatsioon koos kliendipoolse Filebeatiga selle kunagise raske ülesande tänaseks pargis jalutuskäiguks.

Esimesed kolm komponenti moodustavad nn ELK-i virna, mille peamine eesmärk on koguda logisid korraga mitmest serverist (tuntud ka kui tsentraliseeritud logimine).

Sisseehitatud Java-põhine veebiliides võimaldab teil logisid silmapilkselt kiiresti kontrollida, et neid oleks lihtsam võrrelda ja vigade otsimine. Need kliendilogid saadab Filebeat keskserverisse, mida võib kirjeldada kui logi saatmisagenti.

Vaatame, kuidas kõik need tükid omavahel sobivad. Meie testikeskkond koosneb järgmistest masinatest:

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.

Pange tähele, et siin esitatud RAM-i väärtused ei ole ranged eeldused, vaid soovitatavad väärtused ELK-i virna edukaks juurutamiseks keskserveris. Klientide vähem RAM-i ei muuda üldse, kui üldse, palju erinevusi.

ELK Stacki installimine serverisse

Alustame ELK-i pinu installimisega serverisse koos lühikese selgitusega selle kohta, mida iga komponent teeb:

  1. Elasticsearch salvestab logid, mille kliendid saadavad.
  2. Logstash töötleb neid logisid.
  3. Kibana pakub veebiliidest, mis aitab meil logisid kontrollida ja analüüsida.

Järgmised paketid installige keskserverisse. Kõigepealt installime Java JDK versiooni 8 (värskendus 102, viimane selle kirjutamise ajal), mis sõltub ELK-i komponentidest.

Kõigepealt võiksite siin Java-allalaadimiste lehel kontrollida, kas mõni uuem värskendus on saadaval.

# 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

Aeg kontrollida, kas installimine on edukalt lõpule viidud:

# java -version

Elasticsearchi, Logstashi ja Kibana uusimate versioonide installimiseks peame looma yumi jaoks hoidlad käsitsi järgmiselt:

1. Importige Elasticsearchi avalik GPG-võti rpm paketihaldurisse:

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

2. Sisestage hoidla konfiguratsioonifaili elasticsearch.repo järgmised read:

[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. Installige pakett Elasticsearch.

# yum install elasticsearch

Kui installimine on lõpule jõudnud, palutakse teil elasticsearch käivitada ja lubada:

4. Käivitage ja lubage teenus.

# systemctl daemon-reload
# systemctl enable elasticsearch
# systemctl start elasticsearch

5. Lubage oma tulemüüris liiklus TCP-pordi 9200 kaudu:

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

6. Kontrollige, kas Elasticsearch vastab lihtsatele HTTP-päringutele:

# curl -X GET http://localhost:9200

Ülaltoodud käsu väljund peaks olema sarnane:

Veenduge, et täidaksite ülaltoodud toimingud ja jätkake Logstashiga. Kuna nii Logstash kui ka Kibana jagavad Elasticsearch GPG-võtit, pole seda enne pakettide installimist vaja uuesti importida.

7. Sisestage hoidla konfiguratsioonifaili logstash.repo järgmised read:

[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. Installige Logstashi pakett:

# yum install logstash

9. Lisage ELK-serveri IP-aadressi põhjal SSL-sertifikaat järgmisele reale /etc/pki/tls/openssl.cnf [v3_ca] alla. >:

[ v3_ca ]
subjectAltName = IP: 192.168.0.29

10. Looge 365 päeva kehtiv omakäeline allkiri:

# 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. Logstashi sisend-, väljund- ja filtrifailide konfigureerimine:

Sisend: looge /etc/logstash/conf.d/input.conf ja sisestage sinna järgmised read. See on vajalik selleks, et Logstash\"õpiks", kuidas klientidelt pärinevaid lööke töödelda. Veenduge, et serdi ja võtme tee vastaks õigele teele, nagu eelmises etapis kirjeldatud:

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

Väljundfail ( /etc/logstash/conf.d/output.conf ):

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

Filtreeri ( /etc/logstash/conf.d/filter.conf ) fail. Lihtsuse huvides logime sisse logimisandmed:

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

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

12. Kontrollige Logstashi konfiguratsioonifaile.

# service logstash configtest

13. Logstashi käivitamine ja lubamine:

# systemctl daemon-reload
# systemctl start logstash
# systemctl enable logstash

14. Konfigureerige tulemüür, et Logstash saaks logisid klientidelt kätte (TCP port 5044):

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

14. Sisestage hoidla konfiguratsioonifaili kibana.repo järgmised read:

[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. Installige Kibana pakett:

# yum install kibana

16. Käivitage ja lubage Kibana.

# systemctl daemon-reload
# systemctl start kibana
# systemctl enable kibana

17. Veenduge, et pääsete Kibana veebiliidesele juurde teisest arvutist (lubage liiklust TCP-pordil 5601):

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

18. Käivitage Kibana ( http://192.168.0.29:5601 ), et kontrollida, kas teil on juurdepääs veebiliidesele:

Naaseme siia pärast seda, kui oleme Filebeat klientidele installinud ja konfigureerinud.

Installige Filebeat kliendiserveritesse

Näitame teile, kuidas seda teha kliendi nr 1 jaoks (korrake seda hiljem kliendi nr 2 jaoks, muutes teid, kui see teie levitamise korral on kohaldatav).

1. Kopeerige SSL-sertifikaat serverist klientidele:

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

2. Importige Elasticsearchi avalik GPG-võti rpm paketihaldurisse:

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

3. Looge CentOS-põhistes jaotustes Filebeat'i hoidla ( /etc/yum.repos.d/filebeat.repo ):

[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. Konfigureerige allikas Filebeati installimiseks Debianile ja selle derivaatidele:

# 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. Installige pakett Filebeat:

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

6. Käivitage ja lubage Filebeat:

# systemctl start filebeat
# systemctl enable filebeat

Siinkohal ettevaatlik sõna. Filebeat'i konfiguratsioon salvestatakse YAML-faili, mis nõuab ranget taanet. Olge sellega ettevaatlik, kui muudate faili /etc/filebeat/filebeat.yml järgmiselt:

  1. Teede all märkige, millised logifailid tuleks ELK-serverisse\"saata".
  2. Uurijate all:

input_type: log
document_type: syslog

  1. Väljundi all:
    1. Kommenteerige logipesuga algav rida.
    2. Märkige oma ELK serveri ja pordi IP-aadress, kus Logstash hostides kuulab.
    3. Veenduge, et sertifikaadi tee osutab tegelikule failile, mille lõite I toimingus (jaotis Logstash).

    Ülaltoodud samme on illustreeritud järgmisel pildil:

    Salvestage muudatused ja taaskäivitage Filebeat klientides:

    # systemctl restart filebeat
    

    Kui oleme klientide jaoks ülaltoodud toimingud teinud, jätkake julgelt.

    Kontrollimaks, kas klientide logisid saab edukalt saata ja vastu võtta, käivitage ELK serveris järgmine käsk:

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

    Väljund peaks olema sarnane (märkake, kuidas kliendilt1 ja kliendilt2 võetakse vastu sõnumeid/var/log/messages ja/var/log/secure):

    Muul juhul kontrollige, kas Filebeat'i konfiguratsioonifailis pole vigu.

    # journalctl -xe
    

    pärast Filebeat'i taaskäivitamise katset suunab teid rikkuja (te) poole.

    Pärast seda, kui oleme kontrollinud, kas kliendid saadavad logisid ja saavad neid serveris edukalt kätte. Esimene asi, mida peame Kibanas tegema, on indeksi mustri konfigureerimine ja vaikimisi seadistamine.

    Relatsiooni andmebaasi kontekstis saate indeksit kirjeldada täieliku andmebaasina. Kasutame valikut filebeat- * (või võite kasutada täpsemaid otsingukriteeriume, nagu on selgitatud ametlikus dokumentatsioonis).

    Sisestage väljale Indeksi nimi või muster filebeat- * ja klõpsake siis käsku Loo:

    Pange tähele, et teil on lubatud hiljem täpsemad otsingukriteeriumid sisestada. Järgmisena klõpsake rohelise ristküliku sees oleval tärnil, et konfigureerida see vaikimisi indeksmustrina:

    Lõpuks leiate menüüst Avasta mitu välja, mida logi visualiseerimise aruandesse lisada. Hõljutage kursorit nende kohal ja klõpsake nuppu Lisa:

    Tulemused kuvatakse ekraani keskosas, nagu eespool näidatud. Kibanaga tutvumiseks võite vabalt ringi mängida (logiraportist väljad lisada ja eemaldada).

    Vaikimisi kuvab Kibana viimase 15 minuti jooksul töödeldud kirjed (vt paremas ülanurgas), kuid saate seda käitumist muuta, valides teise ajaraami:

    Kokkuvõte

    Selles artiklis oleme selgitanud, kuidas seadistada ELK-i virn kahe kliendi, CentOS 7 ja Debian 8 masina saadetud süsteemilogide kogumiseks.

    Nüüd saate viidata ametlikule Elasticsearchi dokumentatsioonile ja leida lisateavet selle kohta, kuidas seda seadistust oma logide tõhusamaks kontrollimiseks ja analüüsimiseks kasutada.

    Kui teil on küsimusi, küsige kindlasti. Ootame teid huviga.