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提供了一整套解決方案,並且都是開源軟件,之間互相配合使用,完美銜接,高效的滿足了很多場合的應用。並且是目前主流的一種日誌系統。

  官方文檔知識庫

  準備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/

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

/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的更多知識,如果小夥伴們在搭建的過程中有什麼問題還可以在下方留言,我們可以一起探討探討~~


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