filebeat+logstash+influxdb+ Grafana打造網(wǎng)站日志監(jiān)控系統(tǒng)

filebeat+logstash+influxdb+ Grafana打造網(wǎng)站日志監(jiān)控系統(tǒng)

image

采集數(shù)據(jù)(fliebeat)->過濾數(shù)據(jù)(logstash)-> 存儲(chǔ)數(shù)據(jù)(InfluxDB) -> 顯示數(shù)據(jù)(Grafana)。

資源有限,我把這一套服務(wù)搭建在了一臺(tái)CentOS 7的服務(wù)器上。

filebeat簡(jiǎn)述

Filebeat是一個(gè)日志文件托運(yùn)工具,在你的服務(wù)器上安裝客戶端后,filebeat會(huì)監(jiān)控日志目錄或者指定的日志文件,追蹤讀取這些文件(追蹤文件的變化,不停的讀),并且轉(zhuǎn)發(fā)這些信息到elasticsearch或者logstarsh中存放。
以下是filebeat的工作流程:當(dāng)你開啟filebeat程序的時(shí)候,它會(huì)啟動(dòng)一個(gè)或多個(gè)探測(cè)器(prospectors)去檢測(cè)你指定的日志目錄或文件,對(duì)于探測(cè)器找出的每一個(gè)日志文件,filebeat啟動(dòng)收割進(jìn)程(harvester),每一個(gè)收割進(jìn)程讀取一個(gè)日志文件的新內(nèi)容,并發(fā)送這些新的日志數(shù)據(jù)到處理程序(spooler),處理程序會(huì)集合這些事件,最后filebeat會(huì)發(fā)送集合的數(shù)據(jù)到你指定的地點(diǎn)。

logstash簡(jiǎn)述

Logstash 是一個(gè)開源的數(shù)據(jù)收集引擎,它具有備實(shí)時(shí)數(shù)據(jù)傳輸能力。它可以統(tǒng)一過濾來自不同源的數(shù)據(jù),并按照開發(fā)者的制定的規(guī)范輸出到目的地。
顧名思義,Logstash 收集數(shù)據(jù)對(duì)象就是日志文件。由于日志文件來源多(如:系統(tǒng)日志、服務(wù)器 日志等),且內(nèi)容雜亂,不便于人類進(jìn)行觀察。因此,我們可以使用 Logstash 對(duì)日志文件進(jìn)行收集和統(tǒng)一過濾,變成可讀性高的內(nèi)容,方便開發(fā)者或運(yùn)維人員觀察,從而有效的分析系統(tǒng)/項(xiàng)目運(yùn)行的性能,做好監(jiān)控和預(yù)警的準(zhǔn)備工作等。

influxdb簡(jiǎn)述

InfluxDB 是一個(gè)開源分布式時(shí)序、事件和指標(biāo)數(shù)據(jù)庫。使用 Go 語言編寫,無需外部依賴。其設(shè)計(jì)目標(biāo)是實(shí)現(xiàn)分布式和水平伸縮擴(kuò)展。

Grafana簡(jiǎn)述

Grafana 是基于JS開發(fā)的,功能齊全的度量儀表盤和圖形編輯器,幫助開發(fā)人員發(fā)現(xiàn)問題的工具

幾者之間的關(guān)系

filebeat負(fù)責(zé)收集新產(chǎn)生的日志數(shù)據(jù),發(fā)送給logstash進(jìn)行數(shù)據(jù)過濾,logstash輸出格式化的數(shù)據(jù)到時(shí)序數(shù)據(jù)庫influxdb中,grafana從influxdb數(shù)據(jù)庫中讀取數(shù)據(jù)實(shí)時(shí)展示,監(jiān)控網(wǎng)站的狀況,如訪問量,每分鐘發(fā)送的字節(jié)數(shù),500的情況等等

打造網(wǎng)站日志監(jiān)控系統(tǒng)的步驟

1. nginx服務(wù)器配置

1.1 log_format配置如下

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent  $request_time "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';

1.2 對(duì)應(yīng)的日志文件格式如下

192.168.154.2 - - [30/Mar/2017:01:27:09 -0700] \"GET /index.html HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36\" \"-\""

2.logstash安裝和配置

