在平常運維工做中,對於系統和業務日誌的處理尤其重要。今天,在這裏分享一下本身部署的Filebeat+ELK開源實時日誌分析平臺的記錄過程,有不對的地方還望指出。linux
簡單介紹:bootstrap
日誌主要包括系統日誌、應用程序日誌和安全日誌。系統運維和開發人員能夠經過日誌瞭解服務器軟硬件信息、檢查配置過程當中的錯誤及錯誤發生的緣由。常常分析日誌能夠了解服務器的負荷,性能安全性,從而及時採起措施糾正錯誤。
一般,日誌被分散的儲存不一樣的設備上。若是你管理數十上百臺服務器,你還在使用依次登陸每臺機器的傳統方法查閱日誌。這樣是否是感受很繁瑣和效率低下。當務之急咱們使用集中化的日誌管理,例如:開源的syslog,將全部服務器上的日誌收集彙總。vim
集中化管理日誌後,日誌的統計和檢索又成爲一件比較麻煩的事情,通常咱們使用grep、awk和wc等Linux命令能實現檢索和統計,可是對於要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的方法不免有點力不從心。centos
Filebeat+ELK是四個開源工具組成,簡單解釋以下:瀏覽器
Filebeat:ELK 協議棧的新成員,一個輕量級開源日誌文件數據蒐集器,基於 Logstash-Forwarder 源代碼開發,是對它的替代。在須要採集日誌數據的 server 上安裝 Filebeat,並指定日誌目錄或日誌文件後,Filebeat就能讀取數據,迅速發送到 Logstash 進行解析,亦或直接發送到 Elasticsearch 進行集中式存儲和分析。安全
Elasticsearch:是個開源分佈式搜索引擎,它的特色有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。服務器
Logstash:是一個徹底開源的工具,它能夠對你的日誌進行收集、過濾,並將其存儲供之後使用(如,搜索)。restful
Kibana:也是一個開源和免費的工具,它能夠爲 Logstash 和 ElasticSearch 提供的日誌分析友好的Web 界面,能夠幫助您彙總、分析和搜索重要數據日誌。oracle
這裏之因此用Filebeat+ELK是由於Filebeat相對於logstash而言,更輕量級,佔用系統資源少。運維
實驗拓撲圖
環境信息:
操做系統 | ip地址 | 軟件 |
centos6.9 | 10.104.34.101 | filebeat6.2.4 |
centos6.8 | 10.135.67.165 | Logstash6.2.4 |
centos6.8 | 10.135.67.165 | Elasticsearch6.2.4 |
centos6.8 | 10.135.173.165 | Kibana6.2.4 |
我這裏把elasticsearch和logstash部署在同一臺服務器上了。
安裝步驟:
一、配置Java環境:(安裝elasticsearch的時候須要有Java環境,jdk能夠去oracle官方網站下載,版本號能夠和個人不同)
#rpm -ivh jdk-8u102-linux-x64.rpm
二、安裝elasticsearch:
#wget -P /usr/local/src/ https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz #cd /usr/local/src #tar xvf elasticsearch-6.2.4.tar.gz #cp elasticsearch-6.2.4/config/elasticsearch.yml elasticsearch-6.2.4/config/elasticsearch.yml.default --備份elasticsearch的默認配置文件,以防止修改時出錯
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
這兩行配置主要是爲了解決以後啓動elasticsearch會報檢測失敗的一個錯,報錯內容以下:
添加elastic用戶,tar包啓動必須使用普通用戶運行
#useradd elastic #chown -R elastic. /usr/local/src/elasticsearch-6.2.4
打開sysctl.conf文件,添加以下內容:
#vim /etc/sysctl.conf vm.max_map_count = 655360 #sysctl -p /etc/sysctl.conf
打開/etc/security/limits.conf文件,修改打開文件句柄數
#vim /etc/security/limits.conf --添加以下內容 * soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 65536 切換到elastic普通用戶 #su - elastic $cd /usr/local/src/elasticsearch-6.2.4 $./bin/elasticsearch
第一次啓動須要一些時間,由於須要作一些初始化動做,若是沒啓動成功請查系elasticsearch的相關日誌解決。注意上面只是前臺啓動調試,在後臺須要加&,須要從新啓動。
查看端口是否開啓:
curl簡單的測試下:
三、安裝logstash
#wget -P /usr/local/src https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.tar.gz #cd /usr/local/src/ #tar xvf logstash-6.2.4.tar.gz
四、安裝filebeat
#wget -P /usr/local/src https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-linux-x86_64.tar.gz #cd /usr/local/src #tar xvf filebeat-6.2.4-linux-x86_64.tar.gz #cp /usr/local/src/filebeat-6.2.4/filebeat.yml /usr/local/src/filebeat-6.2.4/filebeat.yml.default
編輯filebeat.yml文件,內容以下:
啓動filebeat服務:
#cd /usr/local/src/filebeat-6.2.4 #./filebeat & --在後臺運行
注意:filebeat沒有監聽端口,主要看日誌和進程,filebeat監聽的文件記錄信息在/usr/local/src/filebeat-6.2.4/data/registry裏面
而後新建一個logstash啓動指定logstash.conf的配置文件,內容以下:
這裏咱們只配置了input和output部分,其實Logstash默認有input、filter、output三個區域,但通常至少配置input和output部分就夠了,而且logstash的默認配置文件logstash.yml咱們選擇不修改就行。
下面咱們啓動logstash,而後進行先進行簡單的測試:
#cd /usr/local/src/logstash-6.2.4 #./bin/logstash -e 'input { stdin { } } output { stdout { } }' --先進行不指定配置文件測試
當咱們輸入hello world的時候,對應的下面也會輸出
接下來指定配置文件logstash.conf進行測試:
#cd /usr/local/src/logstash-6.2.4 #./bin/logstash -f config/logstash.conf --這裏咱們先前臺啓動方便調試,待調試成功後再後臺啓動
這個啓動完一會後會輸出以下數據,這些數據就是filebeat從access.log裏採集過來的日誌,其實這些數據也輸入到了elasticsearch當中,能夠用curl http://ip:9200/_search?pretty
進行驗證(ip爲elasticsearch的ip)
固然咱們也能夠看到對應的端口9600和5044是開啓的
五、安裝kibana
#wget -P /usr/local/src https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-linux-x86_64.tar.gz #cd /usr/local/src #tar xvf kibana-6.2.4-linux-x86_64.tar.gz #cp kibana-6.2.4-linux-x86_64/config/kibana.yml kibana-6.2.4-linux-x86_64/config/kibana.yml.default
編輯kibana的配置文件
這裏server.host理論上來講配置成本服務器的外網ip便可,可是我用的雲服務器,配置成相應的外網ip在啓動的時候會報沒法分配對應的ip地址,至因而什麼緣由我也沒搞明白,可是配置成0.0.0.0後就可
以正常啓動。
打開瀏覽器輸入:http://ip:5601(ip爲kibana的外網ip地址)
進來以後首先建立一個索引,而後輸入
點擊Discover能夠看到採集的日誌已經到kibana這裏來了,至此,filebeat+elk日誌分析系統就搭建完了,還有許多高級功能需不斷學習。