在使用ELK對日志進行收集的時候,如果需要對資料進行存檔,可以考慮使用資料庫的方式。為了便于查詢,可以同時寫一份資料到Elasticsearch 中。
CentOS7系統:
192.168.20.60 node1 Kibana ES Logstash Nginx
192.168.20.61 node2 ES MariaDB
這裡使用收集Nginx日志到資料庫和ES中作為示例。
安裝好資料庫後,配置,并授權:
在node1上測試資料庫的連接配接:
按裝logstash的資料庫驅動需要先安裝gem源:
檢視目前已經安裝的插件:
安裝JDBC驅動:
安裝需要等待一段時間,檢視是否安裝成功:
要使日志以指定的表中字段的方式存儲,需要将Nginx的日志格式改寫為json格式,修改nginx.conf問,将日志格式配置部分替換為:
檢查文法,并重新加載nginx:
檢視日志中新日志的格式是否是json格式。
我們在資料庫中存儲資料的時候,沒有必要存儲日志的所有内容,隻需存儲我們需要的重要資訊即可,可以根據自身的需求進行取舍。
注意:資料表中需要建立time字段,time的預設值設定為CURRENT_TIMESTAMP.
建立資料表語句(隻擷取部分資料):
檢視表結構:
建立Logstash的配置檔案:
[root@node1 ~]# vim /etc/logstash/conf.d/nginx_log.conf
測試檔案,檢視是否正确:
如果發現配置檔案正确,但是日志無法收集,可以使用前台啟動的方式,檢視日志資訊:
提示: 如果是使用root操作,使用前台啟動的方式也就是以root使用者啟動,使用系統systemd啟動使用的是logstash使用者,如果前台啟動正常,而背景啟動無法收集日志,一般是目錄或者檔案權限問題。
重新開機logstash,通路nginx生成日志,并檢視Elasticsearch是否已經收集日志:
ES中已經自動建立的資料資訊:
在Kibana中添加日志資訊,用于展示,在輸入名稱之後,選擇使用時間戳的方式,會自動檢索出對應的資訊:
當Kibana上有資料展示後,我們可以檢視資料庫,發現資料庫中已經存儲了日志資訊:
将Nginx 日志收集到資料庫中就完成了。
如果在收集日志的時候,出現資料庫中沒有資料,或者有些字段的資料無法擷取,故障排除的思路是:
1、檢視nginx的日志檔案格式是否為json格式,日志輸出是否正常。
2、檢視es 或者kibana上的日志是否完整,展示是否正常。
3、檢視logstash的conf配置檔案是否正常,字段标注的個數,名稱有無對應上。
4、測試配置檔案,重新整理日志,如果kibana上展示正常,一般是logstash配置檔案沒有對應上字段,或者資料庫權限問題。
本文轉自 酥心糖 51CTO部落格,原文連結:http://blog.51cto.com/tryingstuff/2050360