大企業都在用的ELK

  什麼是ELFK

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

  爲何要用ELFK

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

  官方文檔知識庫

  準備Elasticsearch

一、安裝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

一、編寫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

一、編寫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的更多知識,若是小夥伴們在搭建的過程當中有什麼問題還能夠在下方留言,咱們能夠一塊兒探討探討~~

相關文章
相關標籤/搜索