新聞中心
無論是甲方還是一方都需要面對大量日志處理的情況,之前分析的時(shí)候用基本的shell命令進(jìn)行處理,但是面對大量數(shù)據(jù)的時(shí)候則有些力不從心,而且面對純文字也不大直觀。后來有人推薦了ELK,最近ELK升級到了版本五。E, L, K三大組件統(tǒng)一了版本號,花了一段時(shí)間總算搭好了。

創(chuàng)新互聯(lián)建站自2013年創(chuàng)立以來,先為通州等服務(wù)建站,通州等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為通州企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
基本環(huán)境信息:
Linux操作系統(tǒng):centos 6.9 x64
Java版本號:1.8.0_131
ELK: 5.5
0×01 安裝java
ELK需要最新的java1.8.CentOS自帶了openjdk1.7,刪了重新安裝Oracle Java
yum remove java
然后從oracle官網(wǎng)(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)下載java的源碼包
mkdir /usr/java
tar -zxvf jdk-8u131-linux-x64.tar.gz -C /usr/java/
編輯/etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_131
JRE_HOME=/usr/java/jdk1.8.0_131/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME:$JRE_HOME:$CLASSPATH
創(chuàng)建java的軟連接
cd /usr/bin
ln -s /usr/java/jdk1.8.0_131/bin/java java
如圖,安裝成功
2. 安裝elasticsearch
去elk官網(wǎng)下載elasticsearch的rpm包,
直接安裝
rpm -ivh elasticsearch-5.5.0.rpm
啟動(dòng)測試
/etc/init.d/elasticsearch start
如圖,安裝成功
清空elasticsearch的數(shù)據(jù)
curl -XDELETE 'http://127.0.0.1:9200/logstash-*'
配置一下權(quán)限
cd /var/lib
chmod -R 777 logstash
3. 安裝kibana
還是從官網(wǎng)下載kibana的二進(jìn)制包
rpm -ivh kibana-5.5.0-x86_64.rpm
啟動(dòng)
/etc/init.d/kibana start
如圖所示,kibaba也安裝成功了,現(xiàn)在kibana只能從本地訪問,為了方便調(diào)試,利用nginx做一下反向代理
yum install nginx
#/etc/nginx/conf.d/default.conf
server {
listen 80;
location / {
proxy_pass [http://localhost:5601](http://localhost:5601);
}
}
4. 安裝logstash
安裝logstash和之前的步驟一樣,但是logstash是沒有獨(dú)立的守護(hù)服務(wù)的
安裝后的路徑
/usr/share/logstash/
創(chuàng)建config的軟連接
cd /usr/share/logstash
ln -s /etc/logstash ./config
Logstash配置文件是JSON格式,放在/etc/logstash/conf.d 。 該配置由三個(gè)部分組成:輸入,過濾器和輸出。
input 數(shù)據(jù)輸入端,可以接收來自任何地方的源數(shù)據(jù)。
file:從文件中讀取
syslog:監(jiān)聽在514端口的系統(tǒng)日志信息,并解析成RFC3164格式。
redis:從redis-server list 中獲取
beat:接收來自Filebeat的事件
Filter 數(shù)據(jù)中轉(zhuǎn)層,主要進(jìn)行格式處理,數(shù)據(jù)類型轉(zhuǎn)換、數(shù)據(jù)過濾、字段添加,修改等,常用的過濾器如下。
grok: 通過正則解析和結(jié)構(gòu)化任何文本。Grok 目前是logstash最好的方式對非結(jié)構(gòu)化日志數(shù)據(jù)解析成結(jié)構(gòu)化和可查詢化。logstash內(nèi)置了120個(gè)匹配模式,滿足大部分需求。
mutate: 在事件字段執(zhí)行一般的轉(zhuǎn)換??梢灾孛?、刪除、替換和修改事件字段。
drop: 完全丟棄事件,如debug事件。
clone: 復(fù)制事件,可能添加或者刪除字段。
geoip: 添加有關(guān)IP地址地理位置信息。
output 是logstash工作的最后一個(gè)階段,負(fù)責(zé)將數(shù)據(jù)輸出到指定位置,兼容大多數(shù)應(yīng)用,常用的有:
elasticsearch: 發(fā)送事件數(shù)據(jù)到 Elasticsearch,便于查詢,分析,繪圖。
file: 將事件數(shù)據(jù)寫入到磁盤文件上。
mongodb:將事件數(shù)據(jù)發(fā)送至高性能NoSQL mongodb,便于永久存儲(chǔ),查詢,分析,大數(shù)據(jù)分片。
redis:將數(shù)據(jù)發(fā)送至redis-server,常用于中間層暫時(shí)緩存。
graphite: 發(fā)送事件數(shù)據(jù)到graphite。http://graphite.wikidot.com/
statsd: 發(fā)送事件數(shù)據(jù)到 statsd。
其中input和output是必須的,logstash由一個(gè)e參數(shù),可以在終端調(diào)試配置文件
最簡單的輸入輸出
/usr/share/logstash/bin# ./logstash -e 'input { stdin { } } output { stdout {} }'
采用格式化輸出
logstash -e 'input { stdin { } } output { stdout { codec => rubydebug } }'
這邊,我們是從終端輸入,同時(shí)也從終端輸出,但在實(shí)際狀況中幾乎不可能這么做,那先打通輸出環(huán)節(jié)吧,把輸出的內(nèi)容發(fā)送到
Elasticsearch
首先啟動(dòng)Elasticsearch,確保9200端口開著,前邊已經(jīng)啟動(dòng)了。然后執(zhí)行
./logstash -e 'input { stdin { } } output { elasticsearch { hosts => localhost } }'
確認(rèn)一下
curl 'http://localhost:9200/_search?pretty'
logstash的e參數(shù)調(diào)試是很方便,但是內(nèi)容多的話就不方便了,logstash還有一個(gè)f參數(shù),用來從配置文件中讀取信息,簡單示例
#logstash_simple.conf
input { stdin { } }
output {
elasticsearch { hosts => localhost }
}
# ./logstash -f ../config/logstash_simple.conf


然后說一下過濾器
#logstash.conf
input { stdin {} }
filter {
grok {
match => ["message", "%{COMBINEDAPACHELOG}"]
}
}
output {
elasticsearch { hosts => localhost }
}
filter 以何種規(guī)則從字符串中提取出結(jié)構(gòu)化的信息,grok是logstash里的一款插件,可以使用正則表達(dá)式匹配日志,上文中的%{COMBINEDAPACHELOG}是內(nèi)置的正則,用來匹配apache access日志.
測試信息
127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] "GET /xampp/status.php HTTP/1.1" 200 3891 "http://cadenza/xampp/navi.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0"
curl 'http://localhost:9200/_search?pretty'
分析本地的apache日志文件
首先啟動(dòng)elasticsearch
/etc/init.d/elasticsearch start
然后創(chuàng)建logstash的json文件
#logstash_apache.conf
input {
file {
path => "/tmp/access.log"
type => "apache"
start_position => "beginning"
}
}
filter {
grok {
match => {
"message" => "%{COMBINEDAPACHELOG}"
}
}
date {
match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z"]
}
}
output {
elasticsearch { hosts => localhost }
}
啟動(dòng)logstash
./logstash -f ../config/logstash_apache.conf
根據(jù)日志的時(shí)間修改一下時(shí)間段
然后是我最喜歡的功能,基于IP的地理位置顯示
當(dāng)前題目:基于CentOS6.9搭建ELK環(huán)境指南
文章鏈接:http://www.dlmjj.cn/article/dhicojp.html


咨詢
建站咨詢
