服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Nginx - filebeat收集多个域名网站日志并存储到不同es索引库过程

filebeat收集多个域名网站日志并存储到不同es索引库过程

2022-08-23 23:41jiangxl Nginx

这篇文章主要为大家介绍了filebeat收集多个域名网站日志并存储到不同es索引库过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

1.为什么要针对不同的应用系统创建不同的索引

公司生产环境中一台机器上一定会运行着多个域名的应用,web应用也是集群的方式,如果filebeat收集来的日志都是分散存储,且在es上建立的索引也都是分散的,这样不利于日志的聚合汇总,因此就需要把同一种应用的不同机器上的日志全部采集过来存储到一个索引库中,在kibana根据各种条件去匹配

 

2.搭建web集群环境

 

2.1.环境准备

IP 服务 应用
192.168.81.210 nginx01 bbs、blog、www
192.168.81.220 nginx02 bbs、blog、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

filebeat收集多个域名网站日志并存储到不同es索引库过程

 

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;
}

filebeat收集多个域名网站日志并存储到不同es索引库过程

 

3.配置filebeat实现不同日志对应不同索引

 

3.1.实现思路

**日志索引思路:**如何才能让filebeat根据不同的日志路径去创建不同的索引,其实我们可以想一下ls -l命令,使用ls -l命令才能得到文件的详细信息,但是使用ll也可以得到,这是为什么呢?是由于ll仅仅只是一个别名,我们也可以当成一个标记,ll对应的就是ls -l命令

那么日志也一样的,我们可以把www_access.log当成是一个标记,当标记内容为www_access.log时,我们就把他的日志存储在www_access_xxx的索引库中

具体配置:如果一个主机上有多个不同应用的日志需要采集,我们可以定义多个type类型,最后根据定义的标记在indices中进行匹配

**日志聚合思路:**我们也可以将所有机器的tomcat、nginx日志进行聚合收集,不需要根据应用去区分,而是把所有的tomcat日志收集在一起,这样便于开发人员去查询日志,查哪台主机的就在kibana上进行过滤就行了

如下图所示,tomcat就是聚合收集,查哪台机器的日志就添加一个筛选写上主机名就可以了

filebeat收集多个域名网站日志并存储到不同es索引库过程

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集群内的所有filebeat都需要如下配置

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

filebeat收集多个域名网站日志并存储到不同es索引库过程

 

3.3.在es上查看创建的索引库

由于nginx集群相同的应用是要写在同一个索引库中的,因此我们要观察每加一个集群产生的数据变化

刚配置完nginx01时的样子

www:12条 blog:11条 bbs:12条

filebeat收集多个域名网站日志并存储到不同es索引库过程

增加nginx02后的样子

访问nginx02上的应用六七次后,数据明显发生了变化

www:19条 blog:18条 bbs:19条

filebeat收集多个域名网站日志并存储到不同es索引库过程

可以具体看索引中的数据,看看是不是对应的日志,完全正确

filebeat收集多个域名网站日志并存储到不同es索引库过程

 

3.4.在kibana上关联es索引库

 

3.4.1.创建www索引库

点击Managerment----索引模式---创建索引

filebeat收集多个域名网站日志并存储到不同es索引库过程

字段选择@timestamp

filebeat收集多个域名网站日志并存储到不同es索引库过程

 

3.4.2.创建bbs索引库

操作与www的一致

filebeat收集多个域名网站日志并存储到不同es索引库过程

 

3.4.3.创建blog索引库

操作与www的一致

filebeat收集多个域名网站日志并存储到不同es索引库过程

 

3.4.4.所有应用索引库都一一对应上了

filebeat收集多个域名网站日志并存储到不同es索引库过程

 

4.在kibana统计日志分析

 

4.1.统计nginx01主机www应用200状态码数量

筛选添加:beat.name(主机名)is(是) nginx01(主机名)

​ 状态码(访问状态码) is(是) 200(状态码为200)

filebeat收集多个域名网站日志并存储到不同es索引库过程

 

4.2.统计所有节点访问状态码为200的日志

只需要添加一个筛选器即可

筛选添加:状态码(访问状态码) is(是) 200(状态码为200)

日志也起到了聚合的作用,所有节点都可以统计

filebeat收集多个域名网站日志并存储到不同es索引库过程

以上就是filebeat收集多个域名网站日志并存储到不同es索引库过程的详细内容,更多关于filebeat收集网站日志存储es的资料请关注服务器之家其它相关文章!

原文地址:https://juejin.cn/post/7134107269293146148

延伸 · 阅读

精彩推荐
  • Nginxnginx外网访问内网站点配置操作

    nginx外网访问内网站点配置操作

    这篇文章主要介绍了nginx外网访问内网站点配置操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    ethan-coding18622020-08-03
  • Nginx使用Nginx搭建rtmp直播服务器的方法

    使用Nginx搭建rtmp直播服务器的方法

    这次我们搭建一个rtmp直播服务器,用于电脑或手机直播推流到服务器,然后其他终端如电脑或手机可以观看直播的视频画面。接下来通过本文给大家分享使...

    冉航--小虾米4842021-11-09
  • Nginxnginx网站服务如何配置防盗链(推荐)

    nginx网站服务如何配置防盗链(推荐)

    这篇文章主要介绍了nginx网站服务如何配置防盗链,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    有吃不错咯4112021-03-04
  • NginxPHP开发框架kohana3.3.1在nginx下的伪静态设置例子

    PHP开发框架kohana3.3.1在nginx下的伪静态设置例子

    这篇文章主要介绍了PHP开发框架kohana3.3.1在nginx下的伪静态设置例子,kohana曾经是codeigniter框架的衍生版,后来发展成另一个独立的PHP5开发框架,需要的朋友可以...

    junjie2492019-10-21
  • NginxNginx、Apache、Lighttpd禁止目录执行php配置示例

    Nginx、Apache、Lighttpd禁止目录执行php配置示例

    这篇文章主要介绍了Nginx、Apache、Lighttpd禁止目录执行php配置示例,本文给出了单个目录、多个目录的禁止执行PHP的方法,需要的朋友可以参考下 ...

    Nginx配置网3972019-10-23
  • Nginx教你在容器中使用nginx搭建上传下载的文件服务器

    教你在容器中使用nginx搭建上传下载的文件服务器

    这篇文章主要介绍了容器中使用nginx搭建支持上传下载的文件服务器,在这需要注意为了让nginx支持文件上传,需要下载并运行带有nginx-upload-module模块的容器...

    witton7582022-08-07
  • NginxNginx四层负载均衡的配置指南

    Nginx四层负载均衡的配置指南

    当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃.为了避免服务器崩溃,让用户有更好的体验,我们通...

    徐中祥6202021-08-06
  • Nginx关于nginx日志增加cookie信息

    关于nginx日志增加cookie信息

    这篇文章主要介绍了nginx日志增加cookie信息的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 ...

    Bigberg4702019-12-10