Logstash安装部署配置
为了实现各业务平台日志信息采集到大数据平台hdfs上。之前的定技术栈是flume->kafka->storm->hdfs.其中通过storm需要写代码,稳定性,可扩展性,维护性不好。
从kafka到hdfs,有专门的日志工具logstash可以解决这个问题.目前已经在我们的开发环境稳定的运行了一个礼拜(http://192.168.23.31:50070/explorer.html#/data/logstash)。
现请部署到生产环境。
logstash安装配置如下:
1.logstash下载安装,下载比较慢的话,可以传给你。
wget-chttps://download.elastic.co/logstash/logstash/packages/centos/logstash-2.3.4-1.noarch.rpm
rpm-ivhlogstash-2.3.4-1.noarch.rpm
2.logstashhdfs插件下载安装
gitclonehttps://github.com/heqin5136/logstash-output-webhdfs-discontinued.git
cdlogstash-output-webhdfs-discontinued
/opt/logstash/bin/plugininstalllogstash-output-webhdfs
3.logstash配置
vim/etc/logstash/conf.d/logstash.conf
input{
kafka{
zk_connect=>"192.168.1.50:2181,192.168.1.51:2181,192.168.1.52:2181"#kafka的zk集群地址,请改为生产环境
group_id=>"hdfs"#消费者组,不要和ELK上的消费者一样
topic_id=>"flume_kafka_channel_topic"#kafkatopic,改为生产环境
consumer_id=>"logstash-consumer-192.168.23.31"#消费者id,自定义
consumer_threads=>1
queue_size=>200
codec=>plain{charset=>"UTF-8"}
auto_offset_reset=>"smallest"
}
}
filter{
grok{
match=>{"message"=>
#"%{TIMESTAMP_ISO8601:date}(?<thread_name>.+?\bhost\b.+?)(?<thread>.+?\bu001Cbi\b)(?<action>.+?\baction\b)(?<type>.+?\btype\b)(?<content>.*)"
"(?<thread>.+?\bu001Cbi\b)(?<action>.+?\baction\b)(?<type>.+?\btype\b)(?<content>.*)"
}
}
}
output{
#如果你一个topic中会有好几种日志,可以提取出来分开存储在hdfs上。
if[action]=="-action"and[type]=="-type"{
webhdfs{
workers=>2
host=>"192.168.23.31"#hdfs的namenode地址,改为生产环境
port=>50070#webhdfs端口
user=>"root"#hdfs运行的用户啊,以这个用户的权限去写hdfs。
path=>"/data/logstash/log-%{+YYYY}-%{+MM}/apiLog-%{+YYYY}-%{+MM}-%{+dd}.log"#按月建目录,按天建log文件。
flush_size=>500
#compression=>"snappy"#压缩格式,可以不压缩
idle_flush_time=>10
retry_interval=>0.5
codec=>plain{charset=>"UTF-8"}
}
}
}
4.logstash配置检查,启动,停止
/etc/init.d/logstashconfigteststartstop