logstash+kafka

前言

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

你可能感兴趣的:(logstash+kafka)