Az Elasticsearch, a Logstash és a Kibana (ELK Stack) telepítése a CentOS/RHEL 7 rendszeren
Ha Ön olyan személy, aki a Linux rendszernaplóinak ellenőrzéséért és elemzéséért felelős, vagy korábban is volt, akkor tudja, milyen rémálommá válhat ez a feladat, ha több szolgáltatást figyelnek egyszerre.
Az elmúlt napokban ezt a feladatot többnyire manuálisan kellett elvégezni, minden egyes naplótípust külön-külön kezelve. Szerencsére az Elasticsearch, a Logstash és a Kibana kombinációja a szerver oldalon, valamint a Filebeat a kliensen oldalán, ez az egykor nehéz feladat úgy néz ki, mint ma egy séta a parkban.
Az első három komponens egy úgynevezett ELK verem, amelynek fő célja, hogy egyidejűleg több szerverről gyűjtsön naplókat (más néven központosított naplózást).
Javasolt olvasmány: 4 jó nyílt forráskódú naplófigyelő és -kezelő eszköz Linuxhoz
A beépített java alapú webes felület lehetővé teszi a naplók gyors, egy pillantással történő ellenőrzését a könnyebb összehasonlítás és hibaelhárítás érdekében. Ezeket az ügyfélnaplókat a Filebeat küldi el egy központi szerverre, amely naplószállítási ügynöknek nevezhető.
Lássuk, hogyan illeszkednek ezek a darabok egymáshoz. Tesztkörnyezetünk a következő gépekből áll majd:
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.
Felhívjuk figyelmét, hogy az itt megadott RAM értékek nem szigorú előfeltételek, hanem ajánlott értékek az ELK verem sikeres megvalósításához a központi szerveren. A kevesebb RAM az ügyfeleken nem jelent nagy változást, ha van egyáltalán.
ELK Stack telepítése a szerverre
Kezdjük az ELK verem telepítésével a szerverre, valamint egy rövid magyarázatot az egyes összetevők működésére vonatkozóan:
- Az Elasticsearch az ügyfelek által küldött naplókat tárolja.
- A Logstash feldolgozza ezeket a naplókat.
- A Kibana biztosítja a webes felületet, amely segít a naplók ellenőrzésében és elemzésében.
Telepítse a következő csomagokat a központi szerverre. Először is telepíteni fogjuk a Java JDK 8 verzióját (frissítés 102, a legújabb verzió az írás idején), amely függőség az ELK komponensek közül.
Érdemes először a Java letöltési oldalon megnézni, hogy van-e elérhető újabb frissítés.
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
Ideje ellenőrizni, hogy a telepítés sikeresen befejeződött:
java -version
Az Elasticsearch, Logstash és Kibana legújabb verzióinak telepítéséhez manuálisan kell létrehoznunk a yum adattárakat alábbiak szerint:
Az Elasticsearch Repository engedélyezése
1. Importálja az Elasticsearch nyilvános GPG kulcsát az rpm csomagkezelőbe:
rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
2. Illessze be a következő sorokat az elasticsearch.repo
lerakatkonfigurációs fájlba:
[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. Telepítse az Elasticsearch csomagot.
yum install elasticsearch
Amikor a telepítés befejeződött, a rendszer kéri, hogy indítsa el és engedélyezze az elasticsearch alkalmazást:
4. Indítsa el és engedélyezze a szolgáltatást.
systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch
5. Engedélyezze a forgalmat a tűzfal 9200 TCP-portján keresztül:
firewall-cmd --add-port=9200/tcp
firewall-cmd --add-port=9200/tcp --permanent
6. Ellenőrizze, hogy az Elasticsearch válaszol-e egyszerű kérésekre HTTP-n keresztül:
curl -X GET http://localhost:9200
A fenti parancs kimenetének hasonlónak kell lennie:
Győződjön meg róla, hogy végrehajtotta a fenti lépéseket, majd folytassa a Logstash segítségével. Mivel a Logstash és a Kibana egyaránt megosztja az Elasticsearch GPG kulcsot, nincs szükség annak újraimportálására a csomagok telepítése előtt.
Javasolt olvasmány: Rendszernaplók kezelése (konfigurálás, elforgatás és importálás az adatbázisba) a CentOS 7 rendszerben
Logstash Repository engedélyezése
7. Illessze be a következő sorokat a logstash.repo
lerakatkonfigurációs fájlba:
[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. Telepítse a Logstash csomagot:
yum install logstash
9. Adjon hozzá egy SSL-tanúsítványt az ELK-szerver IP-címe alapján a következő sorban a [ v3_ca ]
része alatt >/etc/pki/tls/openssl.cnf:
[ v3_ca ]
subjectAltName = IP: 192.168.0.29
10. Hozzon létre egy önaláírt tanúsítványt, amely 365 napig érvényes:
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. Konfigurálja a Logstash bemeneti, kimeneti és szűrőfájlokat:
Bevitel: Hozza létre a /etc/logstash/conf.d/input.conf
fájlt, és illessze be a következő sorokat. Erre azért van szükség, hogy a Logstash „megtanulja”, hogyan kell feldolgozni az ügyfelektől érkező ütemeket. Győződjön meg arról, hogy a tanúsítvány elérési útja és a kulcs megegyezik az előző lépésben leírt megfelelő útvonalakkal:
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
Kimeneti fájl (/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]}"
}
}
Szűrő (/etc/logstash/conf.d/filter.conf
) fájl. Az egyszerűség kedvéért naplózzuk a syslog üzeneteket:
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGLINE}" }
}
date {
match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
12. Ellenőrizze a Logstash konfigurációs fájlokat.
service logstash configtest
13. Indítsa el és engedélyezze a logstash-t:
systemctl daemon-reload
systemctl start logstash
systemctl enable logstash
14. Állítsa be a tűzfalat úgy, hogy a Logstash megkapja a naplókat az ügyfelektől (5044 TCP-port):
firewall-cmd --add-port=5044/tcp
firewall-cmd --add-port=5044/tcp --permanent
A Kibana Repository engedélyezése
14. Illessze be a következő sorokat a kibana.repo
lerakatkonfigurációs fájlba:
[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. Telepítse a Kibana csomagot:
yum install kibana
16. Indítsa el és engedélyezze a Kibanát.
systemctl daemon-reload
systemctl start kibana
systemctl enable kibana
17. Győződjön meg arról, hogy egy másik számítógépről hozzáférhet a Kibana webes felületéhez (engedélyezze a forgalmat az 5601-es TCP-porton):
firewall-cmd --add-port=5601/tcp
firewall-cmd --add-port=5601/tcp --permanent
18. Indítsa el a Kibana alkalmazást (http://192.168.0.29:5601
) annak ellenőrzéséhez, hogy hozzáfér-e a webes felülethez:
Visszatérünk ide, miután telepítettük és konfiguráltuk a Filebeat szolgáltatást az ügyfeleken.
Javasolt olvasmány: A szervernaplók valós idejű megfigyelése a „Log.io” eszközzel Linux alatt
Telepítse a Filebeat-et az ügyfélkiszolgálókra
Megmutatjuk, hogyan kell ezt megtenni az 1. kliens esetében (ezt ezt követően ismételje meg a 2. kliens esetében, és módosítsa az elérési utat, ha ez az Ön terjesztésére vonatkozik).
1. Másolja át az SSL-tanúsítványt a szerverről a kliensekre:
scp /etc/pki/tls/certs/logstash-forwarder.crt [email :/etc/pki/tls/certs/
2. Importálja az Elasticsearch nyilvános GPG kulcsot az rpm csomagkezelőbe:
rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
3. Hozzon létre egy tárat a Filebeat számára (/etc/yum.repos.d/filebeat.repo
) a CentOS rendszerben > alapú disztribúciók:
[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. Állítsa be a forrást a Filebeat telepítéséhez a Debianra és annak származékaira:
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. Telepítse a Filebeat csomagot:
yum install filebeat [On CentOS and based Distros]
aptitude install filebeat [On Debian and its derivatives]
6. Indítsa el és engedélyezze a Filebeat-et:
systemctl start filebeat
systemctl enable filebeat
A Filebeat beállítása
Óvatos szó itt. A Filebeat konfiguráció egy YAML fájlban tárolódik, amely szigorú behúzást igényel. Legyen óvatos ezzel, amikor a következőképpen szerkeszti az /etc/filebeat/filebeat.yml
fájlt:
- Az útvonalak alatt adja meg, hogy mely naplófájlokat kell „elküldeni” az ELK-kiszolgálóra.
- A kutatók alatt:
input_type: log
document_type: syslog
A kimenet alatt:
- Törölje a logstash karakterlánccal kezdődő sor megjegyzését.
- Adja meg ELK-szerverének IP-címét és portját, ahol a Logstash figyel a gazdagépekben.
- Győződjön meg arról, hogy a tanúsítvány elérési útja a fenti I. lépésben (Logstash szakasz) létrehozott tényleges fájlra mutat.
A fenti lépéseket a következő kép szemlélteti:
Mentse el a változtatásokat, majd indítsa újra a Filebeat alkalmazást az ügyfeleken:
systemctl restart filebeat
Miután elvégeztük a fenti lépéseket az ügyfeleken, nyugodtan folytassa.
A Filebeat tesztelése
Annak ellenőrzésére, hogy a kliensek naplói sikeresen elküldhetők és fogadhatók-e, futtassa a következő parancsot az ELK szerveren:
curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'
A kimenetnek hasonlónak kell lennie a következőhöz: (figyelje meg, hogy a /var/log/messages és a /var/log/secure üzenetei hogyan fogadják a client1-től és kliens2):
Ellenkező esetben ellenőrizze, hogy a Filebeat konfigurációs fájl nem tartalmaz-e hibákat.
journalctl -xe
az újraindítási kísérlet után a Filebeat a sértő sor(ok)ra mutat.
Kibana tesztelése
Miután ellenőriztük, hogy a naplókat az ügyfelek szállítják, és sikeresen megkapják a szerveren. Az első dolog, amit a Kibanában meg kell tennünk, egy indexminta konfigurálása és alapértelmezettként való beállítása.
Egy indexet teljes adatbázisként írhat le relációs adatbázis-környezetben. A filebeat-*
-t használjuk (vagy használhatsz pontosabb keresési feltételeket is, a hivatalos dokumentációban leírtak szerint).
Írja be a filebeat-*
kifejezést az Index neve vagy a minta mezőbe, majd kattintson a Létrehozás lehetőségre:
Kérjük, vegye figyelembe, hogy később finomabb keresési feltételeket adhat meg. Ezután kattintson a zöld téglalap belsejében lévő csillagra, hogy alapértelmezett indexmintaként konfigurálja azt:
Végül a Felfedezés menüben több mezőt is találhat, amelyeket hozzáadhat a naplóvizualizációs jelentéshez. Csak mutasson rájuk, és kattintson a Hozzáadás lehetőségre:
Az eredmények a képernyő középső részén jelennek meg, ahogy fent látható. Nyugodtan játsszon (adjon hozzá és távolítson el mezőket a naplójelentésből), hogy megismerje a Kibanát.
Alapértelmezés szerint a Kibana az elmúlt 15 percben feldolgozott rekordokat jeleníti meg (lásd a jobb felső sarkot), de ezt a viselkedést megváltoztathatja egy másik időkeret kiválasztásával:
Összegzés
Ebben a cikkben elmagyaráztuk, hogyan állíthatunk be egy ELK-vermet két kliens, egy CentOS 7 és egy Debian 8 gép által küldött rendszernaplók összegyűjtésére.
Most megtekintheti a hivatalos Elasticsearch dokumentációt, és további részleteket találhat arról, hogyan használhatja ezt a beállítást a naplók hatékonyabb ellenőrzésére és elemzésére.
Ha bármilyen kérdése van, ne habozzon feltenni. Várom válaszukat.