准备:
kibana-6.5.1-linux-x86_64.tar.gz | https://www.elastic.co/cn/downloads/past-releases |
logstash-6.5.1.tar.gz | https://www.elastic.co/cn/downloads/past-releases |
一:kibana安装
安装:
下载kibana-6.5.1-linux-x86_64.tar.gz上传到服务器主节点直接解压。(tar -zxvf kibana-6.5.1-linux-x86_64.tar.gz)
进入kibana-6.5.1-linux-x86_64找到config文件,编辑kibana.yml
server.port: 5601
server.host: "192.168.227.3"
elasticsearch.url: "http://192.168.227.3:9200"
启动:进入kibana-6.5.1-linux-x86_64
bin/kibana
访问:
二:Logstash环境搭建
搭建:
下载logstash-6.5.1.tar.gz上传到主节点服务器直接解压。(tar -zxvf logstash-6.5.1.tar.gz)
进入logstash-6.5.1启动
启动方式一:
bin\logstash -e 'input { stdin {} } output { stdout {} }'
启动方式二:
在 config 目录下新建 logstash.conf 文件,编辑以下内容:
input {
stdin {}
}
output {
stdout {}
}
控制台输入以下命令:
bin\logstash -f config\logstash.conf
三:访问日志生产平台的搭建
直接利用 Nginx 产生的访问日志作为流量监控的元数据。因此,自己要先搭建 Nginx运行环境,并部署一个可以访问的 web 项目。然后,在 logstash 的安装目录新建一个 patterns 目录,在此目录下创建nginx 空白文件,内容如下:
NGINXACCESS %{IPORHOST:clientip} %{HTTPDUSER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\]
"(?:%{WORD:verb} %{URIPATH:uri}%{URIPARAM:param}(?:
HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-)
NGINXACCESSLOG %{NGINXACCESS} %{QS:referrer} %{QS:agent} %{QS:x_forwarded_for}
最后,对 logstash.conf 中的内容进行修改:
input {
file {
path => ["D:/nginx-1.14.0/logs/access.log"]
type => "nginx_access"
start_position => "beginning"
}
}
filter {
if [type] == "nginx_access" {
grok {
patterns_dir => "D:/logstash-5.5.2/config/patterns/"
match => {
"message" => "%{NGINXACCESS}"
}
}
date {
match => ["timestamp","dd/MMM/YYYY:HH:mm:ss Z"]
}
if [param] {
ruby {
init => "@kname = ['quote','url_args']"
code => "
new_event =
LogStash::Event.new(Hash[@kname.zip(event.get('param').split('?'))])
new_event.remove('@timestamp')
event.append(new_event)
"
}
if [url_args] {
ruby {
init => "@kanme = ['key','value']"
code =>
"event.set('nested_args',event.get('url_args').split('&').clllect {|i|
Hash[@kanme.zip(i.split('='))]})"
remove_field => ["url_args","param","quote"]
}
}
mutate {
convert => ["response","integer"]
remove_field => "timestamp"
}
}
}
}
output {
stdout {
codec => rubydebug
}
}
启动 logstash 便可以将 Nginx 日志同步到 logstash 中来。gork 内置表达式查询地址:
https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns
四:Logstash 与 ElasticSearch 集成
在 logstash.config 中output下追加以下内容,即可与 ElasticSearch 实现无缝集成:
elasticsearch {
hosts => ["http://localhost:9200"]
index => "logstash-%{type}-%{+YYYY.MM.dd}"
document_type => "%{type}"
sniffing => true
#user => "tom"
#password => "123456"
}