前言
線上項(xiàng)目的日志在整個(gè)系統(tǒng)中的重要性不言而喻,以往日志往往成為發(fā)現(xiàn)錯(cuò)誤用來(lái)查看錯(cuò)誤信息的工具,但是這其實(shí)時(shí)間相對(duì)滯后了,如果能比使用者更早發(fā)現(xiàn)問(wèn)題,就能更好的應(yīng)對(duì)了,這次我們介紹使用lostash+kafka來(lái)監(jiān)控錯(cuò)誤日志發(fā)送郵件的功能。
環(huán)境信息
操作系統(tǒng)版本:CentOS release 6.5 (Final)
jdk版本:1.7.0-79
軟件包準(zhǔn)備
| 名稱 | 版本 |
|---|---|
| logstash | 2.3.4 |
| kafka | 2.11-0.10.0.1 |
把準(zhǔn)備好的包上傳到服務(wù)器上,這里我放在/usr/local文件夾下,準(zhǔn)備工作做好下面我們開(kāi)始部署環(huán)境了~
kafka
- 解壓
$ tar -zxvf kafka_2.11-0.10.0.1.tgz - 修改配置文件
$ cd kafka_2.11-0.10.0.1
$ vi config/server.properties
這里我們需要對(duì)以下的內(nèi)容做修改
##broker.id必須唯一
broker.id=0
##當(dāng)前機(jī)器IP地址(單引號(hào)不需要)
listeners = PLAINTEXT://'your.host.name':9092
##kafka數(shù)據(jù)存放目錄
log.dirs=/usr/local/kafkalog
##zookeeper地址(這里我使用現(xiàn)有的zookeeper環(huán)境'192.168.1.120',后面使用到的地方均需替換為自己的地址,如果沒(méi)有需要自行搭建)
zookeeper.connect=192.168.1.120:2181
- 啟動(dòng)kafka
##放在后臺(tái)運(yùn)行
$ nohup sh bin/kafka-server-start.sh config/server.properties &
- 創(chuàng)建一個(gè)主題
##這里創(chuàng)建一個(gè)叫'kafkatopic'的主題
$ sh bin/kafka-topics.sh --create --topic kafkatopic --replication-factor 1 --partitions 1 --zookeeper 192.168.1.120:2181
&
- 測(cè)試是否ok
##啟動(dòng)生產(chǎn)者,localhost為kafka所在機(jī)器的IP,topic就是之前創(chuàng)建的
$ sh bin/kafka-console-producer.sh --broker-list localhost:9092 --sync --topic kafkatopic
##啟動(dòng)消費(fèi)者,需要制定zookeeper以及topic
$ sh bin/kafka-console-consumer.sh --zookeeper 192.168.1.120:2181 --topic kafkatopic --from-beginning
在生產(chǎn)者窗口輸入經(jīng)典的hello world,在消費(fèi)者窗口馬上出現(xiàn),這里就說(shuō)明ok了!
logstash
logstash比較簡(jiǎn)單,不需要配置
- 同樣解壓包
$ tar -zxvf logstash-2.3.4.tar.gz
$ cd logstash-2.3.4 - 編寫測(cè)試配置文件test.conf
##控制臺(tái)輸入
input { stdin { } }
##控制臺(tái)按照rubydebug格式輸出
output { stdout { codec => rubydebug } }
- 啟動(dòng)logstash
$ /usr/local/logstash-2.3.4/bin/logstash -f test.conf
等控制臺(tái)打印出下面的內(nèi)容,說(shuō)明啟動(dòng)完畢
Settings: Default pipeline workers: 4
Logstash startup completed
- 測(cè)試
##在控制臺(tái)輸入hello world
hello world
##控制臺(tái)輸出
{
"message" => "hello world",
"@version" => "1",
"@timestamp" => "2016-09-13T02:23:01.783Z",
"host" => "gejunqingdeMacBook-Pro.local",
"tags" => [
[0] "_dateparsefailure"
]
}
- 編寫正式的輸出到kafka的配置文件kafka.conf
##在4560端口接收l(shuí)og4j發(fā)送的日志
input {
log4j {
type => "log4j-json"
port => 4560
}
}
##這里的localhost為kafka所在機(jī)器的IP,topic則是之前創(chuàng)建的
output {
kafka {
bootstrap_servers => "localhost:9092"
topic_id => "kafkatopic"
}
}
- 后臺(tái)運(yùn)行
$ nohup /usr/local/logstash-2.3.4/bin/logstash -f kafka.conf
結(jié)語(yǔ)
至此,logstash+kafka的配置已經(jīng)結(jié)束,后面只需要將日志輸入logtsash,使用應(yīng)用接收kafka消息來(lái)發(fā)送錯(cuò)誤郵件,這些后面再介紹~~