Kuinka asentaa Elasticsearch, Logstash ja Kibana (ELK Stack) CentOS/RHEL 7:ään


Jos olet henkilö, joka on tai on ollut aiemmin vastuussa järjestelmälokien tarkastamisesta ja analysoinnista Linuxissa, tiedät, mikä painajainen tästä tehtävästä voi tulla, jos useita palveluita valvotaan samanaikaisesti.

Aikaisempina päivinä tämä tehtävä piti tehdä enimmäkseen käsin, jolloin jokainen lokityyppi käsiteltiin erikseen. Onneksi palvelinpuolella on yhdistelmä Elasticsearch, Logstash ja Kibana sekä asiakkaan Filebeat. puolella, saa tuon kerran vaikean tehtävän näyttämään kävelyltä puistossa tänään.

Kolme ensimmäistä komponenttia muodostavat ns. ELK-pinon, jonka päätarkoituksena on kerätä lokeja useilta palvelimilta samanaikaisesti (tunnetaan myös nimellä keskitetty loki).

Suositeltu luku: 4 hyvää avoimen lähdekoodin lokien seuranta- ja hallintatyökalua Linuxille

Sisäänrakennetun Java-pohjaisen verkkokäyttöliittymän avulla voit tarkistaa lokit nopeasti yhdellä silmäyksellä vertailun ja vianmäärityksen helpottamiseksi. Filebeat lähettää nämä asiakaslokit keskuspalvelimelle, jota voidaan kuvata lokien toimitusagentiksi.

Katsotaan kuinka kaikki nämä osat sopivat yhteen. Testiympäristömme koostuu seuraavista koneista:

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.

Huomaa, että tässä annetut RAM-arvot eivät ole tiukkoja edellytyksiä, vaan suositeltuja arvoja ELK-pinon onnistuneelle käyttöönotolle keskuspalvelimella. Asiakkaiden vähemmällä RAM-muistilla ei ole suurta merkitystä, jos ollenkaan.

ELK Stackin asentaminen palvelimelle

Aloitetaan asentamalla ELK-pino palvelimelle sekä lyhyt selitys siitä, mitä kukin komponentti tekee:

  1. Elasticsearch tallentaa asiakkaiden lähettämät lokit.
  2. Logstash käsittelee nämä lokit.
  3. Kibana tarjoaa verkkokäyttöliittymän, jonka avulla voimme tarkastaa ja analysoida lokit.

Asenna seuraavat paketit keskuspalvelimelle. Ensinnäkin asennamme Java JDK -version 8 (päivitys 102, viimeisin tätä kirjoitettaessa), joka on riippuvainen ELK-komponenteista.

Haluat ehkä ensin tarkistaa Java-lataussivulta, onko saatavilla uudempaa päivitystä.

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

Aika tarkistaa, onko asennus onnistunut:

java -version

Jotta voimme asentaa uusimmat Elasticsearchin, Logstash ja Kibana versiot, meidän on luotava arkistot yumille manuaalisesti. seuraavasti:

Ota Elasticsearch-arkisto käyttöön

1. Tuo Elasticsearchin julkinen GPG-avain rpm-pakettien hallintaan:

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

2. Lisää seuraavat rivit arkiston määritystiedostoon elasticsearch.repo:

[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. Asenna Elasticsearch-paketti.

yum install elasticsearch

Kun asennus on valmis, sinua kehotetaan käynnistämään elasticsearch ja ottamaan se käyttöön:

4. Käynnistä ja ota palvelu käyttöön.

systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch

5. Salli liikenne palomuurin TCP-portin 9200 kautta:

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

6. Tarkista, vastaako Elasticsearch yksinkertaisiin pyyntöihin HTTP:n kautta:

curl -X GET http://localhost:9200

Yllä olevan komennon lähdön tulee olla samanlainen:

Varmista, että suoritat yllä olevat vaiheet ja jatka sitten Logstashilla. Koska sekä Logstash että Kibana jakavat Elasticsearch GPG -avaimen, sitä ei tarvitse tuoda uudelleen ennen pakettien asentamista.

Suositeltu luku: Hallitse järjestelmälokeja (määritä, kierrä ja tuo tietokantaan) CentOS 7:ssä

Ota Logstash Repository käyttöön

7. Lisää seuraavat rivit arkiston määritystiedostoon logstash.repo:

[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. Asenna Logstash-paketti:

yum install logstash

9. Lisää ELK-palvelimen IP-osoitteeseen perustuva SSL-varmenne seuraavalle riville [ v3_ca ] -osion alle /etc/pki/tls/openssl.cnf:

[ v3_ca ]
subjectAltName = IP: 192.168.0.29

10. Luo itse allekirjoitettu varmenne, joka on voimassa 365 päivää:

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. Määritä Logstash-tulo-, -tulostus- ja suodatustiedostot:

Syöte: Luo /etc/logstash/conf.d/input.conf ja lisää siihen seuraavat rivit. Tämä on tarpeen Logstashille, jotta se "oppii" kuinka käsitellä asiakkailta tulevia biittejä. Varmista, että polku varmenteeseen ja avaimeen vastaavat oikeita polkuja, kuten edellisessä vaiheessa on kuvattu:

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

Tulostiedosto (/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]}"
  }
}

Suodatintiedosto (/etc/logstash/conf.d/filter.conf). Kirjaamme lokiviestit yksinkertaisuuden vuoksi:


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

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

12. Tarkista Logstash-määritystiedostot.

service logstash configtest

13. Käynnistä ja ota logstash käyttöön:

systemctl daemon-reload
systemctl start logstash
systemctl enable logstash

