在上節咱們已經把elasticsearch+kibana已經搭建起來了,能夠正常的進行數據的索引查詢了,可是直接對elasticsearch進行操做也很是不方便, elasticsearch很難對接其餘的數據源,這是使用就須要logstash和filebeat出場了...linux
附上:vim
喵了個咪的博客:w-blog.cn服務器
官網地址:https://www.elastic.co/cn/elasticsearch
logstash主要的做用就是輸入輸出進行數據的處理,官方聲稱支持十幾種數據輸入源和輸出源,而且能夠多點分發是一個很強大的工具,咱們主要使用的是它的數據處理功能(好比解析日誌提取關鍵字索引,數據過濾等)工具
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.3.0.tar.gz tar -zxvf logstash-5.3.0.tar.gz mv logstash-5.3.0 /usr/local/
從以前的介紹有了解到logstash它的主要功能是處理數據進行輸入輸出,因此咱們就要搭建一條輸入輸出的數據通道來進行數據傳輸,建立這條管道的配置文件:性能
vim /usr/local/logstash-5.3.0/config/first-pipeline.conf3d
# 制定輸入源爲beats 而且開發9011端口接受數據 input { beats { port => 9011 } } # 制定數據輸出源爲elasticsearch 而且指定index名稱 output { elasticsearch { hosts => [ "localhost:9200" ] index => "first-pipeline-%{+YYYY.MM.dd}" } }
試着啓動logstash: /usr/local/logstash-5.3.0/bin/logstash -f /usr/local/logstash-5.3.0/config/first-pipeline.conf 看到以下輸出證實以及成功啓動logstashrest
[2017-05-04T09:55:59,951][INFO ][logstash.inputs.beats ] Beats inputs: Starting input listener {:address=>"0.0.0.0:9011"} [2017-05-04T09:56:00,007][INFO ][logstash.pipeline ] Pipeline main started [2017-05-04T09:56:00,104][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
使用Supervisor常駐啓動修改配置文件加入以下語句在重啓Supervisor就能夠在後臺運行日誌
;你須要啓動的進程給個名字 [program:logstash] ;你須要執行的語句 command=/usr/local/logstash-5.3.0/bin/logstash -f /usr/local/logstash-5.3.0/config/first-pipeline.conf ;是否自動啓動 autostart=true autorestart=true ;運行程序的用戶 user=root
雖然logstash也能夠直接監聽文件的數據,爲何還須要filebeat呢? 應爲通常咱們須要採集不少臺服務器上的日誌時須要作到儘可能少的佔用資源以及儘量的簡單,logstash使用JAVA編寫可想而知對於資源消耗也不可小視,filebeat使用GO編寫幾乎作到不影響機器性能,而且filebeat還能夠進行最基礎的分類這就是選擇filebeat的緣由(以前beats是整合在logstash後面應爲種種緣由被分離了出來)code
注意1:beats由不少程序組成filebeat只是其中對文件進行採集的一種 注意2:不必定要使用beats, logstash也能夠直接接受各類組件上傳的日誌beats只是其中一種
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.3.1-linux-x86_64.tar.gz tar -zxvf filebeat-5.3.1-linux-x86_64.tar.gz mv filebeat-5.3.1-linux-x86_64 /usr/local/filebeat-5.3.1
既然是採集文件數據固然少不了對採集數據源的配置
vim /usr/local/filebeat-5.3.1/filebeat.yml
默認filebeat輸出源是elasticsearch咱們須要替換成logstash
# 修改以下語句 output.elasticsearch: -> output.logstash: hosts: ["localhost:9200"] -> hosts: ["localhost:9011"]
配置文件默認採集/var/log下以.log結尾的文件
- input_type: log paths: - /var/log/*.log
使用以下命令運行 :/usr/local/filebeat-5.3.1/filebeat -c /usr/local/filebeat-5.3.1/filebeat.yml
使用Supervisor常駐啓動修改配置文件加入以下語句在重啓Supervisor就能夠在後臺運行
;你須要啓動的進程給個名字 [program:filebeat] ;你須要執行的語句 command=/usr/local/filebeat-5.3.1/filebeat -c /usr/local/filebeat-5.3.1/filebeat.yml ;是否自動啓動 autostart=true autorestart=true ;運行程序的用戶 user=root
正常採集起來以後就能夠在kibana中添加一個查看的索引了
這個時候就把/var/log中全部以.log結尾的日誌所有采集上來了而且能夠經過source來進行文件的選擇 這是選擇了只看yum.log以後的效果
到這裏咱們基本上吧BELK已經完整的搭建起來而且對日誌開始採集了,可是BELK不單單如此,還有對於kibana的使用,對於各種日誌的處理,對於時間的處理,對於索引字段的增長等還有不少細節,繼續關注喵了個咪的博客會爲你們帶來更多的關於BELK的使用技巧
注:筆者能力有限有說的不對的地方但願你們可以指出,也但願多多交流!