首頁 > 軟體

filebeat收集多個域名網站紀錄檔並儲存到不同es索引庫過程

2022-08-23 14:03:48

1.為什麼要針對不同的應用系統建立不同的索引

公司生產環境中一臺機器上一定會執行著多個域名的應用,web應用也是叢集的方式,如果filebeat收集來的紀錄檔都是分散儲存,且在es上建立的索引也都是分散的,這樣不利於紀錄檔的聚合彙總,因此就需要把同一種應用的不同機器上的紀錄檔全部採集過來儲存到一個索引庫中,在kibana根據各種條件去匹配

2.搭建web叢集環境

2.1.環境準備

IP服務應用
192.168.81.210nginx01bbs、blog、www
192.168.81.220nginx02bbs、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

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也可以得到,這是為什麼呢?是由於ll僅僅只是一個別名,我們也可以當成一個標記,ll對應的就是ls -l命令

那麼紀錄檔也一樣的,我們可以把www_access.log當成是一個標記,當標記內容為www_access.log時,我們就把他的紀錄檔儲存在www_access_xxx的索引庫中

具體設定:如果一個主機上有多個不同應用的紀錄檔需要採集,我們可以定義多個type型別,最後根據定義的標記在indices中進行匹配

**紀錄檔聚合思路:**我們也可以將所有機器的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叢集內的所有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

3.3.在es上檢視建立的索引庫

由於nginx叢集相同的應用是要寫在同一個索引庫中的,因此我們要觀察每加一個叢集產生的資料變化

剛設定完nginx01時的樣子

www:12條 blog:11條 bbs:12條

增加nginx02後的樣子

存取nginx02上的應用六七次後,資料明顯發生了變化

www:19條 blog:18條 bbs:19條

可以具體看索引中的資料,看看是不是對應的紀錄檔,完全正確

3.4.在kibana上關聯es索引庫

3.4.1.建立www索引庫

點選Managerment----索引模式---建立索引

欄位選擇@timestamp

3.4.2.建立bbs索引庫

操作與www的一致

3.4.3.建立blog索引庫

操作與www的一致

3.4.4.所有應用索引庫都一一對應上了

4.在kibana統計紀錄檔分析

4.1.統計nginx01主機www應用200狀態碼數量

篩選新增:beat.name(主機名)is(是) nginx01(主機名)

​ 狀態碼(存取狀態碼) is(是) 200(狀態碼為200)

4.2.統計所有節點存取狀態碼為200的紀錄檔

只需要新增一個篩選器即可

篩選新增:狀態碼(存取狀態碼) is(是) 200(狀態碼為200)

紀錄檔也起到了聚合的作用,所有節點都可以統計

以上就是filebeat收集多個域名網站紀錄檔並儲存到不同es索引庫過程的詳細內容,更多關於filebeat收集網站紀錄檔儲存es的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com