14. Määritä palomuuri sallimaan Logstash saada lokit asiakkailta (TCP-portti 5044):

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

Ota Kibana Repository käyttöön

14. Lisää seuraavat rivit arkiston määritystiedostoon 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. Asenna Kibana-paketti:

yum install kibana

16. Käynnistä ja ota Kibana käyttöön.

systemctl daemon-reload
systemctl start kibana
systemctl enable kibana

17. Varmista, että pääset käyttämään Kibanan verkkokäyttöliittymää toiselta tietokoneelta (salli liikenne TCP-portissa 5601):

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

18. Käynnistä Kibana (http://192.168.0.29:5601) varmistaaksesi, että voit käyttää verkkokäyttöliittymää:

Palaamme tänne, kun olemme asentaneet ja määrittäneet Filebeatin asiakkaille.

Suositeltu luku: Tarkkaile palvelimen lokeja reaaliajassa "Log.io" -työkalulla Linuxissa

Asenna Filebeat asiakaspalvelimille

Näytämme sinulle, kuinka tämä tehdään asiakkaalle 1 (toista asiakkaalle 2 myöhemmin ja vaihda polkuja, jos se koskee jakeluasi).

1. Kopioi SSL-varmenne palvelimelta asiakkaille:

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

2. Tuo Elasticsearch -julkinen GPG-avain rpm-pakettien hallintaan:

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

3. Luo arkisto Filebeatille (/etc/yum.repos.d/filebeat.repo) CentOS:ssä > perustuvat jakelut:

[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. Määritä lähde asentamaan Filebeat Debianiin ja sen johdannaisiin:

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. Asenna Filebeat-paketti:

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

6. Käynnistä Filebeat ja ota se käyttöön:

systemctl start filebeat
systemctl enable filebeat

Määritä Filebeat

Tässä varoituksen sana. Filebeat-määritykset tallennetaan YAML-tiedostoon, joka edellyttää tiukkaa sisennystä. Ole varovainen, kun muokkaat tiedostoa /etc/filebeat/filebeat.yml seuraavasti:

  1. Määritä kohdassa polut, mitkä lokitiedostot tulee "lähettää" ELK-palvelimelle.
  2. Kohdassa Etsijät:
input_type: log
document_type: syslog
  1. Kohdassa lähtö:

    1. Poista kommentit riviltä, joka alkaa sanalla logstash.
    2. Ilmoita ELK-palvelimesi IP-osoite ja portti, jota Logstash kuuntelee isännissä.
    3. Varmista, että varmenteen polku osoittaa todelliseen tiedostoon, jonka loit yllä olevassa vaiheessa I (Logstash-osio).

Yllä olevat vaiheet havainnollistetaan seuraavassa kuvassa:

Tallenna muutokset ja käynnistä sitten Filebeat uudelleen asiakaskoneissa:

systemctl restart filebeat

Kun olemme suorittaneet edellä mainitut vaiheet asiakkaiden kohdalla, jatka vapaasti.

Filebeatin testaus

Varmistaaksesi, että asiakkaiden lokit voidaan lähettää ja vastaanottaa onnistuneesti, suorita seuraava komento ELK-palvelimella:

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

Tulostuksen tulee olla samanlainen kuin (huomaa, kuinka viestit /var/log/messages ja /var/log/secure vastaanottavat client1 ja asiakas2):

Muussa tapauksessa tarkista Filebeat-määritystiedostossa virheitä.

journalctl -xe

uudelleenkäynnistyksen jälkeen Filebeat osoittaa sinua loukkaavalle riville.

Testataan Kibanaa

Kun olemme varmistaneet, että asiakkaat lähettävät lokit ja että ne ovat vastaanotettu onnistuneesti palvelimelle. Ensimmäinen asia, joka meidän on tehtävä Kibanassa, on hakemistomallin määrittäminen ja sen asettaminen oletukseksi.

Voit kuvata indeksin täydelliseksi tietokannaksi relaatiotietokantakontekstissa. Käytämme filebeat-* (tai voit käyttää tarkempaa hakuehtoa virallisessa dokumentaatiossa kuvatulla tavalla).

Kirjoita filebeat-* Indeksin nimi- tai mallikenttään ja napsauta sitten Luo:

Huomaa, että voit syöttää tarkempia hakuehtoja myöhemmin. Napsauta seuraavaksi vihreän suorakulmion sisällä olevaa tähteä määrittääksesi sen oletusindeksikuvioksi:

Lopuksi Discover-valikosta löydät useita kenttiä lisättäväksi lokin visualisointiraporttiin. Vie hiiri niiden päälle ja klikkaa Lisää:

Tulokset näkyvät ruudun keskiosassa yllä olevan kuvan mukaisesti. Kokeile vapaasti (lisää ja poista kenttiä lokiraportista) tutustuaksesi Kibanaan.

Oletuksena Kibana näyttää tietueet, jotka on käsitelty viimeisen 15 minuutin aikana (katso oikea yläkulma), mutta voit muuttaa käyttäytymistä valitsemalla toisen ajanjakson:

Yhteenveto

Tässä artikkelissa olemme selittäneet, kuinka ELK-pino asetetaan keräämään kahden asiakkaan, CentOS 7- ja Debian 8 -koneen, lähettämät järjestelmälokit.

Nyt voit viitata viralliseen Elasticsearch-dokumentaatioon ja löytää lisätietoja siitä, kuinka voit käyttää tätä asetusta lokien tarkastamiseen ja analysointiin tehokkaammin.

Jos sinulla on kysyttävää, älä epäröi kysyä. Me odotamme yhteydenottoasi.