使用ELK監控Nginx日志實現接口流量訪問統計


前段時間自己看書學習了一下elasticSearch,后面自己實踐了使用elasticSearch、logStash、kibana搭建一個網站接口流量訪問統計的監控看板。在這里做一些記錄學習。

先看一下最終的結果:下面這個折線圖就是我自己后台服務的訪問接口的流量和總數,可以在右上角按照日期進行篩選查看

整個看板監控的實現過程很簡單:主要使用logStash對Nginx的接口訪問日志進行收集->存儲到elasticSearch索引->在使用kibana對elasticSearch索引進行可視化分析,從而實現一個接口的流量訪問統計的簡單看板。

本文主要從三個部分講解:

  1、使用logStash對Nginx的接口訪問日志進行收集

  2、elasticSearch安裝使用

  3、使用kibana對elasticSearch索引進行可視化分析

   PS:在這里我使用的是Windows環境、首先下載軟件並准備好環境,注意版本號一定要統一,因為ES7.X的版本做了很多改動,移除了索引類型,客戶端API的許多實現都和舊版本不一樣。ELK的版本需要下載對應版本。在這里就不進行過多講解。只講解需要注意的事項。另外我自己寫了一個簡單的springboot項目,使用thymeleaf提供了幾個簡單的頁面接口。我們最終將通過ELK實現對這幾個接口的訪問流量的監控。

  • 使用logStash對Nginx的接口訪問日志進行收集

logStash我使用的是6.8.1 ,安裝成功后,需要在config中進行配置,如下圖,需要新建一個patterns文件夾。作用下面會講解。同時建立一個 logstash.conf文件,通過指令 “bin\logstash -f config\logstash2.conf” 指定 以logstash.conf配置啟動,配置文件下面會進行講解。

 

首先講解一下logstash.conf的內容:

 

 

 主要有三部分 input、output、filter

其中input和output是logstash配置日志收集輸入源和輸出源。

輸入源input: 這里我配置的輸入源就是 我Nginx的訪問日志路徑,start_position表示從開始讀取。注意:input下面我使用的是file表示文件輸入源。logstash還提供了許多輸入源,包括stdin(控制台輸入)、tcp網絡輸入、filebeat的方式等。

輸出源output:這里我配置的是es的索引創建。hosts表示es的服務地址,其中es的9200端口表示 是ES節點與外部通訊使用的端口。它是http協議的RESTful接口,而9300表示ES節點之間通訊使用的端口。它是tcp通訊端口,集群間和TCPclient都走的它。index表示創建索引名稱 %{}使用了logstash表達式,表示到天結束,意思就是每天都會有一個新的索引創建,這樣我們后面使用kibana進行分析,也可以使用索引模式細化到每一天進行分析。例如:1號和2號就會創建兩個索引cgg-nginx-logs-1999-01-01,cgg-nginx-logs-1999-01-02。

過濾器filter:表示logstash的過濾器插件,作用就是日志通過輸入源到輸出源,會先經過過濾器進行一次轉換。filter我們使用的是grok正則表達式。pattern_dir表示正則的存放路徑,對應的就是我們上面建立的正則文件patterns下面的nginx正則。grok正則的語法和我們平時使用的正則語法有些不一樣,學習地址:http://doc.yonyoucloud.com/doc/logstash-best-practice-cn/index.html ,如果我們自己寫的grok正則有問題,我們還可以使用kibana的grok debugger進行調式。發現問題。

  • elasticSearch安裝使用

上面講解了將nginx的日志按天存到了es的索引,這里就主要講一下es的安裝,ES我們使用6.8.0。安裝好后同樣需要配置一下配置文件elasicsearch.yml和jvm.options。

 

 

這里說一下 es和kibana都是java語言編寫的,logstash使用的是JRuby。啟動es需要在yml配置一下啟動集群和節點的參數。同時在jvm.options文件中配置jvm啟動項,由於我使用的是個人電腦,我們在操作時候可以把初始化堆和最大堆內存設置小一點,避免內存不足啟動失敗。

yml配置:

 

 

 jvm.options配置:

 

 

 最后進入es bin目錄使用命令elasticsearch進行啟動即可

 

 

 

  • 使用kibana對elasticSearch索引進行可視化分析

kibana我使用的版本是6.8.1,kibana的配置在kibana.yml中配置我們本地搭建的話,es和kibana都在一台機器上,yml中默認會配置es的url為本地的地址,就不需要特殊配置了。

 

 

 

 

 

 啟動kibana后,都是英文的操作提示,kibana提供了國際化的設置,我們可以在yml加上中文配置  i18n.locale: "zh-CN" ,這樣方便學習。

  

最后進入kibana的bin目錄直接雙擊啟動kibana,進入kibana,我們下面進行可視化面板的配置。

1、首先創建索引模式,搜索我們剛才在logstash創建的索引,進行創建。

 

 

 2、下一步后,我們選擇使用時間戳進行篩選,最后完成創建。

 

 

 

3、創建完成索引模式后,新建可視化組件,這里我們新建一個折線圖來觀察接口的訪問流量。選中折線圖,索引模式選中cgg-nginx*對應我們logstash中創建的索引模式。*表示匹配所有,因為logstash是安裝每天時間創建一個索引,使用*我們就可以匹配所有的nginx索引

 

 

 

4、添加折線圖后,我們開始編輯折線圖的各項指標,Y軸我們表示計數,對應索引模式中的文檔個數,X軸我們選中日期,表示時間。時間間隔我們可以選擇毫秒、秒等單位,具體看接口流量。然后點擊三角表示生成折線圖。最后我們點擊保存組件。

 

 

 

 5、最后進入儀表盤,創建儀表盤,點擊添加可視化組件,把剛才創建的折線圖添加進來。大功告成,我們通過postman或者jmeter批量調用我們的接口,然后點擊右上角的刷新,就可以實時體現接口的訪問流量了。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM