目錄
- 1.為什么要針對不同的應用系統創建不同的索引
- 2.搭建web集群環境
- 2.1.環境準備
- 2.2.web集群部署
- 2.3.配置應用支持json格式的日志輸出
- 3.配置filebeat實現不同日志對應不同索引
- 3.1.實現思路
- 3.2.配置filebeat不同日志使用不同索引庫
- 3.3.在es上查看創建的索引庫
- 3.4.在kibana上關聯es索引庫
- 3.4.1.創建www索引庫
- 3.4.2.創建bbs索引庫
- 3.4.3.創建blog索引庫
- 3.4.4.所有應用索引庫都一一對應上了
- 4.在kibana統計日志分析
- 4.1.統計nginx01主機www應用200狀態碼數量
- 4.2.統計所有節點訪問狀態碼為200的日志
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

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的資料請關注其它相關文章!






