Giunsa ang Pag-install sa Elasticsearch, Logstash, ug Kibana (ELK Stack) sa CentOS/RHEL 7


Kung ikaw usa ka tawo nga, o kaniadto, nga nagdumala sa pag-inspeksyon ug pag-analisar sa mga log sa sistema sa Linux, nahibal-an nimo kung unsa ang usa ka damgo nga mahimo’g kana nga buluhaton kung daghang mga serbisyo ang dungan nga gibantayan.

Sa nangaging mga adlaw, kana nga buluhaton kinahanglan nga buhaton sa kadaghanan nga mano-mano, nga ang matag tipo sa log gibahin sa pagdumala. Maayo na lang, ang kombinasyon sa Elasticsearch, Logstash, ug Kibana sa bahin sa server, kauban ang Filebeat sa kilid sa kliyente, naghimo nga kaniadto lisud nga buluhaton nga ingon usa ka paglakaw sa parke karon.

Ang una nga tulo ka mga sangkap nagporma sa gitawag nga usa ka ELK stack, kansang panguna nga katuyoan mao ang pagkolekta sa mga troso gikan sa daghang mga server sa parehas nga oras (nailhan usab nga sentralisado nga pag-log).

Ang usa ka built-in nga java-based nga web interface nagtugot kanimo sa pagsusi sa mga log dayon sa usa ka pagtan-aw alang sa mas sayon nga pagtandi ug pag-troubleshoot. Kini nga mga log sa kliyente gipadala sa usa ka sentral nga server pinaagi sa Filebeat, nga mahimong gihulagway nga usa ka ahente sa pagpadala sa log.

Atong tan-awon kon sa unsang paagi kining tanan nga mga piraso nagkahiusa. Ang among palibot sa pagsulay maglangkob sa mga mosunud nga makina:

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.

Palihug timan-i nga ang mga kantidad sa RAM nga gihatag dinhi dili higpit nga mga kinahanglanon, apan girekomenda nga mga kantidad alang sa malampuson nga pagpatuman sa ELK stack sa sentral nga server. Ang gamay nga RAM sa mga kliyente dili makahimo og daghang kalainan, kung aduna man, sa tanan.

Pag-instalar sa ELK Stack sa Server

Magsugod kita pinaagi sa pag-install sa ELK stack sa server, kauban ang usa ka mubo nga pagpasabut kung unsa ang gibuhat sa matag sangkap:

  1. Ang Elasticsearch nagtipig sa mga log nga gipadala sa mga kliyente.
  2. Giproseso sa Logstash kadtong mga log.
  3. Ang Kibana naghatag sa web interface nga makatabang kanamo sa pagsusi ug pagtuki sa mga log.

I-install ang mosunod nga mga pakete sa sentral nga server. Una, among i-install ang Java JDK nga bersyon 8 (update 102, ang pinakabag-o sa panahon sa pagsulat niini), nga usa ka dependency sa mga sangkap sa ELK.

Mahimo nimong susihon una ang panid sa pag-download sa Java dinhi aron makita kung adunay bag-ong update nga magamit.

# 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

Panahon sa pagsusi kung malampuson ba nga nahuman ang pag-install:

# java -version

Aron ma-install ang pinakabag-o nga bersyon sa Elasticsearch, Logstash, ug Kibana, kinahanglan namon nga maghimo mga repository alang sa yum nga mano-mano sama sa mosunod:

1. I-import ang Elasticsearch public GPG key sa rpm package manager:

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

2. Isulod ang mosunod nga mga linya sa repository configuration file 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. I-install ang Elasticsearch package.

# yum install elasticsearch

Kung kompleto na ang pag-instalar, aghaton ka sa pagsugod ug pagpagana sa elasticsearch:

4. Pagsugod ug pagpagana sa serbisyo.

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

5. Tugoti ang trapiko pinaagi sa TCP port 9200 sa imong firewall:

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

6. Susiha kon ang Elasticsearch motubag sa yanong mga hangyo pinaagi sa HTTP:

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

Ang output sa sugo sa ibabaw kinahanglan nga susama sa:

Siguroha nga imong nakompleto ang mga lakang sa ibabaw ug dayon ipadayon ang Logstash. Tungod kay ang Logstash ug Kibana nag-ambit sa Elasticsearch GPG nga yawe, dili na kinahanglan nga i-import kini pag-usab sa dili pa i-install ang mga pakete.

7. Isulod ang mosunod nga mga linya sa repository configuration file 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. I-install ang Logstash package:

# yum install logstash

9. Pagdugang og SSL certificate base sa IP address sa ELK server sa mosunod nga linya ubos sa [ v3_ca ] section sa /etc/pki/tls/openssl.cnf:

[ v3_ca ]
subjectAltName = IP: 192.168.0.29

10. Paghimo og usa ka self-signed certificate nga balido sulod sa 365 ka adlaw:

# 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. I-configure ang Logstash input, output, ug filter files:

Input: Paghimo /etc/logstash/conf.d/input.conf ug isulod ang mosunod nga mga linya niini. Kinahanglan kini alang sa Logstash aron \pagkat-on kung giunsa pagproseso ang mga beats nga gikan sa mga kliyente. Siguruha nga ang agianan padulong sa sertipiko ug yawe motakdo sa husto nga mga agianan sama sa gilatid sa miaging lakang:

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

Output (/etc/logstash/conf.d/output.conf) nga payl:

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

Pagsala (/etc/logstash/conf.d/filter.conf) nga payl. Atong i-log ang mga mensahe sa syslog alang sa kayano:

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

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

12. I-verify ang Logstash configuration files.

# service logstash configtest

13. Pagsugod ug pagpagana sa logstash:

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

14. I-configure ang firewall aron tugotan ang Logstash nga makuha ang mga troso gikan sa mga kliyente (TCP port 5044):

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

