使用filebeat简单收集多个nginx应用服务器日志(一)

举报
jiangxl 发表于 2022/04/14 00:17:59 2022/04/14
【摘要】 使用filebeat简单收集日志 1.filebeat原理与介绍 filebeat收集日志的原理类似于tail -f命令,等待应用日志产生后,每隔30s将日志进行收集,收集完成后存放在es的索引库中,...

使用filebeat简单收集日志

1.filebeat原理与介绍

filebeat收集日志的原理类似于tail -f命令,等待应用日志产生后,每隔30s将日志进行收集,收集完成后存放在es的索引库中,最后展示在kibana上

当filebeat关闭后,nginx继续产生日志,filebeat再次开启时不会将原来没有收集到的日志重新收集,而是收集目前最新的日志,当日志索引库被删除后,filebeat重启之后,es上没有生产新的日志索引库的原因只有是nginx没有产生日志,filebeat没有收集到,所有不会产生新的日志索引库

使用filebeat收集日志并展现的实现思路:

​ 1.在应用服务器安装filebeat,在filebeat上配置应用日志的路径及es的地址

​ 2.当es上产生了日志索引库并且有数据之后,在kibana上创建相同名称的所有库

​ 3.在kibana的Discover一栏查看日志收集的数据

1.1.filebeat原理

1.2.环境准备

IP 角色 服务
192.168.81.210 es集群+kibana elasticsearch+kibana
192.168.81.220 es集群 elasticsearch
192.168.81.230 日志采集服务器(nginx、tomcat、redis)等日志 nginx、tomcat、redis等

2.安装filebeat

1.下载软件包
[root@logsj ~]# wget https://mirrors.huaweicloud.com/filebeat/6.6.0/filebeat-6.6.0-x86_64.rpm

2.安装filebeat
[root@logsj ~]# rpm -ivh filebeat-6.6.0-x86_64.rpm 

3.查看filebeat配置文件
[root@logsj ~]# rpm -qc filebeat
/etc/filebeat/filebeat.yml
/etc/filebeat/modules.d/apache2.yml.disabled
/etc/filebeat/modules.d/auditd.yml.disabled
/etc/filebeat/modules.d/elasticsearch.yml.disabled
/etc/filebeat/modules.d/haproxy.yml.disabled
/etc/filebeat/modules.d/icinga.yml.disabled
/etc/filebeat/modules.d/iis.yml.disabled
/etc/filebeat/modules.d/kafka.yml.disabled
/etc/filebeat/modules.d/kibana.yml.disabled
/etc/filebeat/modules.d/logstash.yml.disabled
/etc/filebeat/modules.d/mongodb.yml.disabled
/etc/filebeat/modules.d/mysql.yml.disabled
/etc/filebeat/modules.d/nginx.yml.disabled
/etc/filebeat/modules.d/osquery.yml.disabled
/etc/filebeat/modules.d/postgresql.yml.disabled
/etc/filebeat/modules.d/redis.yml.disabled
/etc/filebeat/modules.d/suricata.yml.disabled
/etc/filebeat/modules.d/system.yml.disabled
/etc/filebeat/modules.d/traefik.yml.disabled

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

3.使用filebeat收集单台nginx日志

在做之前可以把es上的数据清空便于查看

