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文件,修改需要监听的日志路径,然后启动就行了
下载:
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文件,修改需要监听的日志路径,然后启动就行了
相关文章推荐
- 分布式日志收集之Logstash 笔记(二)
- ELK(ElasticSearch, Logstash, Kibana)实现分布式日志
- 开源分布式搜索平台ELK(Elasticsearch+Logstash+Kibana)+Redis+Syslog-ng实现日志实时搜索
- 使用kibana+logstash+elasticsearch+redis搭建分布式日志收集、分析、查询系统。
- 分布式日志收集之Logstash 笔记(二)
- 分布式日志收集之Logstash 笔记(一)
- Logstash学习8_分布式日志收集之Logstash 笔记(二)
- ELK(elasticsearch+logstash+kibana)实现Java分布式系统日志分析架构
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- Elasticsearch,Kibana,Logstash,NLog实现ASP.NET Core 分布式日志系统
- 分布式日志收集之Logstash 笔记(一)
- 改造apache的开源日志项目来实现 分布式日志收集系统
- 分布式日志收集之Logstash 笔记(一)
- 分布式日志收集之Logstash 笔记(一)
- 用Kibana和logstash快速搭建实时日志查询、收集与分析系统
- 通过shell和redis来实现集群业务中日志的实时收集分析 推荐
- 分布式环境日志收集
- Scribe 分布式日志收集系统
- logstash开源日志收集查询分析系统
- 分布式日志收集系统:Facebook Scribe