首页 / 日志 / logstash收集日志写入redis
logstash收集日志写入redis
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了logstash收集日志写入redis,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5827字,纯文字阅读大概需要9分钟。
内容图文
![logstash收集日志写入redis](/upload/InfoBanner/zyjiaocheng/865/08dd6875165c40f1bfc9d12b66371cea.jpg)
一、部署redis
1、下载redis
[root@linux-node2 ~]# wget http://download.redis.io/releases/redis-4.0.6.tar.gz
[root@linux-node2 ~]# tar -zxvf redis-4.0.6.tar.gz
[root@linux-node2 ~]# mv redis-4.0.6 /usr/loca/src
[root@linux-node2 ~]# cd /usr/local/src/redis-4.0.6
[root@linux-node2 redis-4.0.6]# make
[root@linux-node2 redis-4.0.6]# ln -sv /usr/local/src/redis-4.0.6 /usr/local/redis
[root@linux-node2 redis-4.0.6]# cd /usr/local/redis
2、配置redis
[root@linux-node2 redis]# vim redis.conf
bind 192.168.56.12
daemonize yes
save ""
requirepass 123456 #开启认证
[root@linux-node2 redis]# cp /usr/local/src/redis-4.0.6/src/redis-server /usr/bin/
[root@linux-node2 redis]# cp /usr/local/src/redis-4.0.6/src/redis-cli /usr/bin/
[root@linux-node2 redis]# redis-server /usr/local/redis/redis.conf
26617:C 02 Jan 10:35:26.801 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
26617:C 02 Jan 10:35:26.801 # Redis version=4.0.6, bits=64, commit=00000000, modified=
26617:C 02 Jan 10:35:26.801 # Configuration loaded
3、测试redis
[root@linux-node2 ~]# netstat -tulnp |grep 6379
tcp 0 0 192.168.56.12:6379 0.0.0.0:* LISTEN 26618/redis-server
[root@linux-node2 redis]# redis-cli -h 192.168.56.12
192.168.56.12:6379> KEYS *
(error) NOAUTH Authentication required.
192.168.56.12:6379> auth 123456
OK
192.168.56.12:6379> KEYS *
(empty list or set)
192.168.56.12:6379> quit
二、部署logstash
1.安装logstash
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-7.3.0.tar.gz
tar -xzvf logstash-7.3.0.tar.gz
要了解有关安装、配置和运行Logstash的更多信息,请阅读官网文档。
2.配置logstash
进入/config,自定义配置文件my-logstash.conf
\cp?logstash-sample.conf my-logstash.conf
my-logstash.conf
input {
file {
path => [
# 这里填写需要监控的文件
"/home/logs/test.log"
]
}
}
output {
redis {
codec => plain
host => "xxx.xxx.xxx.xxx" # redis ip
port => 6379 # redis端口号
db => 2 # redis数据库编号
data_type => "channel" # 使用发布/订阅模式 缺陷在于客户端必须一直在线才能接收到消息, 断线可能会导致客户端丢失消息
key => "test" # 通道名称
password => "xxx" # redis password
}
}
redis配置项
以上所有配置项都是可选的,没有必须的。(以下4个红色配置是最重要的4个配置)
- 批处理类(仅用于data_type为list)
- batch:设为true,通过发送一条rpush命令,存储一批的数据
- 默认为false:1条rpush命令,存储1条数据
- 设为true之后,1条rpush会发送batch_events条数据或发送batch_timeout秒(取决于哪一个先到达)
- batch_events:一次rpush多少条
- 默认50条
- batch_timeout:一次rpush最多消耗多少s
- 默认5s
- batch:设为true,通过发送一条rpush命令,存储一批的数据
- 编码类
- codec:对输出数据进行codec,避免使用logstash的separate filter
- 拥塞保护(仅用于data_type为list)
- congestion_interval:每多长时间进行一次拥塞检查
- 默认1s
- 设为0,表示对每rpush一个,都进行检测
- congestion_threshold:list中最多可以存在多少个item数据
- 默认是0:表示禁用拥塞检测
- 当list中的数据量达到congestion_threshold,会阻塞直到有其他消费者消费list中的数据
- 作用:防止OOM
- congestion_interval:每多长时间进行一次拥塞检查
- data_type
- list:使用rpush
- channel:使用publish
- db:使用redis的数据库,默认使用0号
- host:数组
- eg.["127.0.0.1:6380", "127.0.0.1"]
- 可以指定port,会覆盖全局port
- port:全局port,默认6379
- key:list或channel的名字
- 支持动态key,例如:logstash-%{type}
- password:redis密码,默认不使用密码
- reconnect_interval:失败重连的间隔,默认为1s
- timeout:连接超时,默认5s
3.启动
./bin/logstash -f config/my-logstash.conf
启动成功 日志
[2021-01-29T17:26:31,718][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
三、登陆redis中查看
1.date_type => list
[root@linux-node2 ~]# redis-cli -h 192.168.56.12
192.168.56.12:6379> KEYS *
(error) NOAUTH Authentication required.
192.168.56.12:6379> AUTH 123456
OK
192.168.56.12:6379>
192.168.56.12:6379> select 1
OK
192.168.56.12:6379[1]> KEYS *
1) "test"
192.168.56.12:6379[1]> LLEN test #查看key的长度
(integer) 248
192.168.56.12:6379[1]> LLEN test
(integer) 249
192.168.56.12:6379[1]> LPOP test #展示一条记录会减少一条
"{\"@version\":\"1\",\"host\":\"linux-node1\",\"path\":\"/var/log/messages\",\"@timestamp\":\"2018-01-02T03:04:40.424Z\",\"type\":\"systemlog\",\"tags\":[\"_geoip_lookup_failure\"]}"
192.168.56.12:6379[1]> LLEN test
(integer) 248
2.date_type => channel
redis发布订阅缺陷
redis实现了发布订阅(publish/subscribe)的功能,在通常的情况下是不推荐使用的,如果想使用消息队列这种功能,最好还是使用专业的各种MQ中间件,例如rabbitMQ,rockedMQ,activitedMQ等。
概要说一下就是,PUBLISH和SUBSCRIBE的缺陷在于客户端必须一直在线才能接收到消息,断线可能会导致客户端丢失消息,旧版的redis可能会由于订阅者消费不够快而变的不稳定导致崩溃,甚至被管理员杀掉。
第一个原因是和redis系统的稳定性有关。对于旧版的redis来说,如果一个客户端订阅了某个或者某些频道,但是它读取消息的速度不够快,那么不断的积压的消息就会使得redis输出缓冲区的体积越来越大,这可能会导致redis的速度变慢,甚至直接崩溃。也可能会导致redis被操作系统强制杀死,甚至导致操作系统本身不可用。新版的redis不会出现这种问题,因为它会自动断开不符合client-output-buffer-limit pubsub配置选项要求的订阅客户端
第二个原因是和数据传输的可靠性有关。任何网络系统在执行操作时都可能会遇到断网的情况。而断线产生的连接错误通常会使得网络连接两端中的一端进行重新连接。如果客户端在执行订阅操作的过程中断线,那么客户端将会丢失在断线期间的消息,这在很多业务场景下是不可忍受的。
[root@linux-node2 ~]# redis-cli -h 192.168.56.12
192.168.56.12:6379> KEYS *
(error) NOAUTH Authentication required.
192.168.56.12:6379> AUTH 123456
OK
192.168.56.12:6379>
192.168.56.12:6379> select 1
OK
192.168.56.12:6379[1]> SUBSCRIBE test #订阅test 消息channel通道
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "test"
3) (integer) 1
四、写入messages日志测试
[root@linux-node1 conf.d]# echo "helloword" >> /home/logs/test.log
redis date_type => channel 收到消息
127.0.0.1:6379> SUBSCRIBE test
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "test"
3) (integer) 1
1) "message"
2) "test"
3) "2021-01-29T11:14:17.092Z i-1CB808BE helloword"
内容总结
以上是互联网集市为您收集整理的logstash收集日志写入redis全部内容,希望文章能够帮你解决logstash收集日志写入redis所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。