Weboldal keresés

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:

  1. Az Elasticsearch az ügyfelek által küldött naplókat tárolja.
  2. A Logstash feldolgozza ezeket a naplókat.
  3. 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:

  1. Az útvonalak alatt adja meg, hogy mely naplófájlokat kell „elküldeni” az ELK-kiszolgálóra.
  2. A kutatók alatt:
input_type: log
document_type: syslog
  1. A kimenet alatt:

    1. Törölje a logstash karakterlánccal kezdődő sor megjegyzését.
    2. Adja meg ELK-szerverének IP-címét és portját, ahol a Logstash figyel a gazdagépekben.
    3. 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.