您的位置:首页 > 其它

logstash实现分布式日志收集

2016-10-19 14:56 447 查看
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文件,修改需要监听的日志路径,然后启动就行了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