LogStash日誌分析系統

簡介html

一般日誌管理是逐漸崩潰的——當日志對於人們最重要的時候,也就是出現問題的時候,這個漸進的過程就開始了。
日誌管理通常會經歷一下3個階段:java

  1. 初級管理員將經過一些傳統工具(如cat、tail、sed、awk、perl以及grep)對日誌進行檢查,但它的適用範圍僅限於少許的主機和日誌文件類型;git

  2. 考慮到現實中的可擴展性問題,日誌管理也會逐步進化,使用如rsyslog和syslog-ng這樣的工具進行集中化的管理;github

  3. 當日志信息愈來愈大的時候,從快速增加的日誌數據流中提取出所需的信息,並將其與其餘相關聯的事件進行關聯,將變得越加困難,此時LogStash就提供了一個很好的解決方案web

LogStash的優點:redis

  1. 對日誌數據更好的語法分析功能;shell

  2. 更加靈活的日誌存儲方式apache

  3. 附帶搜索和目錄功能json

  4. 易於安裝、可擴展、性能良好等架構

設計及架構

LogStash 由JRuby語言編寫,基於消息(message-based)的簡單架構,並運行在Java虛擬機(JVM)上。不一樣於分離的代理端(agent)或主 機端(server),LogStash可配置單一的代理端(agent)與其它開源軟件結合,以實現不一樣的功能。

在LogStash的生態系統中,主要分爲四大組件:

  1. Shipper:發送事件(events)至LogStash;一般,遠程代理端(agent)只須要運行這個組件便可;

  2. Broker and Indexer:接收並索引化事件;

  3. Search and Storage:容許對事件進行搜索和存儲;

  4. Web Interface:基於Web的展現界面

正是因爲以上組件在LogStash架構中可獨立部署,才提供了更好的集羣擴展性。

在大多數狀況下,LogStash主機可分爲兩大類:

  1. 代理主機(agent host):做爲事件的傳遞者(shipper),將各類日誌數據發送至中心主機;只需運行Logstash 代理(agent)程序;

  2. 中心主機(central host):可運行包括中間轉發器(Broker)、索引器(Indexer)、搜索和存儲器(Search and Storage)、Web界面端(Web Interface)在內的各個組件,以實現對日誌數據的接收、處理和存儲。

部署

基礎環境

um install java-1.7.0-openjdk
java -version # 保證java版本爲1.7

 

部署LogStash

# 下載
wget https://download.elasticsearch.org/logstash/logstash/logstash-1.3.1-flatjar.jar -O logstash.jar 
# 啓動
java -jar logstash.jar agent -v -f shipper.conf # 啓動shipper
java -jar logstash.jar agent -v -f indexer.conf # 啓動indexer

 

部署Redis

# 安裝
yum install redis-server
# 啓動
/etc/init.d/redis-server start
# 測試
$ redis-cli -h 192.168.12.24
redis 192.168.12.24:6379> PING
PONG

 

部署Elasticsearch

# 下載
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.8.noarch.rpm
# 安裝
rpm -ivh elasticsearch-0.90.8.noarch.rpm 
# 啓動
/etc/init.d/elasticsearch status

啓動Kibana

# 安裝
java -jar logstash.jar web # LogStash 1.3.1自帶Kibana
# 查看
http://192.168.12.24:9292

Logstash配置文件與插件

input {
    stdin { }
    file {
        type => "syslog"
        path => ["/var/log/secure", "/var/log/messages"]
        exclude => ["*.gz", "shipper.log"]
    }
    zeromq {
      address => ["tcp://192.168.8.145:8889"]
      mode => "client"
      type => "zmq-input"
      topic => "weblog"
      topology => "pubsub"
      codec => "json"
    }
  }
  filter {
    mutate {
        gsub => [ "message","APPS weblog",""]
        gsub => [ "message","{",""]
        gsub => [ "message","}",""]
    }
  }
  output {
    stdout { debug => true debug_format => "json"}
    
    elasticsearch {
      cluster => "logstash"
      codec => "json"
    }
}

 

日誌類別與處理方法

  1. Apache日誌:自定義apache輸出日誌格式,json輸出,無需filter參與

  2. Postfix日誌:沒法自定義,需使用如grok等filter進行過濾

  3. Tomcat日誌:需將多行日誌合併至一個事件中,並排除空白行

集羣擴展

擴展架構

注意事項

Redis:部署多臺,僅提供高可用做用,無分擔負載做用,可以使用ZeroMQ代替

ElasticSearch:

# 檢測節點狀態:
    curl -XGET 'http://127.0.0.1:9200/_cluster/health?pretty=true'
            green status:全部shard被分配,且運行正常
            yellow status:只有主shard被分配,如集羣正在節點間複製數據時
            red status:存在未被分配的shard
# 集羣監控:
    Paramedic工具:
            安裝:/usr/share/elasticsearch/bin/plugin -install karmi/elasticsearch-paramedic
            查看:http://log.okooo.net:9200/_plugin/paramedic/index.html
    Bigdesk工具:
            安裝:/usr/share/elasticsearch/bin/plugin -install lukas-vlcek/bigdesk
            查看:http://log.okooo.net:9200/_plugin/bigdesk/index.html
            
# 數據保留策略:
            1.LogStash默認爲每一天建立1個index,可手動刪除index
                curl -XDELETE http://127.0.0.1:9200/logstash-2013.12.19
                shell優化腳本:https://github.com/cnf/logstash-tools/blob/master/elasticsearch/clean-elasticsearch.sh
            2.優化index:
                curl -XPOST 'http://127.0.0.1:9200/logstash-2013.12.19/_optimize'
                curl -XPOST 'http://127.0.0.1:9200/_optimize' # 優化全部index
                curl 'http://127.0.0.1:9200/logstash-2013.12.19/_stats?clear=true&store=true&pretty=true' #查看index的大小,index過多會影響優化耗時
            3.默認index數據目錄:/var/lib/elasticsearch/logstash 

參考資料

LogStash官網:http://www.logstash.net/

Elasticsearch官網:http://www.elasticsearch.org/

Kibana查詢語法:http://lucene.apache.org/core/3_6_1/queryparsersyntax.html

相關文章
相關標籤/搜索