ELKF简易配置备忘
准备
环境基于Ubuntu Server 14.04、JRE 1.8.7,使用的软件版本如下
组件安装
除了 Kibana,ELF 均为 deb 包,直接使用 dpkg 安装
Elasticsearch
dpkg -i elasticsearch-2.1.1.deb
service elasticsearch start
curl -I http://localhost:9200
Logstash
dpkg -i logstash_2.1.1-1_all.deb
Filebeat
dpkg -i filebeat_1.0.1_amd64.de
Kibana
tar zxf kibana-4.3.1-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
mv kibana-4.3.1-linux-x64 kibana
配置
以收集 NGINX 的 access_log 为例
NGINX 将 NGINX 的日志格式改为
log_format logstash '$http_host '
'$remote_addr [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'$request_time '
'$upstream_response_time';
access_log /var/log/nginx/access.log logstash;
重新载入 NGINX 配置
service nginx reload
Logstash
创建 patterns 目录并新建 NGINX pattern
mkdir /opt/logstash/patterns
cd /opt/logstash/patterns
vim nginx
使用如下规则匹配 access_log
NGUSERNAME [a-zA-Z\.\@\-\+_%]+
NGUSER %{NGUSERNAME}
NGINXACCESS %{IPORHOST:http_host} %{IPORHOST:clientip} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent} %{NUMBER:request_time:float} %{NUMBER:upstream_time:float}
NGINXACCESS %{IPORHOST:http_host} %{IPORHOST:clientip} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent} %{NUMBER:request_time:float}
Logstash 的 filter 使用的是 grok 语法,相关介绍可以参考此处
新建 Logstash 的 Filebeat Source 配置
vim /etc/logstash/conf.d/filebeat.conf
内容
input {
beats {
port => 5044
}
}
filter{
if[type] == "nginx-access" {
grok {
match => {"message" => "%{NGINXACCESS}"}
add_field => [ "received_at", "%{@timestamp}" ]
}
geoip {
source => "clientip"
}
date {
match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]
}
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "logstash-beat-%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
保存后
service logstash restart
Filebeat
vim /etc/filebeat/filebeat.yml
修改为
filebeat:
prospectors:
-
paths:
- /usr/local/nginx/logs/access.log # 你 NGINX 日志的位置
input_type: log
document_type: nginx-access
registry_file: /var/lib/filebeat/registry
output:
logstash:
hosts: ["localhost:5044"]
index: filebeat
shipper:
logging:
files:
保存后重启 Filebeat
service filebeat restart
Kibana
无需配置,直接使用 Kibana 内置的 Web server 启动(如果你想修改配置可以修改/usr/local/kibana/config/kibana.yml
/usr/local/kibana/bin/kibana
收工
访问 http://localhost:5601
到此为止只是简单的跑起来,ELK的配置还有很多地方可以修改,有兴趣可以去 elastic.co 上看看