一.elk套件介紹
ELK 由 ElasticSearch 、 Logstash 和 Kiabana 三個開源工具組成。官方網站: https://www.elastic.co/products
Elasticsearch 是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制, restful 風格接口,多數據源,自動搜索負載等。
Logstash 是一個完全開源的工具,他可以對你的日志進行收集、分析,並將其存儲供以后使用(如,搜索)。
kibana 也是一個開源和免費的工具,他 Kibana 可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您匯總、分析和搜索重要數據日志。
工作原理如下如所示:
logstash從日志里取出數據推送到elasticsearch,elasticsearch進行處理分析,之后交給kibana來進行前端展示
注:安裝全部使用rpm安裝,方便管理
二、部署流程
1.安裝依賴JDK
版本:jre-8u91-linux-x64.rpm
# rpm -ivh jre-8u91-linux-x64.rpm
Preparing... ########################################### [100%]
1:jre1.8.0_91 ########################################### [100%]
Unpacking JAR files...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
jfxrt.jar...
2.安裝logstash
版本:logstash-2.3.2-1.noarch.rpm
# rpm -ivh logstash-2.3.2-1.noarch.rpm
Preparing... ########################################### [100%]
默認都安裝到了
/opt/logstash
/opt/logstash/bin/logstash
測試:
[root@node2 ~]# /opt/logstash/bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
####輸入liuyao 並且回車
liuyao
Settings: Default filter workers: 1
Logstash startup completed
{
"message" => "liuyao",
"@version" => "1",
"@timestamp" => "2016-07-17T05:01:42.551Z",
"host" => "localhost"
}
{
"message" => "",
"@version" => "1",
"@timestamp" => "2016-07-17T05:01:42.552Z",
"host" => "localhost"
}
3.安裝elasticsearch
版本:elasticsearch-2.3.3.rpm
# rpm -ivh elasticsearch-2.3.3.rpm
Preparing... ########################################### [100%]
4.安裝kibana
版本:kibana-4.5.1-1.x86_64.rpm
# rpm -ivh kibana-4.5.1-1.x86_64.rpm
Preparing... ########################################### [100%]
1:kibana ########################################### [100%]
案例:
分析nginx日志:
1.先啟動elasticsearch
修改elasticsearch配置文件
vi /etc/elasticsearch/elasticsearch.yml
監聽ip
network.host: 0.0.0.0
運行端口
http.port: 9200
保存退出
啟動
/etc/init.d/elasticsearch start
查看運行情況
# netstat -tnlp | grep java
tcp 0 0 0.0.0.0:9300 0.0.0.0:* LISTEN 1284/java
tcp 0 0 0.0.0.0:9200 0.0.0.0:* LISTEN 1284/java
2.配置logstash配置文件
#cd /etc/logstash/conf.d
# vim nginx_logstash.conf
配置文件如下:
#標准輸入
input {
file {
#日志路徑
path => ["/usr/local/nginx/access.log"]
#日志類型
type => "nginx_access"
}
}
#正則匹配
filter {
grok {
match => { "message" => "(?<clientip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s-\s-\s(?<datetime>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})\s\"(?<mothd>(.*))\s(?<url>(.*))\sHTTP.*\"\s(?<httpcode>[4-6][0-9]{1,3})\s(?<send_bytes>\d*)\s\"(?<http_refer>.*)\"\s\"(?<http_agent>[^\"]*)\"\.*"
}
}
}
#標准輸出
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
codec => "json"
index => "logstash-nginx-%{+YYYY.MM.dd}"
}
}
重啟logstash
/etc/init.d/logstash restart
3.運行kibana
# /etc/init.d/kibana restart
打開瀏覽器:
IP:5601訪問
創建