ELK:環境搭建&初體驗
環境
1個Cenos 7 虛擬機器
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
安裝
概述
- 目前安裝都是在同一個測試Centos7中,另外一個暫時不使用(後面測試遠端rsyslog的時候再使用)
- 本文說的安裝均不是通過包管理工具安裝的(如yum、rpm),所以下載的時候選擇的均是.tar.gz包
- 其實不用安裝,解壓後就可以使用了
安裝依賴
java
ELK環境主要是依賴java,所以安裝java即可。如下安裝jdk說明:可以根據自己系統的情況選擇合適的jdk
yum install -y java-1.8.0-openjdk-devel.x86_64
安裝logstash
下載安裝包:
logstash-[版本].tar.gz
解壓:
tar -zxf logstash-[版本].tar.gz
安裝elasticsearch
下載安裝包:
elasticsearch-[版本].tar.gz
解壓:
tar -zxf elasticsearch-[版本].tar.gz
安裝kibana
下載安裝包:
kibana-[版本].tar.gz
解壓:
tar -zxf kibana-[版本].tar.gz
關閉防火牆
由於需要進行網路通訊,所以需要放通埠,或者直接將防火牆服務停掉
service firewalld stop
測試
概述
在同一個CentOS7 上同時開啟elasticsearch、logstash、kibana。
ELK儘量按照順訊啟動elasticsearch
==> logstash
==> kibana
執行elasticsearch
cd elasticsearch
bin/elasticsearch
檢視到如下結果,即表示啟動成功
./elasticsearch
[2014-03-13 13:42:17,218][INFO ][node ] [New Goblin] version[2.3.1], pid[2085], build[5c03844/2014-02-25T15:52:53Z]
[2014-03-13 13:42:17,219][INFO ][node ] [New Goblin] initializing ...
[2014-03-13 13:42:17,223][INFO ][plugins ] [New Goblin] loaded [], sites []
[2014-03-13 13:42:19,831][INFO ][node ] [New Goblin] initialized
[2014-03-13 13:42:19,832][INFO ][node ] [New Goblin] starting ...
[2014-03-13 13:42:19,958][INFO ][transport ] [New Goblin] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/192.168.8.112:9300]}
[2014-03-13 13:42:23,030][INFO ][cluster.service] [New Goblin] new_master [New Goblin][rWMtGj3dQouz2r6ZFL9v4g][mwubuntu1][inet[/192.168.8.112:9300]], reason: zen-disco-join (elected_as_master)
[2014-03-13 13:42:23,100][INFO ][discovery ] [New Goblin] elasticsearch/rWMtGj3dQouz2r6ZFL9v4g
[2014-03-13 13:42:23,125][INFO ][http ] [New Goblin] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/192.168.8.112:9200]}
[2014-03-13 13:42:23,629][INFO ][gateway ] [New Goblin] recovered [1] indices into cluster_state
[2014-03-13 13:42:23,630][INFO ][node ] [New Goblin] started
另外,可以看到elasticsearch使用了兩個埠9200、9300
通過下面的校驗elasticsearch服務正常,如果響應正常,則說明服務正常
curl -X GET http://localhost:9200/
執行logstash
logstash執行時需要使用配置檔案,主要是用於定義內容的輸入、輸出、中間處理等。
建立配置檔案 logstash_start.conf,並且內容如下
input { file { path => "/var/log/messages" start_position => "beginning" } } output { elasticsearch { hosts => ["localhost:9200"] } }
上面的內容主要是定義了logstash實時讀取/var/log/messages中的日誌,並將日誌輸出到elasticsearch中。
啟動
cd logstash
bin/logstash -f [your_path]/logstash_start.conf
看到如下的內容,便表示成功了
Settings: Default pipeline workers: 4
Logstash startup completed
執行kibana
cd kibana
bin/kibana
如果看到類似如下輸出,就代表成功了:
log [10:47:51.005] [info][status][plugin:kibana] Status changed from uninitialized to green - Ready
log [10:47:51.077] [info][status][plugin:elasticsearch] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [10:47:51.109] [info][status][plugin:kbn_vislib_vis_types] Status changed from uninitialized to green - Ready
log [10:47:51.128] [info][status][plugin:markdown_vis] Status changed from uninitialized to green - Ready
log [10:47:51.140] [info][status][plugin:metric_vis] Status changed from uninitialized to green - Ready
log [10:47:51.148] [info][status][plugin:spyModes] Status changed from uninitialized to green - Ready
log [10:47:51.155] [info][status][plugin:statusPage] Status changed from uninitialized to green - Ready
log [10:47:51.180] [info][status][plugin:table_vis] Status changed from uninitialized to green - Ready
log [10:47:51.194] [info][listening] Server running at http://0.0.0.0:5601
log [10:47:51.200] [info][status][plugin:elasticsearch] Status changed from yellow to green - Kibana index ready
kibana第一次使用時,會要求建立index,只要按照預設值即可。
測試日誌收集
此時,ELK環境已經搭建好了,現在要測試下ELK是否能實時監控/var/log/messages中的日誌,並在kibana這顯示。
通過如下的命令構造日誌:
logger -p info "hello, test ELK"
這是可以在/var/log/messages中看到這個日誌
在kibana的DISCOVER
選項卡中也能搜尋到該日誌。
備註:關於kibana的搜尋時間段問題:
通常在kibana中無法搜尋到日誌,這時候要注意搜尋的時間段,在kibana->Discover頁面的最上端