目 录CONTENT

文章目录

ELK相关笔记04-filebeat的使用

cplinux98
2022-11-10 / 0 评论 / 0 点赞 / 464 阅读 / 1,136 字 / 正在检测是否收录...

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

2.4:查看效果

0

评论区