ELK

什麼是ELFK

ELK是三個開源軟件的縮寫,分別表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟件。新增了一個FileBeat,它是一個輕量級的日誌收集處理工具(Agent),Filebeat佔用資源少,適合於在各個服務器上搜集日誌後傳輸給Logstash,官方也推薦此工具。

Elasticsearch是個開源分佈式搜索引擎,提供蒐集、分析、存儲數據三大功能。它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
Logstash 主要是用來日誌的蒐集、分析、過濾日誌的工具,支持大量的數據獲取方式。一般工作方式爲c/s架構,client端安裝在需要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操作在一併發往elasticsearch上去。
Kibana 也是一個開源和免費的工具,Kibana可以爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助彙總、分析和搜索重要數據日誌。
Filebeat隸屬於Beats。目前Beats包含四種工具:
1、Packetbeat(蒐集網絡流量數據)
2、Topbeat(蒐集系統、進程和文件系統級別的 CPU 和內存使用情況等數據)
3、Filebeat(蒐集文件數據)
4、Winlogbeat(蒐集 Windows 事件日誌數據)
  爲什麼要用ELFK

    一般我們需要進行日誌分析場景:直接在日誌文件中 grep、awk 就可以獲得自己想要的信息。但在規模較大的場景中,此方法效率低下,面臨問題包括日誌量太大如何歸檔、文本搜索太慢怎麼辦、如何多維度查詢。需要集中化的日誌管理,所有服務器上的日誌收集彙總。常見解決思路是建立集中式日誌收集系統,將所有節點上的日誌統一收集,管理,訪問。
一般大型系統是一個分佈式部署的架構,不同的服務模塊部署在不同的服務器上,問題出現時,大部分情況需要根據問題暴露的關鍵信息,定位到具體的服務器和服務模塊,構建一套集中式日誌系統,可以提高定位問題的效率。
一個完整的集中式日誌系統,需要包含以下幾個主要特點:收集、傳輸、存儲、分析、警告,而ELK提供了一整套解決方案,並且都是開源軟件,之間互相配合使用,完美銜接,高效的滿足了很多場合的應用。並且是目前主流的一種日誌系統。

  官方文檔知識庫

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.html
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/
  準備Elasticsearch

1、安裝Java環境

yum -y install java-1.8.0-openjdk export JAVA_HOME=/usr/java
2、編寫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
3、安裝Elasticsearch

yum -y install elasticsearch
4、配置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"]    #配置指定節點
5、增加vm.max_map_count項到sysctl.conf文件中

vim /etc/sysctl.conf vm.max_map_count = 655360 sysctl -p
6、修改用戶文件最大數量

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
7、驗證Elasticsearch是否正常

curl http://127.0.0.1:9200/
ELK

努力爬坑。。。。  
報錯: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

1、編寫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
2、安裝Logstash

yum -y install logstash
3、測試Logstash
ELK
/usr/share/logstash/bin/logstash -e 'input { stdin { } } output { elasticsearch { hosts => ["127.0.0.1:9200"] } stdout { codec => rubydebug }}'

  圖形化Kibana

1、編寫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
2、安裝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"
4、啓動Kibana

service kibana start
5、測試訪問Kibana
http://127.0.0.1:5601

  最後總結

總的來說,ELK日誌蒐集分析平臺搭建是遇到的問題還是會有的,和服務器有關,所以在服務起不來,報錯的情況下莫慌,穩住,想看報錯,然後分析,報錯說哪裏有問題就調整哪裏,一步一步來,這僅僅是部署搭建而已,真正的運用搜集日誌還沒開始呢,後面還會更新有關Logstash的更多知識,如果小夥伴們在搭建的過程中有什麼問題還可以在下方留言,我們可以一起探討探討~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章