Jinsi ya Kufunga Elasticsearch, Logstash, na Kibana (ELK Stack) kwenye CentOS/RHEL 7


Ikiwa wewe ni mtu ambaye, au umekuwa hapo awali, unasimamia kukagua na kuchambua kumbukumbu za mfumo katika Linux, unajua ni ndoto gani ambayo kazi hiyo inaweza kuwa ikiwa huduma nyingi zinafuatiliwa kwa wakati mmoja.

Katika siku zilizopita, kazi hiyo ilibidi ifanywe kwa mikono, na kila aina ya logi ikishughulikiwa kando. Kwa bahati nzuri, mchanganyiko wa Elasticsearch, Logstash, na Kibana kwenye upande wa seva, pamoja na Filebeat kwenye upande wa mteja, hufanya kazi hiyo iliyokuwa ngumu kuonekana kama kutembea kwenye bustani leo.

Vipengele vitatu vya kwanza huunda kile kinachoitwa mrundikano wa ELK, ambao dhumuni lake kuu ni kukusanya kumbukumbu kutoka kwa seva nyingi kwa wakati mmoja (pia hujulikana kama ukataji miti wa kati).

Kiolesura cha wavuti kilichojengewa ndani cha java hukuruhusu kukagua kumbukumbu haraka haraka haraka ili ulinganishe na utatuzi kwa urahisi. Kumbukumbu hizi za mteja hutumwa kwa seva kuu na Filebeat, ambayo inaweza kuelezewa kama wakala wa usafirishaji wa kumbukumbu.

Hebu tuone jinsi vipande hivi vyote vinafaa pamoja. Mazingira yetu ya majaribio yatakuwa na mashine zifuatazo:

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.

Tafadhali kumbuka kuwa thamani za RAM zinazotolewa hapa si sharti kali, lakini thamani zinazopendekezwa kwa ajili ya utekelezaji uliofanikiwa wa safu ya ELK kwenye seva kuu. RAM kidogo kwa wateja haitaleta tofauti kubwa, ikiwa ipo, hata kidogo.

Kufunga ELK Stack kwenye Seva

Wacha tuanze kwa kusanikisha safu ya ELK kwenye seva, pamoja na maelezo mafupi juu ya kile kila sehemu hufanya:

  1. Elasticsearch huhifadhi kumbukumbu zinazotumwa na wateja.
  2. Logstash huchakata kumbukumbu hizo.
  3. Kibana hutoa kiolesura cha wavuti ambacho kitatusaidia kukagua na kuchanganua kumbukumbu.

Sakinisha vifurushi vifuatavyo kwenye seva kuu. Kwanza kabisa, tutaweka toleo la 8 la Java JDK (sasisha 102, ya hivi karibuni wakati wa uandishi huu), ambayo ni utegemezi wa vipengele vya ELK.

Unaweza kutaka kuangalia kwanza katika ukurasa wa vipakuliwa vya Java hapa ili kuona kama kuna sasisho jipya linalopatikana.

# 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

Ni wakati wa kuangalia ikiwa usakinishaji umekamilika kwa mafanikio:

# java -version

Ili kusakinisha matoleo mapya zaidi ya Elasticsearch, Logstash, na Kibana, itatubidi tuunde hazina za yum kwa mikono kama ifuatavyo:

1. Ingiza kitufe cha Elasticsearch cha umma cha GPG kwa kidhibiti kifurushi cha rpm:

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

2. Ingiza mistari ifuatayo kwenye hifadhi ya faili ya usanidi 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. Sakinisha kifurushi cha Elasticsearch.

# yum install elasticsearch

Wakati usakinishaji ukamilika, utaulizwa kuanza na kuwezesha elasticsearch:

4. Anza na uwashe huduma.

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

5. Ruhusu trafiki kupitia bandari ya TCP 9200 kwenye ngome yako:

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

6. Angalia ikiwa Elasticsearch inajibu maombi rahisi kupitia HTTP:

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

Matokeo ya amri hapo juu inapaswa kuwa sawa na:

Hakikisha umekamilisha hatua zilizo hapo juu kisha uendelee na Logstash. Kwa kuwa Logstash na Kibana wanashiriki ufunguo wa Elasticsearch GPG, hakuna haja ya kuagiza tena kabla ya kusakinisha vifurushi.

7. Ingiza mistari ifuatayo kwenye hifadhi ya faili ya usanidi 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. Sakinisha kifurushi cha Logstash:

# yum install logstash

9. Ongeza cheti cha SSL kulingana na anwani ya IP ya seva ya ELK kwenye mstari ufuatao chini ya sehemu ya [ v3_ca ] katika /etc/pki/tls/openssl.cnf:

[ v3_ca ]
subjectAltName = IP: 192.168.0.29

10. Tengeneza cheti cha kujiandikisha halali kwa siku 365:

# 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. Sanidi ingizo, pato na vichujio vya Logstash:

Ingizo: Unda /etc/logstash/conf.d/input.conf na uweke mistari ifuatayo ndani yake. Hii ni muhimu kwa Logstash \kujifunza jinsi ya kuchakata midundo kutoka kwa wateja. Hakikisha njia ya cheti na ufunguo inalingana na njia sahihi kama ilivyoainishwa katika hatua ya awali:

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

Pato (/etc/logstash/conf.d/output.conf) faili:

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

Chuja (/etc/logstash/conf.d/filter.conf) faili. Tutaweka ujumbe wa syslog kwa urahisi:

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

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

12. Thibitisha faili za usanidi wa Logstash.

# service logstash configtest

13. Anzisha na uwashe logstash:

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

14. Sanidi ngome ili kuruhusu Logstash kupata kumbukumbu kutoka kwa wateja (TCP port 5044):

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

