Kā instalēt Elasticsearch, Logstash un Kibana (ELK Stack) vietnē CentOS/RHEL 7


Ja esat persona, kas ir vai ir bijusi agrāk, un esat atbildīga par sistēmas žurnālu pārbaudi un analīzi Linux, jūs zināt, kāds murgs var kļūt par šo uzdevumu, ja vienlaikus tiek uzraudzīti vairāki pakalpojumi.

Iepriekšējās dienās šis uzdevums bija jāveic galvenokārt manuāli, katru žurnāla veidu apstrādājot atsevišķi. Par laimi, Elasticsearch, Logstash un Kibana kombinācija servera pusē kopā ar Filebeat klienta pusē padara šo kādreiz sarežģīto uzdevumu šodien kā pastaigu parkā.

Pirmie trīs komponenti veido tā saukto ELK kaudzi, kuras galvenais mērķis ir apkopot žurnālus no vairākiem serveriem vienlaikus (pazīstams arī kā centralizēta reģistrēšana).

Iebūvētā Java tīmekļa saskarne ļauj ātri apskatīt žurnālus, lai tos būtu vieglāk salīdzināt un novērst. Šos klienta žurnālus Filebeat nosūta centrālajam serverim, ko var raksturot kā žurnālu nosūtīšanas aģentu.

Apskatīsim, kā visi šie gabali sader kopā. Mūsu testa vide sastāvēs no šādām mašīnām:

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.

Lūdzu, ņemiet vērā, ka šeit norādītās RAM vērtības nav stingri priekšnosacījumi, bet ieteicamās vērtības veiksmīgai ELK kaudzes ieviešanai centrālajā serverī. Mazāka operatīvā atmiņa klientiem neko daudz nemainīs, ja tādas būs.

ELK Stack instalēšana serverī

Sāksim ar servera ELK kaudzes instalēšanu kopā ar īsu paskaidrojumu par katra komponenta darbību:

  1. Elasticsearch saglabā žurnālus, kurus sūta klienti.
  2. Logstash apstrādā šos žurnālus.
  3. Kibana nodrošina tīmekļa saskarni, kas mums palīdzēs pārbaudīt un analizēt žurnālus.

Centrālajā serverī instalējiet šādas pakotnes. Pirmkārt, mēs instalēsim Java JDK 8. versiju (atjauninājums 102, jaunākais šī rakstīšanas laikā), kas ir ELK komponentu atkarība.

Šeit varat vispirms pārbaudīt Java lejupielāžu lapu, lai redzētu, vai ir pieejams jaunāks atjauninājums.

# 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

Laiks pārbaudīt, vai instalēšana ir veiksmīgi pabeigta:

# java -version

Lai instalētu jaunākās Elasticsearch, Logstash un Kibana versijas, mums būs manuāli jāizveido yum krātuves šādi:

1. Importējiet Elasticsearch publisko GPG atslēgu rpm pakotņu pārvaldniekā:

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

2. Krātuves konfigurācijas failā elasticsearch.repo ievietojiet šādas rindas:

