ELK是三個開源軟件的縮寫,分別表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟件。新增了一個FileBeat,它是一個輕量級的日誌收集處理工具(Agent),Filebeat佔用資源少,適合於在各個服務器上搜集日誌後傳輸給Logstash,官方也推薦此工具。html
Elasticsearch是個開源分佈式搜索引擎,提供蒐集、分析、存儲數據三大功能。它的特色有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。java
Logstash 主要是用來日誌的蒐集、分析、過濾日誌的工具,支持大量的數據獲取方式。通常工做方式爲c/s架構,client端安裝在須要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操做在一併發往elasticsearch上去。node
Kibana 也是一個開源和免費的工具,Kibana能夠爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,能夠幫助彙總、分析和搜索重要數據日誌。bootstrap
Filebeat隸屬於Beats。目前Beats包含四種工具:
一、Packetbeat(蒐集網絡流量數據)
二、Topbeat(蒐集系統、進程和文件系統級別的 CPU 和內存使用狀況等數據)
三、Filebeat(蒐集文件數據)
四、Winlogbeat(蒐集 Windows 事件日誌數據)vim
通常咱們須要進行日誌分析場景:直接在日誌文件中 grep、awk 就能夠得到本身想要的信息。但在規模較大的場景中,此方法效率低下,面臨問題包括日誌量太大如何歸檔、文本搜索太慢怎麼辦、如何多維度查詢。須要集中化的日誌管理,全部服務器上的日誌收集彙總。常看法決思路是創建集中式日誌收集系統,將全部節點上的日誌統一收集,管理,訪問。
通常大型系統是一個分佈式部署的架構,不一樣的服務模塊部署在不一樣的服務器上,問題出現時,大部分狀況須要根據問題暴露的關鍵信息,定位到具體的服務器和服務模塊,構建一套集中式日誌系統,能夠提升定位問題的效率。
一個完整的集中式日誌系統,須要包含如下幾個主要特色:收集、傳輸、存儲、分析、警告,而ELK提供了一整套解決方案,而且都是開源軟件,之間互相配合使用,完美銜接,高效的知足了不少場合的應用。而且是目前主流的一種日誌系統。ruby
Filebeat:
https://www.elastic.co/cn/products/beats/filebeat
https://www.elastic.co/guide/en/beats/filebeat/5.6/index.html服務器
Logstash:
https://www.elastic.co/cn/products/logstash
https://www.elastic.co/guide/en/logstash/5.6/index.htmlrestful
Kibana:
https://www.elastic.co/cn/products/kibana
https://www.elastic.co/guide/en/kibana/5.5/index.html網絡
Elasticsearch:
https://www.elastic.co/cn/products/elasticsearch
https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html架構
elasticsearch中文社區:
https://elasticsearch.cn/
一、安裝Java環境
yum -y install java-1.8.0-openjdk export JAVA_HOME=/usr/java
二、編寫Elasticearch的yum倉庫文件
rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch vim /etc/yum.repos.d/elasticsearch.repo [elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md yum clean all
三、安裝Elasticsearch
yum -y install elasticsearch
四、配置Elasticsearch
vim /etc/elasticsearch/elasticsearch.yml cluster.name: KJ-Cloud #配置集羣名稱 node.name: node.kemin-cloud.com #配置節點名稱 path.data: /var/lib/elasticsearch #配置data存放的路徑 path.logs: /var/log/elasticsearch #配置日誌存放的路徑 bootstrap.memory_lock: false #配置是否使用內存交換分區 bootstrap.system_call_filter: false #配置是否啓用檢測 network.host: 0.0.0.0 #配置監聽地址 http.port: 9200 #配置監聽端口 discovery.zen.ping.multicast.enabled: false #配置是否啓用廣播地址 discovery.zen.ping.unicast.hosts: ["127.0.0.1"] #配置指定節點
五、增長vm.max_map_count項到sysctl.conf文件中
vim /etc/sysctl.conf vm.max_map_count = 655360 sysctl -p
六、修改用戶文件最大數量
vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096 vim /etc/security/limits.d/90-nproc.conf * soft nproc 1024 #修改成* soft nproc 2048
七、驗證Elasticsearch是否正常
curl http://127.0.0.1:9200/
努力爬坑。。。。
報錯:system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
緣由:這是在由於操做系統不支持SecComp,而ES5.2.2默認bootstrap.system_call_filter爲true進行檢測,因此致使檢測失敗,失敗後直接致使ES不能啓動。
解決:vim /etc/elasticsearch/elasticsearch.yml
bootstrap.memory_lock: false
bootstrap.system_call_filter: false報錯:max virtual memory areas vm.max_map_count [65536] is too low, increase to at least [262144]
緣由:最大虛擬內存區域設置太小
解決:vim /etc/sysctl.conf
vm.max_map_count = 655360報錯:max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536],max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]
緣由:最大文件描述符和最大線程數設置太小
解決:vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096報錯:max number of threads [1024] for user [lish] likely too low, increase to at least [2048]
緣由:用戶最大線程數設置太小
解決:vi /etc/security/limits.d/90-nproc.conf
* soft nproc 1024 #修改成* soft nproc 2048
一、編寫Logstash的yum倉庫文件
rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch vim /etc/yum.repos.d/logstash.repo [logstash-6.x] name=Elastic repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md yum clean all
二、安裝Logstash
yum -y install logstash
三、測試Logstash
/usr/share/logstash/bin/logstash -e 'input { stdin { } } output { elasticsearch { hosts => ["127.0.0.1:9200"] } stdout { codec => rubydebug }}'
一、編寫Kibana的yum倉庫文件
rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch vim /etc/yum.repos.d/kibana.repo [kibana-6.x] name=Kibana repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md yum clean all
二、安裝Kibana
yum install kibana
3、配置Kibana
vim /etc/kibana/kibana.yml server.port: 5601 server.host: "0.0.0.0" elasticsearch.url: "http://127.0.0.1:9200" kibana.index: ".kibana"
四、啓動Kibana
service kibana start
五、測試訪問Kibana
http://127.0.0.1:5601
總的來講,ELK日誌蒐集分析平臺搭建是遇到的問題仍是會有的,和服務器有關,因此在服務起不來,報錯的狀況下莫慌,穩住,想看報錯,而後分析,報錯說哪裏有問題就調整哪裏,一步一步來,這僅僅是部署搭建而已,真正的運用搜集日誌還沒開始呢,後面還會更新有關Logstash的更多知識,若是小夥伴們在搭建的過程當中有什麼問題還能夠在下方留言,咱們能夠一塊兒探討探討~~