14. Ingiza mistari ifuatayo kwenye hifadhi ya faili ya usanidi 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. Sakinisha kifurushi cha Kibana:

# yum install kibana

16. Anza na uwezeshe Kibana.

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

17. Hakikisha kuwa unaweza kufikia kiolesura cha wavuti cha Kibana kutoka kwa kompyuta nyingine (kuruhusu trafiki kwenye bandari ya TCP 5601):

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

18. Zindua Kibana (http://192.168.0.29:5601) ili kuthibitisha kuwa unaweza kufikia kiolesura cha wavuti:

Tutarudi hapa baada ya kusakinisha na kusanidi Filebeat kwa wateja.

Sakinisha Filebeat kwenye Seva za Wateja

Tutakuonyesha jinsi ya kufanya hivi kwa Mteja #1 (rudia kwa Mteja #2 baadaye, kubadilisha njia inapotumika kwa usambazaji wako).

1. Nakili cheti cha SSL kutoka kwa seva hadi kwa wateja:

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

2. Ingiza kitufe cha Elasticsearch cha umma cha GPG kwa kidhibiti kifurushi cha rpm:

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

3. Unda hazina ya Filebeat (/etc/yum.repos.d/filebeat.repo) katika usambazaji kulingana na CentOS:

[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. Sanidi chanzo ili kusakinisha Filebeat kwenye Debian na viasili vyake:

# 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. Sakinisha kifurushi cha Filebeat:

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

6. Anza na uwashe Filebeat:

# systemctl start filebeat
# systemctl enable filebeat

Neno la tahadhari hapa. Usanidi wa Filebeat huhifadhiwa katika faili ya YAML, ambayo inahitaji ujongezaji mkali. Kuwa mwangalifu na hili unapohariri /etc/filebeat/filebeat.yml kama ifuatavyo:

  1. Chini ya njia, onyesha ni faili gani za kumbukumbu zinapaswa \kusafirishwa kwa seva ya ELK.
  2. Chini ya watafiti:

input_type: log
document_type: syslog

  1. Chini ya pato:
    1. Ondoa maoni kwenye mstari unaoanza na logstash.
    2. Onyesha anwani ya IP ya seva yako ya ELK na mlango ambapo Logstash inasikiliza wapangishi.
    3. Hakikisha njia ya cheti inaelekeza kwenye faili halisi uliyounda katika Hatua ya I (sehemu ya Logstash) hapo juu.

    Hatua zilizo hapo juu zinaonyeshwa kwenye picha ifuatayo:

    Hifadhi mabadiliko, na kisha uanze upya Filebeat kwa wateja:

    # systemctl restart filebeat
    

    Mara tu tumekamilisha hatua zilizo hapo juu kwa wateja, jisikie huru kuendelea.

    Ili kuthibitisha kuwa kumbukumbu kutoka kwa wateja zinaweza kutumwa na kupokelewa kwa mafanikio, endesha amri ifuatayo kwenye seva ya ELK:

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

    Matokeo yanapaswa kuwa sawa na (ona jinsi ujumbe kutoka /var/log/messages na /var/log/secure unapokelewa kutoka kwa mteja1 na mteja2):

    Vinginevyo, angalia faili ya usanidi wa Filebeat kwa makosa.

    # journalctl -xe
    

    baada ya kujaribu kuwasha upya Filebeat itakuelekeza kwenye (za) mstari unaokosea.

    Baada ya kuthibitisha kuwa kumbukumbu zinasafirishwa na wateja na kupokelewa kwa mafanikio kwenye seva. Jambo la kwanza ambalo tutalazimika kufanya katika Kibana ni kusanidi muundo wa faharasa na kuiweka kama chaguo-msingi.

    Unaweza kuelezea faharisi kama hifadhidata kamili katika muktadha wa hifadhidata wa uhusiano. Tutaenda na filebeat-* (au unaweza kutumia kigezo sahihi zaidi cha utafutaji kama ilivyoelezwa katika hati rasmi).

    Weka filebeat-* katika jina la Index au uga wa ruwaza kisha ubofye Unda:

    Tafadhali kumbuka kuwa utaruhusiwa kuingiza kigezo cha utafutaji kilichoboreshwa zaidi baadaye. Ifuatayo, bofya nyota iliyo ndani ya mstatili wa kijani ili kuusanidi kama mchoro chaguomsingi wa faharasa:

    Hatimaye, katika menyu ya Gundua utapata sehemu kadhaa za kuongeza kwenye ripoti ya taswira ya kumbukumbu. Elea juu yao na ubofye Ongeza:

    Matokeo yataonyeshwa katika eneo la kati la skrini kama inavyoonyeshwa hapo juu. Jisikie huru kucheza (kuongeza na kuondoa sehemu kutoka kwa ripoti ya kumbukumbu) ili kumfahamu Kibana.

    Kwa chaguo-msingi, Kibana itaonyesha rekodi ambazo zilichakatwa katika dakika 15 zilizopita (angalia kona ya juu kulia) lakini unaweza kubadilisha tabia hiyo kwa kuchagua muda mwingine:

    Muhtasari

    Katika nakala hii tumeelezea jinsi ya kusanidi kifurushi cha ELK kukusanya kumbukumbu za mfumo zilizotumwa na wateja wawili, CentOS 7 na mashine ya Debian 8.

    Sasa unaweza kurejelea hati rasmi ya Elasticsearch na upate maelezo zaidi kuhusu jinsi ya kutumia usanidi huu kukagua na kuchambua kumbukumbu zako kwa ufanisi zaidi.

    Ikiwa una maswali yoyote, usisite kuuliza. Tunatarajia kusikia kutoka kwako.