2.1 logstash的安裝,我的版本是logstash-5.6.1-1.noarch

yum install logstash

2.2 logstash中g(shù)rok的正則(添加在logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-xxx/patterns/grok-patterns文件中)為:

WZ ([^ ]*)
NGINXACCESS %{IP:remote_ip} \- \- \[%{HTTPDATE:timestamp}\] "%{WORD:method} %{WZ:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:status} %{NUMBER:bytes} %{NUMBER:request_time} %{QS:referer} %{QS:agent} %{QS:xforward}

2.3 logstash.conf配置文件內(nèi)容

input {
    file {
        path     => ["/var/log/nginx/access.log"]
        type    => "nginxlog"
        start_position => "beginning"
    }
}

filter {  
    grok {  
      match => { "message" => "%{NGINXACCESS}" }
    }  
} 
output {

    influxdb {
                     db => "influxdb中的數(shù)據(jù)庫名"
                     host => "localhost"
                     port => "8086"
                     user => "你的賬號(hào)"
                     password => "你的密碼"
             coerce_values => {
                     "request" => "varchar"
                     "status" => "varchar"
               }
                    data_points => {
                                  "request" => "%{request}"
                                  "status" => "%{status}"
                                  "referer"=>"%{referer}"
                                  "agent"=>"%{agent}"
                                  "method"=>"%{method}"
                                  "remote_ip"=>"%{remote_ip}"
                                  "bytes"=>"%{bytes}"
                                  "host"=>"%{host}"
                                  "timestamp"=>"%{timestamp}"
                      
                    }

} 

3.filebeat安裝和配置

3.1filebeat的安裝

我的filebeat的版本為5.1.1

yum install filebeat

3.2 filebeat的配置,配置文件一般位于/etc/filebeat/

filebeat.prospectors:                                                                              
- input_type: log 
  paths:
    - /var/log/nginx/access.log
output.logstash:
  hosts: ["localhost:5044"] //監(jiān)控本機(jī)的5044端口,可以自己定義需要和logstash配置文件中的beats端口一致

3.3 踩過的坑

logstash的配置文件在/etc/logstash/,我們需要設(shè)置軟連接到/usr/share/logstah/config下面

ln -s /etc/logstash/* /usr/share/logstash/config/

我們?cè)O(shè)置的配置文件在/etc/logstash/conf.d/也需要軟連接到/usr/share/logstash/,跟上面有所不同

ln -s /etc/logstash/conf.d/logostash.conf /usr/share/logstash/

logstash5.0以上版本移除了很多插件,包括ifluxdb插件,我們需要利用gem安裝,鏈接如下本地以Gems包的形式安裝Logstash插件

4. influxdb的安裝和配置

4.1 influxdb的安裝

我的版本是influxdb-1.0.2.x86_64.rpm

yum install influxdb

4.2 influxdb的配置

//管理后臺(tái)配置,可以根據(jù)ip或者域名+端口號(hào)8083訪問influxdb數(shù)據(jù)庫的管理后臺(tái)
[admin]
  enabled = true
  bind-address = ":8083"
[http]
  enabled = true
  bind-address = ":8086"
  auth-enabled = false
  log-enabled = true
  write-tracing = false
  pprof-enabled = false                                                                                                                             
  https-enabled = false
  https-certificate = "/etc/ssl/influxdb.pem"
  max-row-limit = 10000
  realm = "InfluxDB"

5. Grafana的安裝和配置

5.1 Grfana的安裝

我的Grfana版本是 grafana-4.2.0-1.x86_64.rpm

yum install grafana

5.2 Grafana的啟動(dòng)

service granfan rstart

5.3 Grafana的配置,配置數(shù)據(jù)源


image

5.4 開啟服務(wù)后臺(tái)運(yùn)行,監(jiān)控日志,實(shí)時(shí)顯示

nohup bin/logstash -f test.conf --path.data=/var/ &

6.結(jié)束語

經(jīng)過兩天的學(xué)習(xí)和各種踩坑,終于構(gòu)建一個(gè)非常漂亮的實(shí)時(shí)監(jiān)控界面,有利于我們實(shí)時(shí)的監(jiān)控網(wǎng)站的運(yùn)行狀態(tài)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容