[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. Instalējiet Elasticsearch pakotni.

# yum install elasticsearch

Kad instalēšana būs pabeigta, jums tiks lūgts sākt un iespējot elasticsearch:

4. Sāciet un iespējojiet pakalpojumu.

# systemctl daemon-reload
# systemctl enable elasticsearch
# systemctl start elasticsearch

5. Atļaujiet trafiku caur TCP 9200 portu jūsu ugunsmūrī:

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

6. Pārbaudiet, vai Elasticsearch atbild uz vienkāršiem pieprasījumiem, izmantojot HTTP:

# curl -X GET http://localhost:9200

Iepriekš minētās komandas iznākumam jābūt līdzīgam:

Pārliecinieties, vai esat izpildījis iepriekš minētās darbības, un pēc tam turpiniet darbu ar Logstash. Tā kā gan Logstash, gan Kibana koplieto Elasticsearch GPG atslēgu, pirms pakotņu instalēšanas nav nepieciešams to atkārtoti importēt.

7. Krātuves konfigurācijas failā logstash.repo ievietojiet šādas rindas:

[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. Instalējiet Logstash pakotni:

# yum install logstash

9. Pievienojiet SSL sertifikātu, pamatojoties uz ELK servera IP adresi, šādā rindā zem /etc/pki/tls/openssl.cnf [v3_ca] . >:

[ v3_ca ]
subjectAltName = IP: 192.168.0.29

10. Ģenerējiet pašparakstītu sertifikātu, kas derīgs 365 dienas:

# 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ējiet Logstash ievades, izvades un filtru failus:

Ievads: izveidojiet /etc/logstash/conf.d/input.conf un ievietojiet tajā šādas rindas. Tas ir nepieciešams, lai Logstash "iemācītos" apstrādāt ritmus, kas nāk no klientiem. Pārliecinieties, vai sertifikāta un atslēgas ceļš atbilst pareizajiem ceļiem, kā norādīts iepriekšējā darbībā:

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

Izejas ( /etc/logstash/conf.d/output.conf ) fails:

output {
  elasticsearch {
	hosts => ["localhost:9200"]
	sniffing => true
	manage_template => false
	index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
	document_type => "%{[@metadata][type]}"
  }
}

Filtrēt ( /etc/logstash/conf.d/filter.conf ) failu. Mēs vienkāršības labad reģistrēsim syslog ziņojumus:

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

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

12. Pārbaudiet Logstash konfigurācijas failus.

# service logstash configtest

13. Sāciet un iespējojiet logstash:

# systemctl daemon-reload
# systemctl start logstash
# systemctl enable logstash

14. Konfigurējiet ugunsmūri, lai ļautu Logstash iegūt žurnālus no klientiem (TCP ports 5044):

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

14. Krātuves konfigurācijas failā kibana.repo ievietojiet šādas rindas:

[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. Instalējiet Kibana pakotni:

# yum install kibana

16. Sāciet un iespējojiet Kibana.

# systemctl daemon-reload
# systemctl start kibana
# systemctl enable kibana

17. Pārliecinieties, vai varat piekļūt Kibana tīmekļa saskarnei no cita datora (atļaut trafiku TCP portā 5601):

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

18. Palaidiet programmu Kibana ( http://192.168.0.29:5601 ), lai pārbaudītu, vai varat piekļūt tīmekļa saskarnei:

Mēs atgriezīsimies šeit, kad klientos būsim instalējuši un konfigurējuši Filebeat.

Instalējiet Filebeat klientu serveros

Mēs parādīsim, kā to izdarīt 1. klientam (pēc tam atkārtojiet 2. klientam, mainot ceļus, ja tas attiecas uz jūsu izplatīšanu).

1. Nokopējiet SSL sertifikātu no servera klientiem:

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

2. Importējiet Elasticsearch publisko GPG atslēgu rpm pakotņu pārvaldniekā:

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

3. CentOS balstītos sadalījumos izveidojiet Filebeat krātuvi ( /etc/yum.repos.d/filebeat.repo ):

[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ējiet avotu, lai instalētu Filebeat uz Debian un tā atvasinājumiem:

# 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. Instalējiet Filebeat pakotni:

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

6. Sāciet un iespējojiet Filebeat:

# systemctl start filebeat
# systemctl enable filebeat

Šeit piesardzības vārds. Filebeat konfigurācija tiek glabāta YAML failā, kam nepieciešama stingra atkāpe. Esiet piesardzīgs, rediģējot /etc/filebeat/filebeat.yml šādi:

  1. Zem ceļiem norādiet, kuri žurnālfaili ir “jānosūta” uz ELK serveri.
  2. Izpētnieku vadībā:

input_type: log
document_type: syslog

  1. Zem izvades:
    1. Noņemiet komentāru no rindas, kas sākas ar logstash.
    2. Norādiet sava ELK servera un porta IP adresi, kur Logstash klausās resursdatoros
    3. Pārliecinieties, vai ceļš uz sertifikātu norāda uz faktisko failu, kuru izveidojāt iepriekš I darbībā (sadaļā Logstash).

    Iepriekš minētās darbības ir ilustrētas šādā attēlā:

    Saglabājiet izmaiņas un pēc tam restartējiet Filebeat klientos:

    # systemctl restart filebeat
    

    Kad esam izpildījuši iepriekš minētās darbības ar klientiem, turpiniet brīvi.

    Lai pārbaudītu, vai žurnālus no klientiem var veiksmīgi nosūtīt un saņemt, izpildiet šādu komandu ELK serverī:

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

    Izejai jābūt līdzīgai (ievērojiet, kā tiek saņemti ziņojumi no/var/log/messages un/var/log/secure no klienta1 un klienta2):

    Pretējā gadījumā pārbaudiet, vai Filebeat konfigurācijas failā nav kļūdu.

    # journalctl -xe
    

    pēc mēģinājuma restartēt Filebeat novirzīs jūs uz pārkāpēju (-ām) līniju (-ām).

    Pēc tam, kad esam pārliecinājušies, ka klienti nosūta žurnālus un veiksmīgi tos saņem serverī. Pirmā lieta, kas mums būs jādara Kibanā, ir konfigurēt indeksa modeli un iestatīt to kā noklusējumu.

    Relāciju datu bāzes kontekstā indeksu var raksturot kā pilnu datu bāzi. Mēs izmantosim filebeat- * (vai arī jūs varat izmantot precīzākus meklēšanas kritērijus, kā paskaidrots oficiālajā dokumentācijā).

    Indeksa nosaukuma vai raksta laukā ievadiet filebeat- * un pēc tam noklikšķiniet uz Izveidot:

    Lūdzu, ņemiet vērā, ka vēlāk jums būs atļauts ievadīt precīzākus meklēšanas kritērijus. Pēc tam noklikšķiniet uz zvaigznītes zaļā taisnstūra iekšpusē, lai to konfigurētu kā noklusējuma indeksa modeli:

    Visbeidzot, izvēlnē Atklāt atradīsit vairākus laukus, kurus pievienot žurnāla vizualizācijas pārskatam. Vienkārši virziet kursoru virs tiem un noklikšķiniet uz Pievienot:

    Rezultāti tiks parādīti ekrāna centrālajā apgabalā, kā parādīts iepriekš. Jūtieties brīvi spēlēties (pievienot un noņemt laukus no žurnāla pārskata), lai iepazītos ar Kibana.

    Pēc noklusējuma Kibana parādīs ierakstus, kas tika apstrādāti pēdējo 15 minūšu laikā (skatiet augšējo labo stūri), taču šo uzvedību varat mainīt, izvēloties citu laika periodu:

    Kopsavilkums

    Šajā rakstā mēs esam paskaidrojuši, kā iestatīt ELK kaudzīti, lai apkopotu divu klientu, CentOS 7 un Debian 8 mašīnu, nosūtītos sistēmas žurnālus.

    Tagad jūs varat atsaukties uz oficiālo Elasticsearch dokumentāciju un uzzināt vairāk par to, kā izmantot šo iestatījumu, lai efektīvāk pārbaudītu un analizētu savus žurnālus.

    Ja jums ir kādi jautājumi, nevilcinieties to uzdot. Mēs ceram uz jums atbildi.