加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[bigdata-119] 一个基于redis的简单分布式log系统

发布时间:2020-12-14 04:59:11 所属栏目:大数据 来源:网络整理
导读:1.需要一个log系统,以记录数据线上服务的每一个细节以便分析整个系统的运行,以便查错调试。 2.所有log都推送到redis的若干个队列。 原因:各种log收集系统,要么太复杂,要么不能同时适应windows和linxu,要么both。因此,用redis的队列是最好的。可以将一
1.需要一个log系统,以记录数据线上服务的每一个细节以便分析整个系统的运行,以便查错调试。


2.所有log都推送到redis的若干个队列。
原因:各种log收集系统,要么太复杂,要么不能同时适应windows和linxu,要么both。因此,用redis的队列是最好的。可以将一个log事件发送到不同的队列。


2.每一条log记录是一个log事件,需要记录如下信息:

log时间(格式形如"2017-10-18 13:45:38.789")|log所在的主机ip|log所在主机名|log的应用名|log进程名|log进程id|log线程名|log事件名|log事件参数|用户自定义信息字符串1|用户自定义信息字符串2|用户自定义信息字符串3|用户自定义信息字符串4|用户自定义信息字符串5

其中,"|"是分隔符,因此每个字段里不能再出现"|"符号,以免出现切分错误。"用户自定义信息字符串",是用户自己想写入的任意内容,可以自行增加若干个字段。 3.在阿里云上,有一台ECS服务器,充当log服务主机,这个主机上有一个应用,负责从redis的各log队列取log记录,然后写入到一个log文件里。这个文件,可以按天切,也可以按大小切。(logstash的方案) 4. 任何人需要查任何信息,都可以登录到这个log服务器上,用grep进行查询。(logstash方案) 5. 风险 5.1 阿里云内网不通,导致log不能发送到redis(概率小),这个kafka和flue等分布式log系统也有这个风险,不可避免。 5.2 redis服务器内存占用过大,导致log不能记录,log队列是随时被取走的,所以相对比较空,如果pop应用出错,至少可以支持1亿条记录缓存,概率小。可以使用redis双机热备集群或者切片集群。 5.3 log服务器磁盘占用太大,或者磁盘错误导致log丢求,有一定概率,因此最好多备份。这块基于hdfs的log系统几乎没有这个风险。 6.优势 搭建成本小,需要服务器少,架构,细节可控。 6. 需要每个应用的开发人员实现 6.1 用户自定义的log函数,能同时将log保存在本地文件以及redis的队列 6.2 本地文件和redis队列,至少有一个能存储,否则报警。 6.3 不要求将本地log同步到redis队列。 6.4 其中,第3步骤可由我以py实现,工作量很少,大概一天可以搞定。 6. 参考文献 http://blog.jobbole.com/96823/ http://www.cnblogs.com/wq920/p/3454301.html http://www.sohu.com/a/169131440_465914 https://www.tuicool.com/articles/QfUva2a

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读