安装logstash
1.配置logstash环境
- 创建用户
在logstash安装的机器上创建一个单独的用户,logstash如果部署在elasticsearch所在的机器上时,可以与elasticsearch共用一个用户。
在root用户下执行:
创建用户:useradd 用户名
设置用户密码:passwd 用户名 - 配置环境变量
- 切换到上一步中创建的用户下:su - 用户名
2.修改".bash_profile"文件:
JAVA_HOME=/usr/java/default
PATH=$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
export JAVA_HOME PATH
3.在新创建的用户下,解压软件到指定的文件夹下。
2.配置logstash
1、修改logstash目录下的config文件夹下的配置文件jvm.options,根据实际情况调整占用内存大小,数据量较小时采用默认即可。
-Xms2g
-Xmx2g
2、在logstash安装目录的config文件夹下建立文件app_to_es.conf,复制如下代码,根据实际情况修改文件中的path和hosts变量值:
input {
file {
path => ["修改为nginx服务器的实际日志生成文件的绝对路径"]
start_position => ["beginning"]
}
}
filter {
grok{
match => {"message" => "%{IPV4:client}\^A\d{0,11}.\d{3}\^A%{IPV4:userIp}(:%{NUMBER:userPort})?\^[A]/i(?:%{NOTSPACE:request})*\^[A](?:%{NOTSPACE:request_body})"}
remove_field => ["BASE10NUM"]
}
mutate {
gsub =>[
"request","\%20"," "
]
gsub =>[
"request", "\+", " "
]
}
urldecode{
all_fields => true
}
kv {
source => "request"
field_split => "&?"
value_split => "="
}
mutate {
gsub =>[
"events", "},", "}##"
]
}
split {
field => "events"
terminator => "##"
}
json {
source => "events"
remove_field => ["message","request","events"]
}
}
output {
elasticsearch {
action => "index" #The operation on ES
hosts => "ElasticSearch的地址:9200" #ElasticSearch host, can be array.
index => "app_log_%{+YYYY.MM.dd}" #The index to write data
}
}
3、启动logstash
- 启动命令:nohup bin/logstash -f config/app_to_es.conf &