14. Isulod ang mosunod nga mga linya sa repository configuration file 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. I-install ang Kibana package:

# yum install kibana

16. Pagsugod ug pagpagana sa Kibana.

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

17. Siguroha nga maka-access ka sa web interface ni Kibana gikan sa laing computer (tugoti ang trapiko sa TCP port 5601):

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

18. Ilusad ang Kibana (http://192.168.0.29:5601) aron mapamatud-an nga maka-access ka sa web interface:

Mobalik kami dinhi human namo ma-install ug ma-configure ang Filebeat sa mga kliyente.

I-install ang Filebeat sa mga Client Server

Ipakita namo kanimo kung unsaon pagbuhat niini para sa Kliyente #1 (balika alang sa Kliyente #2 pagkahuman, pag-usab sa mga agianan kung magamit sa imong pag-apod-apod).

1. Kopyaha ang SSL certificate gikan sa server ngadto sa mga kliyente:

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

2. I-import ang Elasticsearch public GPG key sa rpm package manager:

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

3. Paghimo ug repository para sa Filebeat (/etc/yum.repos.d/filebeat.repo) sa CentOS based distributions:

[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. I-configure ang tinubdan aron ma-install ang Filebeat sa Debian ug sa mga gigikanan niini:

# 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. I-install ang Filebeat nga pakete:

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

6. Pagsugod ug pagpagana sa Filebeat:

# systemctl start filebeat
# systemctl enable filebeat

Usa ka pulong sa pasidaan dinhi. Ang configuration sa filebeat gitipigan sa usa ka YAML file, nga nagkinahanglan og estrikto nga indentation. Pag-amping niini samtang imong gi-edit ang /etc/filebeat/filebeat.yml ingon sa mosunod:

  1. Ubos sa mga agianan, ipakita kung unsang mga log file ang kinahanglan nga \ipadala sa ELK server.
  2. Ubos sa mga tigpangita:

input_type: log
document_type: syslog

  1. Ubos sa output:
    1. Uncomment ang linya nga nagsugod sa logstash.
    2. Ipakita ang IP address sa imong ELK server ug pantalan diin naminaw ang Logstash sa mga host.
    3. Siguruha nga ang agianan padulong sa sertipiko nagpunting sa aktuwal nga file nga imong gihimo sa Lakang I (Seksiyon sa Logstash) sa ibabaw.

    Ang mga lakang sa ibabaw gihulagway sa mosunod nga hulagway:

    I-save ang mga pagbag-o, ug dayon i-restart ang Filebeat sa mga kliyente:

    # systemctl restart filebeat
    

    Kung nahuman na namon ang mga lakang sa ibabaw sa mga kliyente, ayaw paglangan sa pagpadayon.

    Aron mapamatud-an nga ang mga log gikan sa mga kliyente mahimong ipadala ug madawat nga malampuson, padagana ang mosunod nga sugo sa ELK server:

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

    Ang output kinahanglan nga susama sa (matikdi kung giunsa ang mga mensahe gikan sa /var/log/messages ug /var/log/secure nadawat gikan sa client1 ug client2):

    Kung dili, susiha ang Filebeat configuration file alang sa mga sayup.

    # journalctl -xe
    

    human sa pagsulay nga i-restart ang Filebeat magtudlo kanimo sa (mga) nakasala nga linya.

    Human namo mapamatud-an nga ang mga troso gipadala sa mga kliyente ug malampusong nadawat sa server. Ang una nga butang nga kinahanglan naton buhaton sa Kibana mao ang pag-configure sa usa ka pattern sa indeks ug itakda kini ingon default.

    Mahimo nimong ihulagway ang usa ka indeks isip usa ka bug-os nga database sa konteksto sa relational database. Mouban kami sa filebeat-* (o makagamit ka og mas tukma nga mga sukdanan sa pagpangita sama sa gipatin-aw sa opisyal nga dokumentasyon).

    Isulod ang filebeat-* sa Index name o pattern field ug dayon i-klik ang Create:

    Palihug timan-i nga tugutan ka sa pagsulod sa usa ka labi ka maayo nga pamatasan sa pagpangita sa ulahi. Sunod, i-klik ang bituon sa sulod sa berde nga rektanggulo aron i-configure kini isip default nga sumbanan sa indeks:

    Sa katapusan, sa Discover menu makit-an nimo ang daghang mga natad aron idugang sa taho sa visualization sa log. Pag-hover lang sa ibabaw nila ug i-klik ang Add:

    Ang mga resulta ipakita sa sentro nga bahin sa screen sama sa gipakita sa ibabaw. Mobati nga gawasnon sa pagdula-dula (idugang ug kuhaa ang mga uma gikan sa taho sa log) aron mahimong pamilyar sa Kibana.

    Sa kasagaran, ang Kibana magpakita sa mga rekord nga giproseso sulod sa katapusang 15 ka minuto (tan-awa ang ibabaw nga tuo nga suok) apan mahimo nimong usbon kana nga kinaiya pinaagi sa pagpili sa laing time frame:

    Summary

    Sa kini nga artikulo gipasabut namon kung giunsa ang pag-set up sa usa ka ELK stack aron makolekta ang mga log sa sistema nga gipadala sa duha nga mga kliyente, usa ka CentOS 7 ug usa ka Debian 8 nga makina.

    Karon mahimo nimong i-refer ang opisyal nga dokumentasyon sa Elasticsearch ug pangitaa ang dugang nga mga detalye kung giunsa ang paggamit niini nga setup aron masusi ug analisahon ang imong mga troso nga mas episyente.

    Kung naa kay pangutana, ayaw pagpanuko sa pagpangutana. Kami nagpaabut nga makadungog gikan kanimo.