ELK 日誌分析體系

丶小炒肉發表於2016-06-01

ELK   日誌分析體系

 

ELK 是指 Elasticsearch、Logstash、Kibana三個開源軟體的組合。

 

logstash                       負責日誌的收集,處理和儲存

elasticsearch                  負責日誌檢索和分析

kibana                         負責日誌的視覺化

 

 

一、環境

 

1. CentOS Linux release 7.2.1511 (Core)

Server - 172.16.1.100

 

 

elasticsearch-2.3.3

logstash-2.3.2-1

kibana-4.5.1

openjdk version "1.8.0_77"

redis-3.2.0

 

 

 

二、下載 elasticsearch-2.3.3.rpm

 

下載 rpm 格式就可以了

 

yum localinstall elasticsearch-2.3.3.rpm

 

 

2、修改配置

 

cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml-bak

 

echo "cluster.name: logssearch" >> /etc/elasticsearch/elasticsearch.yml     #必須修改名字,否則會自動查詢同網段其他相同名字的ela

 

echo "network.bind_host: 172.16.1.100" >> /etc/elasticsearch/elasticsearch.yml

 

vi /etc/elasticsearch/elasticsearch.yml

 

最後面增加如下配置:

node.name: node-1

http.json.enable: true

http.cors.allow-origin: “/.*/”

index.cache.field.type: soft

path.data: /opt/local/elasticsearch/data

path.logs: /opt/local/elasticsearch/logs

 

 

3、建立目錄以及授權

 

mkdir -p /opt/local/elasticsearch/{data,logs}

 

chown -R elasticsearch:elasticsearch /opt/local/elasticsearch

 

 

4、啟動elasticsearch服務

 

service elasticsearch start

 

 

5、新增到開機啟動

 

chkconfig elasticsearch on

 

 

6、安裝 head 外掛

 

執行如下命令:

/usr/share/elasticsearch/bin/plugin -install mobz/elasticsearch-head

 

 

7、訪問 http://172.16.1.100:9200/_plugin/head        檢視是否成功

 

建立Elasticsearch索引

 

點選索引,進行建立

 

索引名稱: cluster

分片數:5

副本數:1

 

 

 

 

 

三、logstash  下載rpm 格式的就可以

 

yum localinstall logstash-2.3.2-1.noarch.rpm

 

3、配置logstash_indexer  (預設沒有這個配置檔案)

 

服務端增加此配置檔案:

 

vi /etc/logstash/conf.d/logstash_indexer.conf

 

 

--------------------------------------------------------------------------------

input { stdin { } }

output {

   elasticsearch {hosts => "172.16.1.100:9200" }

   stdout { codec=> rubydebug }

}

 

--------------------------------------------------------------------------------

 

Logstash使用input和output定義收集日誌時的輸入和輸出的相關配置

這裡input定義了一個叫"stdin"的input,

這裡output定義一個叫"stdout"的output。無論我們輸入什麼字元,Logstash都會按照某種格式來返回我們輸入的字元,

其中output被定義為"stdout"並使用了codec引數來指定logstash輸出格式。

 

 

 

logstash 測試

 

/opt/logstash/bin/logstash  -f /etc/logstash/conf.d/logstash_indexer.conf

 

 

 

 

 

 

客戶端增加此配置檔案

 

-----------------------------------------------------------------------------------

input {

        file {                

       type => "nginx_access"

                path => ["/usr/share/nginx/logs/test.access.log"]

        }

}

output {

        redis {

                host => "172.16.1.100"

                data_type => "list"

                key => "logstash:redis"

        }

}

-----------------------------------------------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5、啟動 logstash 服務

 

service logstash start

 

chkconfig logstash on

 

 

 

 

 

 

 

五、安裝kibana(前端web)

 

 

1. 下載 kibana

 

wget https://download.elastic.co/kibana/kibana/kibana-4.5.1-linux-x64.tar.gz

 

tar zxvf kibana-4.5.1-linux-x64.tar.gz 

 

mv kibana-4.5.1-linux-x64 /opt/local/kibana

 

mkdir /opt/local/kibana/logs

 

cd /opt/local/kibana

 

 

2. 修改配置

 

cp /opt/local/kibana/config/kibana.yml /opt/local/kibana/config/kibana.yml.bak

 

修改 elasticsearch_url: 為 elasticsearch_url: "http://172.16.32.31:9200"

 

修改  server.host:   為   server.host: "172.16.1.100"

 

修改  kibana.index: 為   kibana.index: ".kibana"

 

3. 啟動 kibana 服務

 

cd /opt/local/kibana/logs && nohup /opt/local/kibana/bin/kibana &

 

 

 

 

http://172.16.1.100:5601/

 

 

 

 

kibana  Index Patterns  必須要有資料才能建立索引。

 

 

FQA:

 

kibana 出現如下錯誤:

 

Courier Fetch Error: unhandled courier request error: Authorization Exception

 

 

這個錯誤是因為 elasticsearch  配置檔案 elasticsearch.yml 裡面使用了 http.cors.enabled

 

Kibana 4 的版本中,這個選項已經廢棄了,請刪除掉這個選項。

相關文章