00:文章简介
通过2个案例,介绍filebeat的使用。
01:从nginx日志中提取404相关信息
1.1:属性解析
filebeat默认情况下,可以从文件中获取相关信息,但是该功能并没有开启,
我们还可以借助于include_lines和exclude_files属性获取文件中的特定内容信息。
filebeat的默认输出方式是elasticsearch和logstash,只需要配置好对应的地址即可。
注意:
filebeat的配置文件可以自己随意定制,不一定非要使用默认的filebeat.yaml文件,可以自己创建
一个yaml格式的filebeat配置文件即可。
1.2:编辑配置文件
cd /etc/filebeat
mv filebeat.yml backup/filebeat.bak.20210825
vim filebeat.yml
# 定制收集内容的配置
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
include_lines: ['404']
tags: ["404"]
# 设定定制索引名称的配置
setup.ilm.enabled: false
setup.template:
name: "mypro"
pattern: "mypro-*"
overwrite: true
# 定制输出到es的配置
output.elasticsearch:
hosts: ["10.0.0.110:9200"]
index: "mypro-404-%{+yyyy.MM.dd}"
1.3:重启服务查看效果
systemctl restart filebeat
# 其他节点
curl 10.0.0.114
curl 10.0.0.114
curl 10.0.0.114
curl 10.0.0.114/adfadf
curl 10.0.0.114/adfadf
curl 10.0.0.114/adfadf
02:实践2:收集基于json格式的nginx日志
2.1:属性解析
我们知道es中的索引的数据获取都是基于json格式数据的键名获取具体信息,
默认情况下,message键里面的内容才是我们需要的内容,
虽然可以获取到我们想要的内容,但是无关信息太多了,比如说,我们仅仅需要获取客户端IP地址的话。
所以为了便于后续我们的定制日志分析,结合es索引数据格式的特点,
我们需要将项目nginx的access日志定制为json格式,然后将error和access拆分到不同的es索引中。
# 1 识别json格式日志:
filebeat默认情况下,无论什么格式日志,都会识别为普通的字符串日志,
我们需要借助于如下两条属性定制日志解析格式:
json.keys_under_root: true
json.overwrite_keys: true
# 2 同时收集error和access两种不同格式日志:
设置两个input,为了方便查看,在传输数据的时候,通过fields方法为不同的日志定制扩展字段
fields:
log_type: "access|error"
fields_under_root: true
# 3 nginx属性配置
获取nginx的客户端ip地址
remote_host -- 前一台主机的ip地址,
策略:
x_real_ip -- 直接在网络入口的主机地址上通过 remote_host获取真实的ip地址
x_forword_for -- 通过层层的反向代理,堆叠出来的 前一个ip地址的集合,最前的ip地址是 真实的ip地址
2.2:配置nginx的json格式日志
cd /etc/nginx
# nginx.conf里配置log的格式
vim nginx.conf
# Logging Settings 在这里增加一个名为json_format的log_format
##
log_format json_format '{"remote_addr": "$remote_addr",'
'"remote_user": "$remote_user",'
'"time_local": "$time_local",'
'"request": "$request", '
'"request_method": "$request_method", '
'"request_time": "$request_time", '
'"status": "$status", '
'"body_bytes_sent": "$body_bytes_sent", '
'"http_referrer": "$http_referer", '
'"http_user_agent": "$http_user_agent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_x_real_ip": "$http_x_real_ip"}';
# default网站配置文件里应用log的格式
vim sites-enabled/default
server{
...
root /var/www/html;
# log
access_log /var/log/nginx/access.log json_format; # 增加此行
...
}
# 检查效果
nginx -t
systemctl restart nginx
# 其他节点访问
curl 10.0.0.114
curl 10.0.0.114/sdfa
使用在线json解析查看是否符合json格式
2.3:定制filebeat.yml配置文件
root@Filebeat:/etc/filebeat# cat filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
fields:
log_type: "access"
fields_under_root: true
json.keys_under_root: true
json.overwrite_keys: true
- type: log
enabled: true
paths:
- /var/log/nginx/error.log
fields:
log_type: "error"
fields_under_root: true
output.elasticsearch:
hosts: ["10.0.0.110:9200"]
# 重启filebeat
systemctl restart filebeat
# 其他节点多次访问产生日志
curl 10.0.0.114
curl 10.0.0.114/sdfa
评论区