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

采集數(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ù)源

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)。