日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

logstash+elasticsearch+kibana搭建日志收集分析系統(tǒng)

 WindySky 2016-03-14

日志監(jiān)控和分析在保障業(yè)務穩(wěn)定運行時,起到了很重要的作用,不過一般情況下日志都分散在各個生產(chǎn)服務器,且開發(fā)人員無法登陸生產(chǎn)服務器,這時候就需要一個集中式的日志收集裝置,對日志中的關鍵字進行監(jiān)控,觸發(fā)異常時進行報警,并且開發(fā)人員能夠查看相關日志。logstash+elasticsearch+kibana3就是實現(xiàn)這樣功能的一套系統(tǒng),并且功能更強大。

logstash:是一個管理日志和事件的工具,你可以收集它們,解析它們,并存儲它們以供以后使用(例如日志搜索),logstash有一個內置的web界面,用來搜索你的所有日志。logstash在部署時有兩種運行模式:standalone和centralized:

   * standalone:standalone的意思是所有的事情都在一臺服務器上運行,包括日志收集、日志索引、前端WEB界面都部署在一臺機器上。

   * centralized:就是多服務器模式,從很多服務器運輸(ship)日志到一臺總的日志(collector)服務器上用來索引和查找。

    需要注意的是logstash本身并沒有什么shipper和indexer這種說法,因為不論是運輸日志的進程還是匯集總的日志的進程運行的都是同一個程序,只是使用的配置文件不同而已。

elasticsearch:

    基于lucene的開源搜索引擎,是一個分布式的搜索分析系統(tǒng),主要特點有:real time data、real time analytics、distributed、high availability、multi-tenancy、full text search、document oriented、conflict management、schema free、restful api等等。

kibana3:

    可視化日志和數(shù)據(jù)系統(tǒng),作為WEB前端可以很容易的和elasticsearch系統(tǒng)結合。kibana有版本2和版本3的區(qū)分,版本2采用ruby編寫,部署起來很麻煩,需要安裝很多ruby依賴包(目前網(wǎng)上多是這個版本的部署),版本3采用純html+css編寫,因此部署起來很方便,解壓即用,目前已經(jīng)是kibana4了,建議大家使用最新版。

出于性能及擴展性考慮,實際應用中l(wèi)ogstash我們必然采用centralized模式,最基本的結構圖如下:


1、安裝redis,安裝過程簡單,這里不做詳細說明。

2、安裝ElasticSearch(目前版本1.4)

[plain] view plain copy
  1. <span style="font-size:14px;">wget 'https://download./elasticsearch/elasticsearch/elasticsearch-0.90.7.tar.gz'  
  2. tar zxvf elasticsearch-0.90.7.tar.gz  
  3. cd elasticsearch-0.90.7/bin  
  4. #可以在logstash agent啟動后再啟動  
  5. ./elasticsearch -f</span>  

3、啟動logstash shipper,定義配置文件logstash.conf,根據(jù)實際情況定義,以下主要定義了input源為文件,output到redis,啟動logstash shipper,例如:

[plain] view plain copy
在CODE上查看代碼片派生到我的代碼片
  1. <span style="font-family: 'Microsoft YaHei';"><span style="font-size:14px;">input {  
  2.         file {  
  3.                 type => "api_log"  
  4.                 path => "/home/jws/app/nginxserver/logs/apiaccess.log"  
  5.                 debug => true  
  6.         }  
  7.         file {  
  8.                 type => "cas_log"  
  9.                 path => "/home/jws/app/nginxserver/logs/casaccess.log"  
  10.                 debug => true  
  11.         }  
  12.         file {  
  13.                 type => "id_log"  
  14.                 path => "/home/jws/app/nginxserver/logs/idaccess.log"  
  15.                 debug => true  
  16.         }  
  17.         file {  
  18.                 type => "login_log"  
  19.                 path => "/home/jws/app/nginxserver/logs/loginaccess.log"  
  20.                 debug => true  
  21.         }  
  22.         file {  
  23.                 type => "proxy_log"  
  24.                 path => "/home/jws/app/nginxserver/logs/proxyaccess.log"  
  25.                 debug => true  
  26.         }  
  27. }  
  28. output {  
  29.         redis {  
  30.                 host => "10.20.164.121"  
  31.                 data_type => "list"  
  32.                 key => "logstash:redis"  
  33.         }  
  34.         redis {  
  35.                 host => "10.20.164.122"  
  36.                 data_type => "list"  
  37.                 key => "logstash:uop_file"  
  38.         }  
  39. }</span></span>  

啟動shipper:

java -jar /home/jws/htdocs/logstash/lib/logstash.jar agent -f /home/jws/htdocs/logstash/conf/logstash.conf -l /home/jws/htdocs/logstash/logs/logstash.log

4、啟動logstash indexer
logstash的配置文件相當簡單,主要有三部分:inputs、filters、outputs。事件在配置文件中的出現(xiàn)是有順序的。在inputs、output、filter中,允許你設置配置插件,配置插件由一個插件名稱和緊跟在后面的插件配置代碼塊構成。插件中的值可以是布爾值、字符串、數(shù)字、哈希、數(shù)組等,并且支持條件判斷(if...else)。

例如以下indexer中的配置,并啟動indexer:

[plain] view plain copy
在CODE上查看代碼片派生到我的代碼片
  1. <span style="font-size:14px;">input {  
  2.     file {  
  3.         path => "/home/rsyslog/asaserver/*/*/*/proxy.log.*"  
  4.         exclude => "*.bz2"  
  5.         type => "proxy"  
  6.     }  
  7. }  
  8.   
  9. filter {  
  10.     grok {  
  11.              match => [ "message", "%{APIPROXY}" ]  
  12.              patterns_dir => ["/home/jws/app/logstash/patterns"]  
  13.          }  
  14.     if [request_uripath_orig]{  
  15.         grok {  
  16.                 match => [ "request_uripath_orig", "%{NSSS}" ]  
  17.                 patterns_dir => ["/home/jws/app/logstash/patterns"]  
  18.         }  
  19.     }  
  20. }  
  21.   
  22. output {  
  23.     #stdout { codec =>"rubydebug"}  
  24.     elasticsearch_http {  
  25.         host => "10.20.161.36"  
  26.         flush_size => 500  
  27.         idle_flush_time => 3  
  28.         index => "logstash_pf_proxy-%{+YYYY.MM.dd.HH}"  
  29.         template => "/home/jws/app/logstash/template/t.json"  
  30.         template_overwrite => true  
  31.     }  
  32. }</span>  


5、安裝并啟動kibana3,安裝過程與普通軟件安裝無異,可以配合nginx安裝,這里不做描述,需要注意的是需要在kibana config.js中配置elasticSearch的地址與端口。


注意紅框中的內容,這只是kibana3的默認界面,需要我們用logstash.json代替default.json界面,具體目錄源碼目錄下app/dashboards中。

例如項目中的一個例子,根據(jù)需求制作圖表(類似餅圖,柱狀圖,折線圖等),在筆者實際項目中,從日志中分析數(shù)據(jù),實現(xiàn)系統(tǒng)穩(wěn)定性、響應時間、請求量、業(yè)務響應碼、HTTP狀態(tài)碼等等以kibana展現(xiàn);


并且,elasticsearch的用途遠不如此,可以用來做搜索數(shù)據(jù)源,ES提供了編程接口,可以使用編程的方式獲取ES中的數(shù)據(jù)自定義開發(fā)監(jiān)控程序,靈活且功能強大。

官方文檔(現(xiàn)在都整合在一起了):

logstash:https://www./guide/en/logstash/current/index.html

elasticsearch:https://www./

kibana:https://www./


    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多