Wéi installéiere Elasticsearch, Logstash, a Kibana (ELK Stack) op CentOS/RHEL 7
Wann Dir eng Persoun sidd, oder war an der Vergaangenheet, zoustänneg fir d'Inspektioun an d'Analyse vun System Logbicher am Linux, wësst Dir wat en Albtraum dës Aufgab ka ginn, wa verschidde Servicer gläichzäiteg iwwerwaacht ginn.
An de leschten Deeg huet dës Aufgab meeschtens manuell gemaach, mat all Logtyp getrennt gehandhabt. Glécklecherweis mécht d'Kombinatioun vun Elasticsearch, Logstash a Kibana op der Server Säit, zesumme mam Filebeat op der Client Säit, déi eemol schwiereg Aufgab wéi e Spazéiergang am Park haut.
Déi éischt dräi Komponente bilden wat en ELK Stack genannt gëtt, deem säin Haaptzweck ass Logbicher vu méi Serveren zur selwechter Zäit ze sammelen (och bekannt als zentraliséiert Logbicher).
Eng agebaut Java-baséiert Web-Interface erlaabt Iech Logbicher séier op ee Bléck z'inspektéieren fir méi einfache Verglach a Problembehandlung. Dës Client Logbicher ginn op en zentrale Server vum Filebeat geschéckt, deen als Logverschécken Agent beschriwwe ka ginn.
Loosst eis kucken wéi all dës Stécker zesumme passen. Eis Testëmfeld besteet aus de folgende Maschinnen:
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.
Notéiert w.e.g. datt d'RAM Wäerter déi hei virgesi sinn net strikt Viraussetzunge sinn, awer recommandéiert Wäerter fir eng erfollegräich Ëmsetzung vum ELK Stack op den zentrale Server. Manner RAM op Clienten wäert net vill Ënnerscheed maachen, wann all, iwwerhaapt.
ELK Stack op de Server installéieren
Loosst eis ufänken mam ELK Stack um Server z'installéieren, zesumme mat enger kuerzer Erklärung iwwer wat all Komponent mécht:
- Elasticsearch späichert d'Logbicher déi vun de Cliente geschéckt ginn.
- Logstash veraarbecht dës Logbicher.
- Kibana stellt d'Web-Interface zur Verfügung, déi eis hëllefe fir d'Logbicher z'inspektéieren an ze analyséieren.
Installéiert déi folgend Packagen um zentrale Server. Als éischt wäerte mir Java JDK Versioun 8 installéieren (Update 102, déi lescht am Moment vun dësem Schreiwen), wat eng Ofhängegkeet vun den ELK Komponenten ass.
Dir wëllt vläicht als éischt op der Java Downloads Säit hei kucken fir ze kucken ob et en neien Update verfügbar ass.
# 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
Zäit fir ze kontrolléieren ob d'Installatioun erfollegräich ofgeschloss ass:
# java -version
Fir déi lescht Versioune vun Elasticsearch, Logstash, a Kibana z'installéieren, musse mir Repositories fir Yum manuell erstellen wéi follegt:
1. Import den Elasticsearch ëffentleche GPG Schlëssel an den rpm Package Manager:
# rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
2. Füügt déi folgend Zeilen an d'Repository Konfiguratiounsdatei elasticsearch.repo
an:
[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. Installéiert de Package Elasticsearch.
# yum install elasticsearch
Wann d'Installatioun fäerdeg ass, gitt Dir opgefuerdert Elasticsearch ze starten an z'aktivéieren:
4. Start an aktivéiert de Service.
# systemctl daemon-reload # systemctl enable elasticsearch # systemctl start elasticsearch
5. Erlaabt Traffic duerch den TCP Hafen 9200 an Ärer Firewall:
# firewall-cmd --add-port=9200/tcp # firewall-cmd --add-port=9200/tcp --permanent
6. Kuckt ob Elasticsearch op einfach Ufroen iwwer HTTP reagéiert:
# curl -X GET http://localhost:9200
D'Ausgab vum uewe genannte Kommando soll ähnlech sinn wéi:
Vergewëssert Iech datt Dir déi uewe genannte Schrëtt ofgeschloss hutt an da fuert mat Logstash weider. Well souwuel Logstash wéi och Kibana den Elasticsearch GPG Schlëssel deelen, ass et net néideg et nei z'importéieren ier Dir d'Packagen installéiert.
7. Füügt déi folgend Zeilen an d'Repository Konfiguratiounsdatei logstash.repo
an:
[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. Installéiert de Logstash Package:
# yum install logstash
9. Füügt en SSL Zertifikat op Basis vun der IP Adress vum ELK Server op der folgender Linn ënnert der [ v3_ca ]
Sektioun an /etc/pki/tls/openssl.cnf
:
[ v3_ca ] subjectAltName = IP: 192.168.0.29
10. Generéiere e selbst ënnerschriwwenen Zertifika valabel fir 365 Deeg:
# 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. Logstash Input, Output a Filterdateien konfiguréieren:
Input: Erstellt /etc/logstash/conf.d/input.conf
a setzt déi folgend Zeilen an. Dëst ass néideg fir Logstash fir \léiere\ wéi Beats vu Clienten ze veraarbecht ginn. Vergewëssert Iech datt de Wee zum Zertifika an de Schlëssel mat de richtege Weeër passen wéi am virege Schrëtt beschriwwen:
input { beats { port => 5044 ssl => true ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" } }
Output (/etc/logstash/conf.d/output.conf
) Datei:
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
) Datei. Mir protokolléieren Syslog Messagen fir Einfachheet:
filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }
12. Vergewëssert Iech d'Logstash Konfiguratiounsdateien.
# service logstash configtest
13. Start an aktivéiert Logstash:
# systemctl daemon-reload # systemctl start logstash # systemctl enable logstash
14. Konfiguréiert d'Firewall fir Logstash z'erméiglechen d'Logbicher vun de Clienten ze kréien (TCP Hafen 5044):
# firewall-cmd --add-port=5044/tcp # firewall-cmd --add-port=5044/tcp --permanent
14. Setzt déi folgend Zeilen an d'Repository Konfiguratiounsdatei 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. Installéiert de Kibana Package:
# yum install kibana
16. Start an aktivéiert Kibana.
# systemctl daemon-reload # systemctl start kibana # systemctl enable kibana
17. Vergewëssert Iech datt Dir Zougang zu Kibana's Webinterface vun engem anere Computer kënnt (erlaabt Traffic op TCP Hafen 5601):
# firewall-cmd --add-port=5601/tcp # firewall-cmd --add-port=5601/tcp --permanent
18. Lancéiere Kibana (http://192.168.0.29:5601
) fir z'iwwerpréiwen datt Dir op d'Webinterface kënnt:
Mir kommen hei zréck nodeems mir Filebeat op de Clienten installéiert a konfiguréiert hunn.
Installéiert Filebeat op de Client Serveren
Mir weisen Iech wéi Dir dëst fir Client #1 mécht (widderhuelen fir Client #2 duerno, Weeër änneren wann et op Är Verdeelung zoutrëfft).
1. Kopéiert den SSL Zertifika vum Server op d'Clienten:
# scp /etc/pki/tls/certs/logstash-forwarder.crt [email :/etc/pki/tls/certs/
2. Import den Elasticsearch ëffentleche GPG Schlëssel an den rpm Package Manager:
# rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
3. Erstellt e Repository fir Filebeat (/etc/yum.repos.d/filebeat.repo
) an CentOS baséiert Verdeelungen:
[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. Konfiguréiert d'Quell fir Filebeat op Debian a seng Derivate z'installéieren:
# 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. Installéiert de Filebeat Package:
# yum install filebeat [On CentOS and based Distros] # aptitude install filebeat [On Debian and its derivatives]
6. Start an aktivéiert Filebeat:
# systemctl start filebeat # systemctl enable filebeat
E Wuert vun Vorsicht hei. Filebeat Konfiguratioun gëtt an enger YAML Datei gespäichert, déi strikt Indentatioun erfuerdert. Sidd virsiichteg mat dësem wéi Dir /etc/filebeat/filebeat.yml
wéi follegt ännert:
- Under Weeër, gitt un wéi eng Logdateien op den ELK-Server \verschéckt solle ginn.
- Ënner Prospektoren:
input_type: log document_type: syslog
- Ënner Output:
- Entkommentéiert d'Linn déi mat Logstash ufänkt.
- Gitt d'IP Adress vun Ärem ELK Server a Port un, wou Logstash an Hosten lauschtert.
- Vergewëssert Iech datt de Wee zum Zertifika op déi aktuell Datei weist, déi Dir am Schrëtt I (Logstash Sektioun) uewen erstallt hutt.
Déi uewe genannte Schrëtt sinn am folgende Bild illustréiert:
Späichert d'Ännerungen, a fänkt dann Filebeat op de Clienten nei:
# systemctl restart filebeat
Wann mir déi uewe genannte Schrëtt op d'Clientë ofgeschloss hunn, fille sech gratis weider ze goen.
Fir z'iwwerpréiwen datt d'Logbicher vun de Clienten erfollegräich geschéckt a kritt kënne ginn, fuert de folgende Kommando um ELK Server:
# curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'
D'Output soll ähnlech sinn (Bemierkung wéi Messagen vun /var/log/messages an /var/log/secure vum Client1 a Client2 kritt ginn):
Soss kontrolléiert d'Filebeat Konfiguratiounsdatei fir Feeler.
# journalctl -xe
nodeems Dir probéiert de Filebeat nei ze starten, weist Iech op déi beleidegend Linn (en).
Nodeems mir iwwerpréift hunn datt d'Logbicher vun de Clienten geschéckt ginn an erfollegräich op de Server kréien. Déi éischt Saach déi mir zu Kibana maache mussen ass en Indexmuster konfiguréieren an et als Standard setzen.
Dir kënnt en Index als voll Datebank an engem relational Datebank Kontext beschreiwen. Mir wäerte mat
filebeat-*
goen (oder Dir kënnt e méi präzise Sichcritère benotze wéi an der offizieller Dokumentatioun erkläert).Gitt
filebeat-*
am Indexnumm oder Musterfeld a klickt dann op Erstellen:Notéiert w.e.g. datt Dir spéider erlaabt eng méi feinkorrekt Sichcritère anzeginn. Als nächst klickt op de Stär am grénge Rechteck fir et als Standard Indexmuster ze konfiguréieren:
Endlech, am Entdeckungsmenü fannt Dir e puer Felder fir an de Logvisualiséierungsbericht ze addéieren. Huelt just iwwer hinnen a klickt Add:
D'Resultater ginn am zentrale Beräich vum Écran gewisen wéi uewen gewisen. Fillt Iech gratis ronderëm ze spillen (Felder aus dem Logbuch bäizefügen an ze läschen) fir mat Kibana vertraut ze ginn.
Par défaut weist d'Kibana d'Opzeechnungen déi an de leschten 15 Minutten veraarbecht goufen (kuckt uewe riets am Eck), awer Dir kënnt dat Verhalen änneren andeems Dir en aneren Zäitframe wielt:
Resumé
An dësem Artikel hu mir erkläert wéi een en ELK Stack opstellt fir d'Systemprotokoller ze sammelen, déi vun zwee Clienten geschéckt ginn, e CentOS 7 an eng Debian 8 Maschinnen.
Elo kënnt Dir op déi offiziell Elasticsearch Dokumentatioun referenzéieren a méi Detailer fannen wéi Dir dëse Setup benotzt fir Är Logbicher méi effizient z'inspektéieren an ze analyséieren.
Wann Dir Froen hutt, zéckt net ze froen. Mir freeën eis vun Iech ze héieren.