利用RELK進行日誌收集

利用RELK進行日誌收集

發佈時間:April 3, 2018 // 分類:運維工做,開發筆記,python // No Commentspython

前不久在作應急的老是遇到要求對日誌進行分析溯源,當時就想到若是對常見的日誌類進行解析後統一入庫處理,而後在對相關的IP/URL進行統計概括。對於溯源之類的非常方便。想到數據量比較大,又要便於分析,就想到了ELK.redis

搭建一套基於elk的日誌分析系統。
系統centos 內存4G 雙核

大概架構如此

1.elk搭建mongodb

wget https: //artifacts .elastic.co /downloads/elasticsearch/elasticsearch-6 .4.2.rpm
wget https: //artifacts .elastic.co /downloads/kibana/kibana-6 .4.2-x86_64.rpm
wget https: //artifacts .elastic.co /downloads/logstash/logstash-6 .4.2.rpm
 
rpm -ivh elasticsearch-6.4.2.rpm
sudo chkconfig --add elasticsearch
/etc/init .d /elasticsearch start
 
rpm -ivh kibana-6.4.2-x86_64.rpm
/etc/init .d /kibana start
sudo chkconfig --add kibana
 
rpm -ivh logstash-6.4.2.rpm
cd /usr/share/logstash
ln -s /etc/logstash . /config

整個elk系統搭建好了,安裝redis做爲agent收集日誌來做爲logstash的輸入源centos

wget http: //download .redis.io /redis-stable . tar .gz
tar zxf redis-stable. tar .gz
cd redis-stable
make && make install

修改redis.conf。緩存

bind 0.0.0.0
protected-mode no
daemonize yes
maxclients 1000000

啓動redisruby

sudo redis.conf /etc/
redis-server /etc/redis .conf

Logstash配置文件是JSON格式,放在/etc/logstash/conf.d 。 該配置由三個部分組成:輸入,過濾器和輸出。bash

input 數據輸入端,能夠接收來自任何地方的源數據。
file:從文件中讀取
syslog:監聽在514端口的系統日誌信息,並解析成RFC3164格式。
redis:從redis-server list 中獲取
beat:接收來自Filebeat的事件
Filter 數據中轉層,主要進行格式處理,數據類型轉換、數據過濾、字段添加,修改等,經常使用的過濾器以下。
grok: 經過正則解析和結構化任何文本。Grok 目前是logstash最好的方式對非結構化日誌數據解析成結構化和可查詢化。logstash內置了120個匹配模式,知足大部分需求。
mutate: 在事件字段執行通常的轉換。能夠重命名、刪除、替換和修改事件字段。
drop: 徹底丟棄事件,如debug事件。
clone: 複製事件,可能添加或者刪除字段。
geoip: 添加有關IP地址地理位置信息。
output 是logstash工做的最後一個階段,負責將數據輸出到指定位置,兼容大多數應用,經常使用的有:
elasticsearch: 發送事件數據到 Elasticsearch,便於查詢,分析,繪圖。
file: 將事件數據寫入到磁盤文件上。
mongodb:將事件數據發送至高性能NoSQL mongodb,便於永久存儲,查詢,分析,大數據分片。
redis:將數據發送至redis-server,經常使用於中間層暫時緩存。
graphite: 發送事件數據到graphite。http://graphite.wikidot.com/
statsd: 發送事件數據到 statsd。

編寫logstash的配置文件。對全部的數據全盤接受,感謝Mosuan師傅的指導。架構

input {   
     redis {
         host => '127.0.0.1'
     port => 6379
         password => 'password'
         data_type => 'list'
         key => 'logstash:redis'
     }
}
output {
     elasticsearch { hosts => localhost }
     stdout { codec => rubydebug }
}

Logpara

相關文章
相關標籤/搜索