前言
线上项目的日志在整个系统中的重要性不言而喻,以往日志往往成为发现错误用来查看错误信息的工具,但是这其实时间相对滞后了,如果能比使用者更早发现问题,就能更好的应对了,这次我们介绍使用lostash+kafka来监控错误日志发送邮件的功能。
环境信息
操作系统版本:CentOS release 6.5 (Final)
jdk版本:1.7.0-79
软件包准备
名称 | 版本 |
---|---|
logstash | 2.3.4 |
kafka | 2.11-0.10.0.1 |
把准备好的包上传到服务器上,这里我放在/usr/local
文件夹下,准备工作做好下面我们开始部署环境了~
kafka
- 解压
$ tar -zxvf kafka_2.11-0.10.0.1.tgz
- 修改配置文件
$ cd kafka_2.11-0.10.0.1
$ vi config/server.properties
这里我们需要对以下的内容做修改
##broker.id必须唯一
broker.id=0
##当前机器IP地址(单引号不需要)
listeners = PLAINTEXT://'your.host.name':9092
##kafka数据存放目录
log.dirs=/usr/local/kafkalog
##zookeeper地址(这里我使用现有的zookeeper环境'192.168.1.120',后面使用到的地方均需替换为自己的地址,如果没有需要自行搭建)
zookeeper.connect=192.168.1.120:2181
- 启动kafka
##放在后台运行
$ nohup sh bin/kafka-server-start.sh config/server.properties &
- 创建一个主题
##这里创建一个叫'kafkatopic'的主题
$ sh bin/kafka-topics.sh --create --topic kafkatopic --replication-factor 1 --partitions 1 --zookeeper 192.168.1.120:2181
&
- 测试是否ok
##启动生产者,localhost为kafka所在机器的IP,topic就是之前创建的
$ sh bin/kafka-console-producer.sh --broker-list localhost:9092 --sync --topic kafkatopic
##启动消费者,需要制定zookeeper以及topic
$ sh bin/kafka-console-consumer.sh --zookeeper 192.168.1.120:2181 --topic kafkatopic --from-beginning
在生产者窗口输入经典的hello world,在消费者窗口马上出现,这里就说明ok了!
logstash
logstash比较简单,不需要配置
- 同样解压包
$ tar -zxvf logstash-2.3.4.tar.gz
$ cd logstash-2.3.4
- 编写测试配置文件test.conf
##控制台输入
input { stdin { } }
##控制台按照rubydebug格式输出
output { stdout { codec => rubydebug } }
- 启动logstash
$ /usr/local/logstash-2.3.4/bin/logstash -f test.conf
等控制台打印出下面的内容,说明启动完毕
Settings: Default pipeline workers: 4
Logstash startup completed
- 测试
##在控制台输入hello world
hello world
##控制台输出
{
"message" => "hello world",
"@version" => "1",
"@timestamp" => "2016-09-13T02:23:01.783Z",
"host" => "gejunqingdeMacBook-Pro.local",
"tags" => [
[0] "_dateparsefailure"
]
}
- 编写正式的输出到kafka的配置文件kafka.conf
##在4560端口接收log4j发送的日志
input {
log4j {
type => "log4j-json"
port => 4560
}
}
##这里的localhost为kafka所在机器的IP,topic则是之前创建的
output {
kafka {
bootstrap_servers => "localhost:9092"
topic_id => "kafkatopic"
}
}
- 后台运行
$ nohup /usr/local/logstash-2.3.4/bin/logstash -f kafka.conf
结语
至此,logstash+kafka的配置已经结束,后面只需要将日志输入logtsash,使用应用接收kafka消息来发送错误邮件,这些后面再介绍~~