大企業(yè)都在用的ELK
2018-09-19 21:52:36
什么是ELFK
ELK是三個開源軟件的縮寫,分別表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟件。新增了一個FileBeat,它是一個輕量級的日志收集處理工具(Agent),Filebeat占用資源少,適合于在各個服務器上搜集日志后傳輸給Logstash,官方也推薦此工具。
Elasticsearch是個開源分布式搜索引擎,提供搜集、分析、存儲數據三大功能。它的特點有:分布式,零配置,自動發(fā)現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助匯總、分析和搜索重要數據日志。
Filebeat隸屬于Beats。目前Beats包含四種工具:
1、Packetbeat(搜集網絡流量數據)
2、Topbeat(搜集系統(tǒng)、進程和文件系統(tǒng)級別的 CPU 和內存使用情況等數據)
3、Filebeat(搜集文件數據)
4、Winlogbeat(搜集 Windows 事件日志數據)
為什么要用ELFK
一般我們需要進行日志分析場景:直接在日志文件中 grep、awk 就可以獲得自己想要的信息。但在規(guī)模較大的場景中,此方法效率低下,面臨問題包括日志量太大如何歸檔、文本搜索太慢怎么辦、如何多維度查詢。需要集中化的日志管理,所有服務器上的日志收集匯總。常見解決思路是建立集中式日志收集系統(tǒng),將所有節(jié)點上的日志統(tǒng)一收集,管理,訪問。
一般大型系統(tǒng)是一個分布式部署的架構,不同的服務模塊部署在不同的服務器上,問題出現時,大部分情況需要根據問題暴露的關鍵信息,定位到具體的服務器和服務模塊,構建一套集中式日志系統(tǒng),可以提高定位問題的效率。
一個完整的集中式日志系統(tǒng),需要包含以下幾個主要特點:收集、傳輸、存儲、分析、警告,而ELK提供了一整套解決方案,并且都是開源軟件,之間互相配合使用,完美銜接,高效的滿足了很多場合的應用。并且是目前主流的一種日志系統(tǒng)。
官方文檔知識庫
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中文社區(qū):
https://elasticsearch.cn/
準備Elasticsearch
1、安裝Java環(huán)境
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????#配置節(jié)點名稱 path.data:?/var/lib/elasticsearch????#配置data存放的路徑 path.logs:?/var/log/elasticsearch????#配置日志存放的路徑 bootstrap.memory_lock:?false????#配置是否使用內存交換分區(qū) bootstrap.system_call_filter:?false????#配置是否啟用檢測 network.host:?0.0.0.0????#配置監(jiān)聽地址 http.port:?9200????#配置監(jiān)聽端口 discovery.zen.ping.multicast.enabled:?false????#配置是否啟用廣播地址 discovery.zen.ping.unicast.hosts:?["127.0.0.1"]????#配置指定節(jié)點
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
原因:這是在因為操作系統(tǒng)不支持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]
原因:最大虛擬內存區(qū)域設置過小
解決: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日志搜集分析平臺搭建是遇到的問題還是會有的,和服務器有關,所以在服務起不來,報錯的情況下莫慌,穩(wěn)住,想看報錯,然后分析,報錯說哪里有問題就調整哪里,一步一步來,這僅僅是部署搭建而已,真正的運用搜集日志還沒開始呢,后面還會更新有關Logstash的更多知識,如果小伙伴們在搭建的過程中有什么問題還可以在下方留言,我們可以一起探討探討~~
分布式 實時流計算服務 CS
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。