ວິທີການຕິດຕັ້ງ Elasticsearch, Logstash, ແລະ Kibana (ELK Stack) ໃນ CentOS/RHEL 7
ຖ້າທ່ານເປັນຄົນທີ່ເຄີຍເປັນ, ຫຼືເຄີຍຢູ່ໃນໄລຍະຜ່ານມາ, ຮັບຜິດຊອບໃນການກວດກາແລະວິເຄາະຂໍ້ມູນບັນທຶກລະບົບໃນ Linux, ທ່ານຈະຮູ້ວ່າຄວາມຝັນຮ້າຍທີ່ວຽກງານນັ້ນສາມາດກາຍເປັນແນວໃດຖ້າວ່າມີຫລາຍບໍລິການທີ່ຖືກຕິດຕາມພ້ອມກັນ.
ໃນມື້ທີ່ຜ່ານມາ, ວຽກນັ້ນຕ້ອງໄດ້ເຮັດດ້ວຍຕົນເອງສ່ວນຫລາຍ, ແຕ່ລະປະເພດໄມ້ທ່ອນຖືກປະຕິບັດແຍກຕ່າງຫາກ. ໂຊກດີ, ການປະສົມປະສານຂອງ Elasticsearch, Logstash, ແລະ Kibana ຢູ່ດ້ານ server, ພ້ອມກັບ Filebeat ຢູ່ເບື້ອງລູກຄ້າ, ເຮັດໃຫ້ວຽກທີ່ມີຄວາມຫຍຸ້ງຍາກຄັ້ງ ໜຶ່ງ ເບິ່ງຄືກັບການຍ່າງຢູ່ສວນສາທາລະນະໃນມື້ນີ້.
ສາມອົງປະກອບ ທຳ ອິດປະກອບເປັນສິ່ງທີ່ເອີ້ນວ່າ stack ELK, ເຊິ່ງຈຸດປະສົງຫຼັກຂອງມັນແມ່ນເພື່ອເກັບ ກຳ ຂໍ້ມູນບັນທຶກຈາກຫລາຍເຊີບເວີໃນເວລາດຽວກັນ (ເຊິ່ງເອີ້ນວ່າການຕັດໄມ້ສູນກາງ).
ອິນເຕີເຟດເວັບໄຊຕ໌ທີ່ໃຊ້ໃນ Java ສາມາດເຮັດໃຫ້ທ່ານສາມາດກວດເບິ່ງບັນທຶກໄດ້ຢ່າງໄວວາເພື່ອເບິ່ງການປຽບທຽບແລະແກ້ໄຂບັນຫາໄດ້ງ່າຍຂຶ້ນ ບັນທຶກລູກຄ້າເຫຼົ່ານີ້ຖືກສົ່ງໄປຫາເຄື່ອງແມ່ຂ່າຍສູນກາງໂດຍ Filebeat, ເຊິ່ງສາມາດອະທິບາຍວ່າເປັນຕົວແທນຂົນສົ່ງໄມ້ທ່ອນ.
ມາເບິ່ງ ນຳ ກັນວ່າຊິ້ນສ່ວນຂອງມັນເຫລົ່ານັ້ນພໍດີກັນ. ສະພາບແວດລ້ອມການທົດສອບຂອງພວກເຮົາຈະປະກອບດ້ວຍເຄື່ອງຈັກດັ່ງຕໍ່ໄປນີ້:
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.
ກະລຸນາຮັບຊາບວ່າຄຸນຄ່າຂອງ RAM ທີ່ ນຳ ມາສະ ເໜີ ຢູ່ນີ້ບໍ່ແມ່ນຄວາມຕ້ອງການທີ່ເຄັ່ງຄັດ, ແຕ່ວ່າຄຸນຄ່າທີ່ແນະ ນຳ ສຳ ລັບການຈັດຕັ້ງປະຕິບັດ ELK ທີ່ປະສົບຜົນ ສຳ ເລັດຢູ່ໃນລະບົບ server. RAM ຫນ້ອຍຕໍ່ລູກຄ້າຈະບໍ່ມີຄວາມແຕກຕ່າງຫຼາຍ, ຖ້າມີ, ທັງ ໝົດ.
ການຕິດຕັ້ງ ELK Stack ໃນ Server
ເລີ່ມຕົ້ນດ້ວຍການຕິດຕັ້ງ ELK stack ໃນ server, ພ້ອມກັບ ຄຳ ອະທິບາຍສັ້ນໆກ່ຽວກັບສິ່ງທີ່ແຕ່ລະສ່ວນປະກອບເຮັດ:
<
ຕິດຕັ້ງຊຸດຕໍ່ໄປນີ້ຢູ່ໃນ server ສູນກາງ. ກ່ອນອື່ນ ໝົດ, ພວກເຮົາຈະຕິດຕັ້ງ Java JDK ລຸ້ນ 8 (ປັບປຸງ ໃໝ່ 102, ລ້າສຸດໃນເວລາຂຽນນີ້), ເຊິ່ງແມ່ນການເພິ່ງພາອາໄສອົງປະກອບ ELK.
ທ່ານອາດຕ້ອງການກວດເບິ່ງກ່ອນໃນ ໜ້າ ການດາວໂຫລດ Java ຢູ່ບ່ອນນີ້ເພື່ອເບິ່ງວ່າມີການປັບປຸງ ໃໝ່ ກວ່າເກົ່າຫຼືບໍ່.
# 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
ເວລາເພື່ອກວດກາເບິ່ງວ່າການຕິດຕັ້ງ ສຳ ເລັດແລ້ວຫຼືບໍ່:
# java -version
ເພື່ອຕິດຕັ້ງ Elasticsearch, Logstash, ແລະ Kibana, ພວກເຮົາຈະຕ້ອງສ້າງຫໍໄຕ ສຳ ລັບ yum ດ້ວຍຕົນເອງດັ່ງຕໍ່ໄປນີ້:
1. ນຳ ເຂົ້າລະຫັດ Gastic ຂອງ Elasticsearch ໃຫ້ກັບຜູ້ຈັດການຊຸດ rpm:
# rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
2. ໃສ່ສາຍຕໍ່ໄປນີ້ໃສ່ແຟ້ມເອກະສານການຕັ້ງຄ່າຂອງຫໍໄຕ 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. ຕິດຕັ້ງຊຸດ Elasticsearch.
# yum install elasticsearch
ເມື່ອການຕິດຕັ້ງ ສຳ ເລັດແລ້ວ, ທ່ານຈະຖືກກະຕຸ້ນເຕືອນໃຫ້ເລີ່ມຕົ້ນແລະເປີດໃຊ້ງານ elasticsearch:
4. ເລີ່ມຕົ້ນແລະເປີດໃຊ້ບໍລິການ.
# systemctl daemon-reload # systemctl enable elasticsearch # systemctl start elasticsearch
5. ອະນຸຍາດໃຫ້ມີການຈາລະຈອນຜ່ານພອດ TCP 9200 ໃນໄຟວໍຂອງທ່ານ:
# firewall-cmd --add-port=9200/tcp # firewall-cmd --add-port=9200/tcp --permanent
6. ກວດເບິ່ງວ່າ Elasticsearch ຕອບກັບ ຄຳ ຮ້ອງຂໍງ່າຍໆຜ່ານ HTTP:
# curl -X GET http://localhost:9200
ຜົນໄດ້ຮັບຂອງ ຄຳ ສັ່ງຂ້າງເທິງຄວນຈະຄ້າຍຄືກັບ:
ໃຫ້ແນ່ໃຈວ່າທ່ານເຮັດ ສຳ ເລັດຂັ້ນຕອນຂ້າງເທິງແລະຫຼັງຈາກນັ້ນ ດຳ ເນີນການກັບ Logstash. ເນື່ອງຈາກທັງ Logstash ແລະ Kibana ແບ່ງປັນຄີ Elasticsearch GPG, ບໍ່ ຈຳ ເປັນຕ້ອງ ນຳ ເຂົ້າມັນກ່ອນທີ່ຈະຕິດຕັ້ງແພກເກດ.
7. ໃສ່ສາຍຕໍ່ໄປນີ້ໃສ່ແຟ້ມເອກະສານການຕັ້ງຄ່າຂອງຫໍໄຕ 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. ຕິດຕັ້ງຊຸດ Logstash:
# yum install logstash
9. ເພີ່ມໃບຢັ້ງຢືນ SSL ໂດຍອີງໃສ່ທີ່ຢູ່ IP ຂອງ server ELK ທີ່ຢູ່ເສັ້ນຕໍ່ໄປນີ້ຢູ່ດ້ານລຸ່ມ [v3_ca]
ໃນ /etc/pki/tls/openssl.cnf
:
[ v3_ca ] subjectAltName = IP: 192.168.0.29
10. ສ້າງໃບຢັ້ງຢືນທີ່ລົງລາຍເຊັນດ້ວຍຕົນເອງທີ່ຖືກຕ້ອງໃນເວລາ 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. ຕັ້ງຄ່າ Logstash ການປ້ອນຂໍ້ມູນ, ຜົນຜະລິດແລະການກັ່ນຕອງເອກະສານ:
ການປ້ອນຂໍ້ມູນ: ສ້າງ /etc/logstash/conf.d/input.conf
ແລະໃສ່ສາຍຕໍ່ໄປນີ້ໃສ່ມັນ. ນີ້ແມ່ນສິ່ງທີ່ ຈຳ ເປັນ ສຳ ລັບ Logstash ເພື່ອ“ ຮຽນຮູ້” ວິທີການປຸງແຕ່ງ beats ທີ່ມາຈາກລູກຄ້າ. ໃຫ້ແນ່ໃຈວ່າເສັ້ນທາງໄປສູ່ໃບຢັ້ງຢືນແລະຫຼັກທີ່ກົງກັບເສັ້ນທາງທີ່ຖືກຕ້ອງດັ່ງທີ່ໄດ້ກ່າວໃນຂັ້ນຕອນກ່ອນ ໜ້າ ນີ້:
input { beats { port => 5044 ssl => true ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" } }
ເອກະສານຜົນໄດ້ຮັບ ( /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]}" } }
ການກັ່ນຕອງ ( /etc/logstash/conf.d/filter.conf
) ແຟ້ມ. ພວກເຮົາຈະເຂົ້າ syslog ຂໍ້ຄວາມເພື່ອຄວາມລຽບງ່າຍ:
filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }
12. ກວດສອບເອກະສານການຕັ້ງຄ່າ Logstash.
# service logstash configtest
13. ເລີ່ມຕົ້ນແລະເປີດໃຊ້ logstash:
# systemctl daemon-reload # systemctl start logstash # systemctl enable logstash
14. ຕັ້ງຄ່າ firewall ເພື່ອໃຫ້ Logstash ສາມາດເອົາບັນທຶກຈາກລູກຄ້າ (ພອດ TCP 5044):
# firewall-cmd --add-port=5044/tcp # firewall-cmd --add-port=5044/tcp --permanent
14. ໃສ່ສາຍຕໍ່ໄປນີ້ໃສ່ແຟ້ມເອກະສານການຕັ້ງຄ່າຂອງຫໍໄຕ 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. ຕິດຕັ້ງຊຸດ Kibana:
# yum install kibana
16. ເລີ່ມຕົ້ນແລະເປີດໃຊ້ງານ Kibana.
# systemctl daemon-reload # systemctl start kibana # systemctl enable kibana
17. ໃຫ້ແນ່ໃຈວ່າທ່ານສາມາດເຂົ້າເຖິງອິນເຕີເຟດຂອງ Kibana ຈາກຄອມພິວເຕີ້ອື່ນ (ອະນຸຍາດໃຫ້ມີການຈາລະຈອນໃນພອດ TCP 5601):
# firewall-cmd --add-port=5601/tcp # firewall-cmd --add-port=5601/tcp --permanent
18. ເປີດຕົວ Kibana ( http://192.168.0.29:5601
) ເພື່ອຢັ້ງຢືນວ່າທ່ານສາມາດເຂົ້າເຖິງອິນເຕີເຟດເວັບໄຊຕ໌:
ພວກເຮົາຈະກັບມາທີ່ນີ້ຫຼັງຈາກທີ່ພວກເຮົາໄດ້ຕິດຕັ້ງແລະຕັ້ງຄ່າ Filebeat ໃຫ້ກັບລູກຄ້າ.
ຕິດຕັ້ງ Filebeat ໃສ່ Client Servers
ພວກເຮົາຈະສະແດງວິທີການເຮັດສິ່ງນີ້ ສຳ ລັບລູກຄ້າ # 1 (ເຮັດ ໃໝ່ ສຳ ລັບລູກຄ້າ # 2 ຫລັງຈາກນັ້ນ, ປ່ຽນເສັ້ນທາງຖ້າ ນຳ ໃຊ້ກັບການແຈກຈ່າຍຂອງທ່ານ).
1. ສຳ ເນົາໃບຢັ້ງຢືນ SSL ຈາກເຊີບເວີໃຫ້ລູກຄ້າ:
# scp /etc/pki/tls/certs/logstash-forwarder.crt [email :/etc/pki/tls/certs/
2. ນຳ ເຂົ້າລະຫັດ Gastic ຂອງ Elasticsearch ໃຫ້ກັບຜູ້ຈັດການຊຸດ rpm:
# rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
3. ສ້າງຫໍສະມຸດ ສຳ ລັບ Filebeat ( /etc/yum.repos.d/filebeat.repo
) ໃນການແຈກຢາຍທີ່ອີງໃສ່ 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. ກຳ ນົດແຫລ່ງທີ່ມາເພື່ອຕິດຕັ້ງ Filebeat ໃນ Debian ແລະອະນຸພັນຂອງມັນ:
# 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. ຕິດຕັ້ງຊຸດ Filebeat:
# yum install filebeat [On CentOS and based Distros] # aptitude install filebeat [On Debian and its derivatives]
6. ເລີ່ມຕົ້ນແລະເປີດໃຊ້ Filebeat:
# systemctl start filebeat # systemctl enable filebeat
ຄຳ ເວົ້າທີ່ລະມັດລະວັງຢູ່ນີ້. ການຕັ້ງຄ່າ Filebeat ແມ່ນເກັບໄວ້ໃນເອກະສານ YAML, ເຊິ່ງຮຽກຮ້ອງໃຫ້ມີການລົງເລິກຢ່າງເຂັ້ມງວດ. ຈົ່ງລະມັດລະວັງກັບສິ່ງນີ້ເມື່ອທ່ານແກ້ໄຂ /etc/filebeat/filebeat.yml
ດັ່ງຕໍ່ໄປນີ້:
<
input_type: log document_type: syslog
<
ຂັ້ນຕອນຂ້າງເທິງແມ່ນສະແດງຢູ່ໃນຮູບຕໍ່ໄປນີ້:
ປະຫຍັດການປ່ຽນແປງ, ແລະຫຼັງຈາກນັ້ນ restart Filebeat ໃນລູກຄ້າ:
# systemctl restart filebeat
ເມື່ອພວກເຮົາໄດ້ເຮັດ ສຳ ເລັດຂັ້ນຕອນຂ້າງເທິງນີ້ກ່ຽວກັບລູກຄ້າ, ຮູ້ສຶກວ່າບໍ່ເສຍຄ່າທີ່ຈະ ດຳ ເນີນການ.
ເພື່ອກວດສອບວ່າຂໍ້ມູນບັນທຶກຈາກລູກຄ້າສາມາດສົ່ງແລະຮັບໄດ້ຢ່າງປະສົບຜົນ ສຳ ເລັດ, ໃຫ້ ດຳ ເນີນການ ຄຳ ສັ່ງຕໍ່ໄປນີ້ໃນ server ELK:
# curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'
ຜົນໄດ້ຮັບຄວນຈະຄ້າຍຄືກັບ (ສັງເກດເຫັນວ່າຂໍ້ຄວາມຈາກ/var/log/message ແລະ/var/log/ປອດໄພໄດ້ຮັບຈາກ client1 ແລະ client2) ແນວໃດ:
ຖ້າບໍ່ດັ່ງນັ້ນ, ກວດເບິ່ງເອກະສານການຕັ້ງຄ່າຂອງ Filebeat ສຳ ລັບຂໍ້ຜິດພາດ.
# journalctl -xe
ຫຼັງຈາກທີ່ພະຍາຍາມທີ່ຈະເລີ່ມ Filebeat ຄືນ ໃໝ່ ຈະຊີ້ໃຫ້ທ່ານເຫັນເສັ້ນທີ່ກະ ທຳ ຜິດ.
ຫຼັງຈາກທີ່ພວກເຮົາໄດ້ກວດສອບແລ້ວວ່າບັນທຶກແມ່ນ ກຳ ລັງຖືກສົ່ງໂດຍລູກຄ້າແລະໄດ້ຮັບຜົນ ສຳ ເລັດໃນເຊີຟເວີ. ສິ່ງ ທຳ ອິດທີ່ພວກເຮົາຈະຕ້ອງເຮັດໃນ Kibana ແມ່ນການ ກຳ ນົດຮູບແບບດັດສະນີແລະ ກຳ ນົດມັນເປັນຄ່າເລີ່ມຕົ້ນ.
ທ່ານສາມາດອະທິບາຍດັດສະນີເປັນຖານຂໍ້ມູນເຕັມໃນສະພາບການຂອງຖານຂໍ້ມູນທີ່ກ່ຽວຂ້ອງ. ພວກເຮົາຈະໄປກັບ filebeat- *
(ຫຼືທ່ານສາມາດໃຊ້ເງື່ອນໄຂການຄົ້ນຫາທີ່ຊັດເຈນກວ່າດັ່ງທີ່ໄດ້ອະທິບາຍໄວ້ໃນເອກະສານທາງການ).
ກະລຸນາໃສ່ filebeat- *
ໃນຊື່ດັດຊະນີຫຼືແບບແຜນທີ່ແລະຫຼັງຈາກນັ້ນກົດປຸ່ມ Create:
ກະລຸນາຮັບຊາບວ່າທ່ານຈະໄດ້ຮັບອະນຸຍາດໃຫ້ເຂົ້າໄປໃນເງື່ອນໄຂການຄົ້ນຫາທີ່ຖືກປັບ ໄໝ ຫຼາຍຂື້ນໃນພາຍຫຼັງ. ຖັດໄປ, ກົດດາວຢູ່ໃນຮູບສີ່ຫລ່ຽມສີຂຽວເພື່ອ ກຳ ນົດມັນເປັນຮູບແບບດັດສະນີຄື:
ສຸດທ້າຍ, ໃນເມນູຄົ້ນພົບທ່ານຈະເຫັນຫລາຍໆຂົງເຂດທີ່ຈະເພີ່ມເຂົ້າໃນບົດລາຍງານການເບິ່ງເຫັນພາບ. ພຽງແຕ່ວາງຕົວພວກມັນໄວ້ແລະກົດເພີ່ມ:
ຜົນໄດ້ຮັບຈະຖືກສະແດງຢູ່ເຂດພາກກາງຂອງ ໜ້າ ຈໍດັ່ງທີ່ສະແດງຢູ່ຂ້າງເທິງ. ຮູ້ສຶກວ່າບໍ່ເສຍຄ່າທີ່ຈະຫລິ້ນຮອບ (ຕື່ມແລະເອົາທົ່ງນາຈາກລາຍງານບັນທຶກ) ເພື່ອໃຫ້ຄຸ້ນເຄີຍກັບ Kibana.
ໂດຍຄ່າເລີ່ມຕົ້ນ, Kibana ຈະສະແດງບັນທຶກທີ່ຖືກປະມວນຜົນໃນ 15 ນາທີສຸດທ້າຍ (ເບິ່ງແຈຂວາເທິງ) ແຕ່ທ່ານສາມາດປ່ຽນແປງພຶດຕິ ກຳ ນັ້ນໂດຍການເລືອກກອບເວລາອື່ນ:
ບົດສະຫຼຸບ
ໃນບົດຂຽນນີ້ພວກເຮົາໄດ້ອະທິບາຍວິທີການຕັ້ງຄ່າ ELK stack ເພື່ອເກັບ ກຳ ຂໍ້ມູນບັນທຶກລະບົບທີ່ສົ່ງໂດຍລູກຄ້າສອງຄົນ, ເຄື່ອງຈັກ CentOS 7 ແລະເຄື່ອງ Debian 8.
ຕອນນີ້ທ່ານສາມາດອ້າງອີງເຖິງເອກະສານ Elasticsearch ຢ່າງເປັນທາງການແລະຊອກຫາລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບວິທີການ ນຳ ໃຊ້ການຕັ້ງຄ່ານີ້ເພື່ອກວດກາແລະວິເຄາະບັນທຶກຂອງທ່ານໃຫ້ມີປະສິດທິພາບຫລາຍຂື້ນ.
ຖ້າທ່ານມີ ຄຳ ຖາມ, ຢ່າລັງເລທີ່ຈະຖາມ. ພວກເຮົາຫວັງວ່າຈະໄດ້ຍິນຂ່າວຈາກທ່ານ.