首先得安装好Elasticsearch,Filebeat,Kibana(非必须),如果没有安装可以查看我的其他博客进行安装
java -version
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)
下载地址:https://artifacts.elastic.co/downloads/logstash/logstash-6.5.4.tar.gz
# 解压
tar -xvf logstash-6.5.4.tar.gz
# 安装
apt install nginx -y
#nginx服务命令
service nginx {start|stop|restart|reload|forcereload|status|configtest|rotate|upgrade}
#通过浏览器访问页面
访问地址:http://192.168.241.130/ #自己的虚拟机地址,默认80端口
# 查看日志
tail -f /var/log/nginx/access.log
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
在Filebeat目录下创建读取nginx日志的配置文件 nginx.yml
vim nginx.yml
# 添加以下内容
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log # nginx日志文件
tags: ["log"]
fields:
from: nginx
fields_under_root: false
output.logstash: # 输出到logstash,5044为logstash的默认端口
hosts: ["192.168.241.130:5044"]
为了更友好的拿到nginx中的日志信息,这里配置Filter(不配置也行)
# 修改nginx配置文件,配置日志格式
vim /etc/nginx/nginx.conf
# 自定义nginx的日志格式main
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log main; # 将access_log配置为main格式
# 重启nginx
nginx -s reload
在Logstash目录下创建nginx-patterns文件,用于Logstash解析nginx的日志信息
vim nginx-patterns
# 添加内容
NGINX_ACCESS %{IPORHOST:remote_addr} - %{USERNAME:remote_user} \[%{HTTPDATE:time_local}\] \"%{DATA:request}\" %{INT:status} %{NUMBER:bytes_sent} \"%{DATA:http_referer}\" \"%{DATA:http_user_agent}\"
在Logstash目录下创建配置文件nginx-pipeline.conf
vim nginx-pipeline.conf
# 添加以下内容
input {
beats {
port => "5044"
}
}
# 若没有配置Filter,则可以不写这个
filter {
grok {
patterns_dir => "/es-beats/logstash-6.5.4/nginx-patterns" # 配置Filter中创建的解析nginx日志的文件
match => { "message" => "%{NGINX_ACCESS}"}
remove_tag => [ "_grokparsefailure" ] # 删除字段
add_tag => [ "nginx_access" ] # 添加字段
}
}
# 处理后输出到elasticsearch
output {
elasticsearch {
hosts => [ "192.168.241.130:9200","192.168.241.130:9201" ]
}
}
# 先启动logstash,nginx-pipeline.conf为刚在logstash目录下创建的配置文件
bin/logstash -f nginx-pipeline.conf --config.reload.automatic
# 再启动filebeat, nginx.yml为刚在filebeat目录下创建的配置文件
./filebeat -e -c nginx.yml
访问nginx地址(自己主机地址),多刷新几次nginx的页面,产生几条数据