systemctl stop elasticsearch
systemctl stop kibana
rm -rf /var/lib/kibana/*
rm -rf /data/elasticsearch/*
systemctl start elasticsearch
systemctl start kibana

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.1.安装nginx程序并启动

1.安装nginx
[root@logsj ~]# yum -y install nginx

2.启动nginx
[root@logsj ~]# systemctl start nginx
[root@logsj ~]# systemctl enable nginx

3.不断刷新页面产生日志,可以访问几个不存在的页面产生错误日志

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

3.2.配置filebeat收集nginx日志

主要修改filebeat中的inputs和outputs,告诉filebeat收集谁的日志并存在哪个es中

1.配置filebeat
[root@logsj ~]# vim /etc/filebeat/filebeat.yml 
filebeat.inputs:
- type: log							#类型为log,一个type对应一个索引库,如果想搜集多个服务的日志则写多个type即可
  enabled: true								#是否对该日志进行采集,要改成true,否则不会再es上创建索引
  paths:									#定义日志所在路径,可以写某一个路径下的*.log也可以分别写
    - /var/log/nginx/access.log
    - /var/log/nginx/error.log
filebeat.config.modules:							#日志收集模板
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:							#针对该日志收集创建的索引分片数是多少,默认是3个分片
  index.number_of_shards: 3
setup.kibana:
output.elasticsearch:								#存放在哪个es里
  hosts: ["192.168.81.210:9200"]						
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~

2.重启filebeat
[root@logsj ~]# systemctl restart filebeat
[root@logsj ~]# systemctl enable filebeat

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

重启完成后,当应用产生日志后,会在es上创建一个索引库存放日志,默认3个分片1个副本

在这里插入图片描述

3.3.产生nginx日志观察filebeat收集

3.3.1.观察nginx访问日志

使用curl命令产生一百条nginx访问成功的日志,分别产生100条正确的日志和100条错误的日志

[root@logsj ~]# for i in {1..100}
> do
> curl 127.0.0.1
> done


[root@logsj ~]# for i in {1..100}
> do
> curl 127.0.0.1/aaa
> done

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

观察nginx日志,已经产生

在这里插入图片描述

3.3.2.持续观察filebeat日志

[root@logsj ~]# tail -f /var/log/filebeat/filebeat 

  
 
  • 1

可以看到filebeat每隔30秒就会采集一次日志

在这里插入图片描述

3.4.查看es上存储的日志数据

数据浏览—选择索引—点击任意一条数据,里面的message就是日志的详细内容

在这里插入图片描述

3.5.在kibana上创建一个索引展示filebeat收集的数据

日志虽然收集过来了,但是还没有展现,我们需要在kibana上创建一个和es上同名的日志存储索引,用来展示采集的日志

3.5.1.创建索引

1)点击Managerment—Index Patterns

在这里插入图片描述

3.5.2.填写索引信息

Your index pattern can match any of your 2 indices, below,这个是提示我们有2个索引,可以选择其中一个

在这里插入图片描述

将filebe-6.6.0-2021.01.14复制到index pattern里,出现seccess表示成功

在这里插入图片描述

3.5.3.填写Time Filter field name

下拉选择@timestamp

在这里插入图片描述

3.5.4.正常创建

在这里插入图片描述

3.5.5.创建成功

在这里插入图片描述

3.6.在kibana上查看收集过来的日志

点击Discovery进去执行选择我们创建的索引库

在这里插入图片描述

点击下三角即可看日志的详细内容,message就是日志的内容,刚好使我们模拟访问不存在页面产生404的报错日志

在这里插入图片描述

4.使用filebeat收集多台nginx日志

在生产环境中肯定不止一台nginx服务,想查看集群中所有nginx的日志,传统的日志统计肯定需要一台一台去合并,有了filebeat和kibana之后,filebeat收集完,都存放在一个索引库中,就省去了合并的步骤,想要搜哪台主机的日志直接在页面上选择即可

4.1.多台nginx服务器部署filebeat并配置日志采集

所有的nginx服务器都按如下配置,我们在另外两台机器上安装nginx

1.安装nginx
yum -y install nginx
systemctl start nginx
systemctl enable nginx

2.安装filebeat
wget https://mirrors.huaweicloud.com/filebeat/6.6.0/filebeat-6.6.0-x86_64.rpm
rpm -ivh filebeat-6.6.0-x86_64.rpm 

3.修改filebeat配置文件
vim /etc/filebeat/filebeat.yml 
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
    - /var/log/nginx/error.log
    
output.elasticsearch:
  hosts: ["192.168.81.210:9200"]

4.启动filebeat
systemctl start filebeat
systemctl enable filebeat

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

在这里插入图片描述

4.2.快速访问一百次所有nginx应用

[root@elasticsearch ~]# for i in {1..100}
do
	for j in {1..3}
	do
		curl -XGET 192.168.81.2${j}0 -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
	done
done

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4.3.查看filebeat收集

在这里插入图片描述

4.4.在kibana上查看日志收集

刚好是我们刷的300条日志在这里插入图片描述

4.4.1.查看192.168.81.210nginx的日志

由于filebeat将日志收集过来之后存在了一个索引库里,因此我们想要查看某台机器的nginx日志时,只能通过过滤的方式进行匹配查询

kibana的索引库里没有IP地址的字段,可以根据主机名去查询,192.168.81.210的主机名是elasticsearch

点击左上角的Add a filter-的+号之后会让我填写匹配规则,我们可以根据主机名去划分某台主机的日志,host.name就是主机名的字段,is表示匹配,第三列选择对应的主机,可以看到已经帮我列了出来,我们选择elasticsearch,点击保存就可以生产一个按钮,方便我们每次查询,如果下次查询不需要用到这个条件,也可以点击按钮中的对勾进行取消

在这里插入图片描述

保存完即可搜索出保护主机名elasticsearch的日志

在这里插入图片描述

4.4.2.查询某一个IP访问应用产生的日志

在搜索框中填写我们要查询的内容即可搜出来保护的日志

在这里插入图片描述

4.4.3.查询IP地址为192.168.81.1且访问/jiangxl页面内容的日志

kibana可以多个条件一起查询,搜索源ip是192.168.81.1,在增加一个Add a filtert条件为日志内容包含jiangxl的即可查出所要的日志内容

在这里插入图片描述

4.4.4.如何只查看收集来日志的某一项内容

kibana展示的日志内容特别长,其中包含了很多信息,我们只想查看某一个条件可以在左侧将该条件添加即可

比如我们只查看内容的具体内容和主机名,其他的一概不看

找到想要的条件点击ADD即可添加

在这里插入图片描述

添加的字段可以在Selected fields中查看

过滤完字段,内容就清晰多了,内容中只包含主机名和日志内容以及采集过来的时间

在这里插入图片描述

5.注意kibana创建索引名字要写成xxx-*

kibana创建索引时一定要将名字写成xxx-*,因为filebeat每天收集是数据都会在es上创建一个索引,如果我们把索引名称写死的情况下,第二天的日志就在kibana看不到了

第二天的es索引页面,已经出现两个了

在这里插入图片描述

虽然es上的索引出现了两个,因为昨天创建kibana索引时把名称写死了,所以第二天就看不到新的日志信息

在这里插入图片描述

这里需要重新创建索引了,把索引的名称修改成通配符的形式

只有改成了通配符才能每天看日志情况的时候不要切换索引,否则每天都要新建索引了

当把索引名称改成filebeat-6.6.0-*时会自动把包含filebeat-6.6.0-的索引列出来,方便实时统计

在这里插入图片描述

在Discovery中的下拉列表就可以看到其他索引了可以将写死的索引删除

在这里插入图片描述

文章来源: jiangxl.blog.csdn.net,作者:Jiangxl~,版权归原作者所有,如需转载,请联系作者。

原文链接:jiangxl.blog.csdn.net/article/details/117259830

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。