1、logstash的目前的最新版本是2.0.0,建议安装在Linux平台,虽然它也支持Windows平台,但可能会有问题
下载:
wget https://download.elastic.co/logstash/logstash/logstash-2.0.0.tar.gz
2、解压:
tar -zxvf logstash-2.0.0.tar.gz
3、进入logstash-2.0.0目录下,在根目录下建立conf文件夹,用来统一管理所有配置文件:
mkdir conf
4、进入conf目录下,建立shipper.conf文件,用来设置本机需要监控的日志路径,以及写入的路径:
touch shipper.conf
5、此处设置为写入redis:
shipper.conf:
input {
file {
path => [
# 这里填写需要监控的文件
"/home/appuser/backlogs/wechat_service/wechat.service.2016-08-26.log",
"/data/logs/wechat_service/access.log"
]
}
}
output {
# 输出到redis
redis {
host => "192.169.1.10" # redis主机地址
port => 14001 # redis端口号
db => 8 # redis数据库编号
data_type => "channel" # 使用发布/订阅模式
key => "logstash_list_0" # 发布通道名称
}
}
filter {
mutate {
# 替换元数据host的值
replace => ["host", "
192.169.1.10 B[1]"]
}
}
6、在conf目录下新建indexer.conf文件,用来把之前写入的redis的日志内容发送到一个统一文件路径:
touch indexer.conf
7、此处设置为从redis接收日志统一写到一个文件
indexer.conf:
input {
redis {
host => "
192.169.1.10" # redis主机地址
port => 14001 # redis端口号
db => 8 # redis数据库编号
data_type => "channel" # 使用发布/订阅模式
key => "logstash_list_0" # 发布通道名称
}
}
output {
file {
path => "/data/logs/logstash/all.log" # 指定写入文件路径
message_format => "%{host} %{message}" # 指定写入格式
flush_interval => 0 # 指定刷新间隔,0代表实时写入
}
}
8、下面启动两个配置文件
进入在logstash根目录:
先检测两个文件配置是否有问题:
bin/logstash -f conf/shipper.conf -t
bin/logstash -f conf/indexer.conf -t
然后启动 两个配置:
bin/logstash -f conf/shipper.conf
bin/logstash -f conf/indexer.conf
9、接下来就是见证奇迹的时刻
在监听的其中一个日志文件中写入一条日志:
echo "Hello World" >> /data/logs/wechat_service/access.log
这时打开从redis写入的all.log,这时候就可以看到access.log中的日志被监听过来了
10、上面实现了一台机器上监听多个文件汇总,想要收集多台机器上的日志同理,只需在另一台机器上配置一个shipper文件,修改需要监听的日志路径,然后启动就行了