在日常運維工作中,對於系統和業務日志的處理尤為重要。今天,在這里分享一下自己部署的Filebeat+ELK開源實時日志分析平台的記錄過程,有不對的地方還望指出。
簡單介紹:
日志主要包括系統日志、應用程序日志和安全日志。系統運維和開發人員可以通過日志了解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日志可以了解服務器的負荷,性能安全性,從而及時采取措施糾正錯誤。
通常,日志被分散的儲存不同的設備上。如果你管理數十上百台服務器,你還在使用依次登錄每台機器的傳統方法查閱日志。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日志管理,例如:開源的syslog,將所有服務器上的日志收集匯總。
集中化管理日志后,日志的統計和檢索又成為一件比較麻煩的事情,一般我們使用grep、awk和wc等Linux命令能實現檢索和統計,但是對於要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的方法難免有點力不從心。
Filebeat+ELK是四個開源工具組成,簡單解釋如下:
Filebeat:ELK 協議棧的新成員,一個輕量級開源日志文件數據搜集器,基於 Logstash-Forwarder 源代碼開發,是對它的替代。在需要采集日志數據的 server 上安裝 Filebeat,並指定日志目錄或日志文件后,Filebeat就能讀取數據,迅速發送到 Logstash 進行解析,亦或直接發送到 Elasticsearch 進行集中式存儲和分析。
Elasticsearch:是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
Logstash:是一個完全開源的工具,它可以對你的日志進行收集、過濾,並將其存儲供以后使用(如,搜索)。
Kibana:也是一個開源和免費的工具,它可以為 Logstash 和 ElasticSearch 提供的日志分析友好的Web 界面,可以幫助您匯總、分析和搜索重要數據日志。
這里之所以用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部署在同一台服務器上了。
安裝步驟:
1、配置Java環境:(安裝elasticsearch的時候需要有Java環境,jdk可以去oracle官方網站下載,版本號可以和我的不一樣)
#rpm -ivh jdk-8u102-linux-x64.rpm
2、安裝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會報檢測失敗的一個錯,報錯內容如下:
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
添加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簡單的測試下:
3、安裝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
4、安裝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是開啟的
5、安裝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日志分析系統就搭建完了,還有許多高級功能需不斷學習。