logstash+kafka

2016-09-13  本文已影响0人  猴子小心粑

前言

线上项目的日志在整个系统中的重要性不言而喻,以往日志往往成为发现错误用来查看错误信息的工具,但是这其实时间相对滞后了,如果能比使用者更早发现问题,就能更好的应对了,这次我们介绍使用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

##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
##放在后台运行
$ 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
 &
##启动生产者,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比较简单,不需要配置

##控制台输入
input { stdin { } }
##控制台按照rubydebug格式输出
output { stdout { codec => rubydebug } }
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"
    ]
}
##在4560端口接收log4j发送的日志
input {
    log4j {
      type => "log4j-json"
      port => 4560
    }
}
##这里的localhost为kafka所在机器的IP,topic则是之前创建的
output {
    kafka {
        bootstrap_servers => "localhost:9092"
        topic_id => "kafkatopic"
    }
}

结语

至此,logstash+kafka的配置已经结束,后面只需要将日志输入logtsash,使用应用接收kafka消息来发送错误邮件,这些后面再介绍~~

上一篇 下一篇

猜你喜欢

热点阅读