网站文章采集(如何才能让filebeat根据不同的应用系统创建不同索引 )
优采云 发布时间: 2021-11-24 23:11网站文章采集(如何才能让filebeat根据不同的应用系统创建不同索引
)
filebeat采集多个域日志,创建不同的索引1.为什么要为不同的应用系统创建不同的索引
在公司的生产环境中,多域名的应用程序必须运行在一台机器上。Web 应用程序也是集群的。如果filebeat采集的日志是分开存放的,es上建立的索引也是分布式的,那么不利于日志的聚合,所以需要把同一个应用的不同机器上的所有日志都存放在一个索引中库,并根据各种条件在 kibana 中匹配它们。
2.搭建web集群环境2.1.IP业务应用环境准备
192.168.81.210
nginx01
bbs, 博客, www
192.168.81.220
nginx02
bbs, 博客, www
2.2.web集群部署
所有节点配置如下
1.安装nginx
yum -y install nginx
2.配置站点配置文件
cat www.conf
server{
server_name www.jiangxl.com;
listen 80;
location ~ / {
root /web/www;
index index.html;
}
}
cat bbs.conf
server{
server_name bbs.jiangxl.com;
listen 80;
location ~ / {
root /web/bbs;
index index.html;
}
}
cat blog.conf
server{
server_name blog.jiangxl.com;
listen 80;
location ~ / {
root /web/blog;
index index.html;
}
}
3.创建站点路径
mkdir /web/{www,bbs,blog} -p
chown -R nginx.nginx /web/
echo "www index" > /web/www/index.html
echo "bbs index" > /web/bbs/index.html
echo "blog index" > /web/blog/index.html
4.重载nginx
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
systemctl reload nginx
5.访问站点
curl www.jiangxl.com bbs.jiangxl.com blog.jiangxl.com
www index
bbs index
blog index
2.3.配置应用支持json格式的日志输出
所有节点都是这样配置的
cat www.conf
server{
server_name www.jiangxl.com;
listen 80;
location ~ / {
root /web/www;
index index.html;
}
access_log /var/log/nginx/www_access.log main;
}
cat bbs.conf
server{
server_name bbs.jiangxl.com;
listen 80;
location ~ / {
root /web/bbs;
index index.html;
}
access_log /var/log/nginx/bbs_access.log main;
}
cat blog.conf
server{
server_name blog.jiangxl.com;
listen 80;
location ~ / {
root /web/blog;
index index.html;
}
access_log /var/log/nginx/blog_access.log main;
}
3.配置filebeat,实现不同索引对应的不同日志3.1.实现思路
**日志索引思路:** filebeat 如何根据不同的日志路径创建不同的索引?其实我们可以考虑ls -l命令,使用ls -l命令来获取文件的详细信息,但是你也可以使用ll Get,这是为什么呢?因为ll只是一个别名,我们也可以用它作为标记,ll对应的是ls -l命令
那么日志是一样的,我们可以把www_access.log当作一个标记,当标记的内容是www_access.log时,我们会将他的日志存入www_access_xxx的索引库中
具体配置:如果一台主机上有多个不同应用的日志需要采集,我们可以定义多种类型类型,最后根据定义的标签在指标中进行匹配
**日志聚合思路:**我们也可以聚合采集所有机器的tomcat和nginx日志。不需要根据应用来区分,而是将所有的tomcat日志采集到一起,方便开发者查询日志,查看kibana上过滤了哪个主机
如下图,tomcat是聚合集合。要检查哪台机器的日志,请添加过滤器并写入主机名。
Filebeat 标签匹配语法:
filebeat.inputs:
- type: log //一个日志一个type
enabled: true //是否写在es中
paths: //日志路径
- /var/log/nginx/www_access.log
json.keys_under_root: true //开启json格式解析
json.overwrite_keys: true
tags: ["www"] //标记内容,在[]里填写即可
output.elasticsearch:
hosts: ["192.168.81.210:9200"]
indices: //索引匹配
- index: "nginx-www-access-%{+yyyy.MM.dd}" //索引库名称
when.contains: //匹配什么标记
tags: "www" //匹配标记为www的日志
3.2. 配置filebeat为不同的日志使用不同的索引库
nginx集群中的所有filebeats都需要配置如下
Vim 复制提示:复制第 2-8 行的内容并粘贴到第 9 行。操作命令:在vim命令模式下输入:2,8t9,2,8表示复制2-8t行,9表示在第九行粘贴
1.配置filebeat
vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/www_access.log
json.keys_under_root: true
json.overwrite_keys: true
tags: ["www"]
- type: log
enabled: true
paths:
- /var/log/nginx/bbs_access.log
json.keys_under_root: true
json.overwrite_keys: true
tags: ["bbs"]
- type: log
enabled: true
paths:
- /var/log/nginx/blog_access.log
json.keys_under_root: true
json.overwrite_keys: true
tags: ["blog"]
output.elasticsearch:
hosts: ["192.168.81.210:9200"]
indices:
- index: "nginx-www-access-%{+yyyy.MM.dd}"
when.contains:
tags: "www"
- index: "nginx-bbs-access-%{+yyyy.MM.dd}"
when.contains:
tags: "bbs"
- index: "nginx-blog-access-%{+yyyy.MM.dd}"
when.contains:
tags: "blog"
setup.template.name: "nginx"
setup.template.pattern: "nginx-*"
setup.template.enabled: false
setup.template.overwrite: true
2.重启filebeat
systemctl restart filebeat
3.3.在es上查看创建的索引库
由于nginx集群的同一个应用要写在同一个索引库中,所以我们要观察每个集群产生的数据变化
貌似刚配置nginx01的时候
www:12 篇博客:11 篇 bbs:12 篇
添加nginx02后的样子
在nginx02上访问应用六七次后,数据有明显变化
www:19 篇博客:18 篇 bbs:19 篇
可以具体查看索引中的数据,看看对应的日志是否正确。
3.4.在kibana上关联es索引库3.4.1.创建www索引库
点击管理-索引模式-创建索引
字段选择@timestamp
3.4.2.创建bbs索引库
操作与www一致
3.4.3.创建博客索引库
操作与www一致
3.4.4.所有应用索引库一一映射
4.kibana中的统计日志分析4.1.统计nginx01主机的www应用的200个状态码数
过滤器添加:beat.name(主机名)是(是)nginx01(主机名)
状态码(访问状态码)为(是)200(状态码为200)
4.2. 统计所有访问状态码为200的节点的日志
只需添加一个过滤器
过滤并添加:状态码(访问状态码)为(是)200(状态码为200)
日志也起聚合作用,所有节点都可以统计