nginx篇
这一篇记录了logstash读取nginx日志的搭建与配置。
往往我们的nginx和logstash都不在同一台服务器上,logstash的file通道是读取不到远程的日志文件的,但是我们又不能每台nginx上都安装一个logstash,因为logstash太笨重了。根据官网提供的方案,采用filebate,在每一台nginx服务器上安装一个filebate服务,通过filebate发送日志到logstash,logstash只有几M而已,相比logstash,轻多了。
1.下载FilebateRPM包
下载地址:https://www.elastic.co/cn/downloads/past-releases
选择对应产品与版本,选中Filebate,版本因为ES是5.6.14,所以Filebate也选择5.6.14
选择好对应的版本之后,点击Downloads,进入之后找到RPM, 然后右键复制链接地址接着进入服务器,找一个你想存放RPM包的目录,然后输入命令:wget RPM包的链接地址,然后下载。
2.安装Filebate
下载完成,找到RPM包,输入命令:rpm -ivh logstash-5.6.14-x86_64.rpm ,接着等待安装完成。
3.配置Filebate
配置如图
filebeat.prospectors
- input_type: log
paths:
- /var/log/nginx/access.log
json.keys_under_root: true
json.overwrite_keys: true
output.logstash:
hosts: ["1.1.1.11:9610"]
参数解释:
input_type 表示类型,log表示读取文件,还有Redis,UDP等类型
paths 表示读取文件的目录,可以指定到具体路径,也可以指定相对路径,或者多个不同目录下的文件,例如:
paths:
- /var/log/messages
- /var/log/*.log
json 使Filebeat可以解码构造为JSON消息的日志
json.keys_under_root 默认情况下,解码的JSON位于输出文档中的“json”键下。如果启用此设置,则会将键复制到输出文档的顶层。默认值为false。
json.overwrite_keys 如果keys_under_root启用此设置,则解码的JSON对象中的值将覆盖Filebeat通常添加的字段(类型,源,偏移等),以防发生冲突。
output.logstash 表示输出到logstash,也可以输出到elasticsearch
hosts 表示logstash地址
备注:参数的空格和缩进不能更改,一定要按照配置文件的格式来,除了两个json参数是新增加的,其他参数配置文件都有,json参数和paths平级。更多参数的配置与解释请参考 [Filebate官方文档](https://www.elastic.co/guide/en/beats/filebeat/current/index.html)
filebate.yml配置好了,保存退出
4.配置nginx日志log_formate格式
对nginx日志输出到es进行保存,没有要求每个参数占用一个fieIds的,第四步可以忽略,并且第三步,filebate的配置文件中的两个json参数也不用写。
nginx日志json化,如图:
nginx日志非json化,如图:
非json化,日志内容会全部放到一个fields上。好了,进入正题,nginx日志json化,只需要修改log_format,access_log两个参数就行了,如图:
nginx.conf下载地址,提取码:9la6
log_format设置好了,修改access_log参数,请参考上图中,进行修改。
修改好了,我们重启nginx。
5.编写nginx的logstash脚本
如图:
input {
beats {
port => 9610
}
}
output {
elasticsearch {
hosts => ["118.25.151.157:9200"]
index => "%{[nginx-index]}:%{+YYY-MM-dd}"
user => "elastic"
password => "changeme"
}
}
参数解释:
input 代表输入
bates 是filebate通道
prot 是filebate的通信端口,在filebate的配置文件中定义
output 代表输出
elasticsearch 代表输出到es
index 代表输出到es的索引,索引前半部分取nginx.conf中配置的索引,后半部分采用日期
脚本编写好了,用命令进行检查,看看脚本是否正确。按照Logstash篇的步骤进行脚本检查。确认脚本没有问题之后,重启logstash。
6.启动filebate
输入命令:systemct start filebate.service 。启动filebate,确定启动成功好,访问nginx,让nginx产生新的日志,然后看看日志是否通过filebate传输到logstash去了,然后进入kibana,根据索引查看nginx日志。如何使用kibana根据索引查看日志,请看kibana篇
7. filebate相关信息
filebate (5.6.14)
端口号
9610
kibana日志
/var/log/filebate/
安装
/usr/share/filebate/
启动
systemctl start filebate.service
重启
systemctl restart filebate.service
配置文件
/etc/filebate/
### 上述的相关信息只代表rpm包的安装方式
丶clearwater