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 的版本中,這個選項已經廢棄了,請刪除掉這個選項。