Dacă sunteți o persoană care este sau a fost în trecut, însărcinată cu inspectarea și analiza logării sistemului Linux, știi ce coșmar poate deveni acea sarcină dacă sunt monitorizate mai multe servicii simultan.
În zilele trecute, acea sarcină trebuia făcută mai ales manual, fiecare tip de jurnal fiind tratat separat. Din fericire, combinația dintre Elasticsearch, Logstash, și Kibana pe partea de server, împreună cu Filebeat din partea clientului, face ca acea activitate dificilă să pară astăzi o plimbare în parc.
Primele trei componente formează ceea ce se numește an ELAN stivă, al cărei scop principal este de a colecta jurnalele de pe mai multe servere în același timp (cunoscut și ca jurnal centralizat).
Citire sugerată:4 Instrumente bune de monitorizare și gestionare a jurnalelor open source pentru Linux
O interfață web integrată bazată pe java vă permite să inspectați rapid jurnalele dintr-o privire pentru o comparație mai ușoară și depanare. Aceste jurnale client sunt trimise către un server central de către Filebeat, care poate fi descris ca agent de expediere a jurnalelor.
Să vedem cum se potrivesc toate aceste piese. Mediul nostru de testare va consta din următoarele mașini:
Server central: CentOS 7 (Adresa IP: 192.168.0.29). 2 GB de RAM. Clientul nr. 1: CentOS 7 (Adresa IP: 192.168.0.100). 1 GB de RAM. Clientul nr. 2: Debian 8 (Adresa IP: 192.168.0.101). 1 GB de RAM.
Vă rugăm să rețineți că RAM valorile furnizate aici nu sunt condiții prealabile stricte, ci valori recomandate pentru implementarea cu succes a ELAN stiva pe serverul central. Mai puțin RAM pentru clienți nu va face deloc o mare diferență, dacă este cazul.
Să începem prin instalarea ELAN stiva pe server, împreună cu o scurtă explicație despre ceea ce face fiecare componentă:
Instalați următoarele pachete pe serverul central. În primul rând, vom instala Java JDK versiune 8 (Actualizați 102, cel mai recent în momentul scrierii acestui articol), care este o dependență a ELAN componente.
Poate doriți să verificați mai întâi în pagina de descărcări Java Aici pentru a vedea dacă există o actualizare mai nouă disponibilă.
# yum actualizare. # 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.
Este timpul să verificați dacă instalarea sa finalizat cu succes:
# java -versiune.
Pentru a instala cele mai recente versiuni de Elasticsearch, Logstash, și Kibana, va trebui să creăm depozite pentru da manual după cum urmează:
1. Importați cheia publică GPG Elasticsearch în managerul de pachete rpm:
# rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch.
2. Introduceți următoarele linii în fișierul de configurare a depozitului elasticsearch.repo
:
/etc/yum.repos.d/elasticsearch.repo
[elasticsearch] nume = depozit Elasticsearch. baseurl = http://packages.elastic.co/elasticsearch/2.x/centos. gpgcheck = 1. gpgkey = http://packages.elastic.co/GPG-KEY-elasticsearch. activat = 1.
3. Instalați pachetul Elasticsearch.
# yum instalați elasticsearch.
După finalizarea instalării, vi se va solicita să porniți și să activați elasticsearch:
4. Porniți și activați serviciul.
# systemctl daemon-reload. # systemctl activează elasticsearch. # systemctl pornește elasticsearch.
5. Permiteți traficul prin portul TCP 9200 în firewall:
# firewall-cmd --add-port = 9200 / tcp. # firewall-cmd --add-port = 9200 / tcp --permanent.
6. Verifica daca Elasticsearch răspunde la cereri simple peste HTTP:
# curl -X GET http://localhost: 9200.
Ieșirea comenzii de mai sus ar trebui să fie similară cu:
Asigurați-vă că ați parcurs pașii de mai sus și apoi continuați Logstash. Din moment ce ambele Logstash și Kibana împărtășește Elasticsearch GPG cheie, nu este nevoie să o reimportați înainte de a instala pachetele.
Citire sugerată:Gestionați jurnalele de sistem (configurați, rotiți și importați în baza de date) în CentOS 7
7. Introduceți următoarele linii în fișierul de configurare a depozitului logstash.repo
:
/etc/yum.repos.d/logstash.repo
[logstash] nume = Logstash. baseurl = http://packages.elasticsearch.org/logstash/2.2/centos. gpgcheck = 1. gpgkey = http://packages.elasticsearch.org/GPG-KEY-elasticsearch. activat = 1.
8. Instalați fișierul Logstash pachet:
# yum instala logstash.
9. Adauga o SSL certificat bazat pe adresa IP a serverului ELK la următoarea linie de sub [v3_ca]
secțiune în /etc/pki/tls/openssl.cnf
:
[v3_ca] subjectAltName = IP:192.168.0.29
10. Generați un certificat autosemnat valabil pentru 365 zile:
# 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. Configurați Logstash fișiere de intrare, ieșire și filtrare:
Intrare: Crea /etc/logstash/conf.d/input.conf
și introduceți următoarele rânduri în el. Acest lucru este necesar pentru ca Logstash să „învăța”Cum se procesează beat-urile provenite de la clienți. Asigurați-vă că calea către certificat și cheie se potrivesc cu căile corecte, așa cum este subliniat în pasul anterior:
/etc/logstash/conf.d/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" } }
Ieșire (/etc/logstash/conf.d/output.conf
) fișier:
/etc/logstash/conf.d/output.conf
output {elasticsearch {hosts => ["localhost: 9200"] sniffing => true manage_template => false index => "% {[@ metadata] [beat]} -% {+ YYYY.MM.dd}" document_type => „% {[@ metadate] [type]}”} }
Filtru (/etc/logstash/conf.d/filter.conf
) fișier. Vom înregistra mesaje syslog pentru simplitate:
/etc/logstash/conf.d/filter.conf
filtru { if [type] == "syslog" {grok {match => {"message" => "% {SYSLOGLINE}"}} data { match => ["timestamp", "MMM d HH: mm: ss", "MMM dd HH: mm: ss"] } } }
12. Verificați fișierul Logstash fișiere de configurare.
# service logstash configtest.
13. Porniți și activați logstash:
# systemctl daemon-reload. # systemctl începe logstash. # systemctl activa logstash.
14. Configurați paravanul de protecție pentru a permite Logstash să obțină jurnalele de la clienți (port TCP 5044):
# firewall-cmd --add-port = 5044 / tcp. # firewall-cmd --add-port = 5044 / tcp --permanent.
14. Introduceți următoarele linii în fișierul de configurare a depozitului kibana.repo
:
/etc/yum.repos.d/kibana.repo
[kibana] nume = depozit Kibana. baseurl = http://packages.elastic.co/kibana/4.4/centos. gpgcheck = 1. gpgkey = http://packages.elastic.co/GPG-KEY-elasticsearch. activat = 1.
15. Instalați fișierul Kibana pachet:
# yum instalează kibana.
16. Porniți și activați Kibana.
# systemctl daemon-reload. # systemctl pornește kibana. # systemctl activează kibana.
17. Asigurați-vă că puteți accesa interfața web Kibana de pe alt computer (permiteți traficul pe portul TCP 5601):
# firewall-cmd --add-port = 5601 / tcp. # firewall-cmd --add-port = 5601 / tcp --permanent.
18. Lansa Kibana (http://192.168.0.29:5601
) pentru a verifica dacă puteți accesa interfața web:
Vom reveni aici după ce am instalat și configurat Filebeat pe clienți.
Vă vom arăta cum să faceți acest lucru Clientul nr. 1 (repetați pentru Clientul nr. 2 după aceea, schimbarea căilor, dacă este cazul distribuției dvs.).
1. Copiați certificatul SSL de pe server către clienți:
# scp /etc/pki/tls/certs/logstash-forwarder.crt [e-mail protejat]: / etc / pki / tls / certs /
2. Importați fișierul Elasticsearch cheie publică GPG pentru managerul de pachete rpm:
# rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch.
3. Creați un depozit pentru Filebeat (/etc/yum.repos.d/filebeat.repo
) în CentOS distribuții bazate pe:
/etc/yum.repos.d/filebeat.repo
[filebeat] nume = Filebeat pentru clienții ELK. baseurl = https://packages.elastic.co/beats/yum/el/$basearch. activat = 1. gpgkey = https://packages.elastic.co/GPG-KEY-elasticsearch. gpgcheck = 1.
4. Configurați sursa pentru a instala Filebeat Debian și derivatele sale:
# aptitude install apt-transport-https. # echo "deb https://packages.elastic.co/beats/apt stabil principal "> /etc/apt/sources.list.d/filebeat.list. # aptitude update.
5. Instalați fișierul Filebeat pachet:
# yum install filebeat [Activat CentOSși bazate pe Distros] # aptitude install filebeat [ActivatDebian și derivatele sale]
6. Porniți și activați Filebeat:
# systemctl pornește filebeat. # systemctl activează filebeat.
Un cuvânt de precauție aici. Filebeat configurația este stocată într-un YAML fișier, care necesită o indentare strictă. Aveți grijă la acest lucru în timp ce editați /etc/filebeat/filebeat.yml
după cum urmează:
input_type: jurnal. document_type: syslog.
Pașii de mai sus sunt ilustrați în următoarea imagine:
Salvați modificările, apoi reporniți Filebeat pe clienți:
# systemctl reporniți filebeat.
După ce am parcurs pașii de mai sus pentru clienți, nu ezitați să continuați.
Pentru a verifica dacă jurnalele de la clienți pot fi trimise și primite cu succes, rulați următoarea comandă pe ELAN Server:
# curl -XGET ' http://localhost: 9200 / filebeat - * / _ căutare? frumos'
Rezultatul ar trebui să fie similar cu (observați modul în care mesajele de la /var/log/messages și /var/log/secure sunt primite de la client1 și client2):
În caz contrar, verificați Filebeat fișier de configurare pentru erori.
# journalctl -xe.
după ce ați încercat să reporniți Filebeat vă va indica spre linia (legile) ofensatoare.
După ce am verificat că jurnalele sunt expediate de clienți și primite cu succes pe server. Primul lucru în care va trebui să facem Kibana configurează un model de index și îl setează ca implicit.
Puteți descrie un index ca o bază de date completă într-un context de bază de date relațională. Vom merge cu filebeat- *
(sau puteți utiliza criterii de căutare mai precise așa cum se explică în documentația oficială).
introduce filebeat- *
în Numele indexului sau câmp tipar și apoi faceți clic pe Crea:
Vă rugăm să rețineți că vi se va permite să introduceți mai târziu criterii de căutare mai fine. Apoi, faceți clic pe steaua din interiorul dreptunghiului verde pentru a o configura ca model implicit de index:
În cele din urmă, în Descoperi din meniu veți găsi mai multe câmpuri de adăugat la raportul de vizualizare a jurnalului. Doar plasați cursorul deasupra lor și dați clic Adăuga:
Rezultatele vor fi afișate în zona centrală a ecranului, așa cum se arată mai sus. Simțiți-vă liber să jucați (adăugați și eliminați câmpuri din raportul jurnal) pentru a vă familiariza Kibana.
În mod implicit, Kibana va afișa înregistrările care au fost procesate în timpul ultimei 15 minute (vezi colțul din dreapta sus), dar puteți schimba acest comportament selectând un alt interval de timp:
În acest articol am explicat cum să configurați o stivă ELK pentru a colecta jurnalele de sistem trimise de doi clienți, o mașină CentOS 7 și una Debian 8.
Acum puteți face referire la documentația oficială Elasticsearch și găsiți mai multe detalii despre cum să utilizați această configurație pentru a vă inspecta și analiza jurnalele mai eficient.
Dacă aveți întrebări, nu ezitați să întrebați. Asteptam sa auzim de tine.