大量日志需要记录时,如果设计一个简单高效的日志系统
如题,公司某项目有大量的业务逻辑需要记录操作日志,日志量很大,有什么即简单,性能又高效的办法呢?
- 写入文件
- 写入MongoDB
- 写入MySql
说明一下,我说的记录日志,不是错误日志,也不是sql日志,而且业务的操作日志,比如我做了什么操作,此操作的结果是什么; 不仅是需要记录下来,还需要做后台数据管理,用以给运营人员查看;
阿里云的日志服务SLS挺好的,在laravel中作为route的中间件通过SLS记录日志就行了
有个
SeasLog
也可以看一下我能想到的简单办法,直接保存到文件中,按天保存,这种分析时稍麻烦; 然后是存到mongoDB中,查询会好一些;当然比起mysql的查询肯定远远不足,但是mysql对大量数据的查询性能差
用ES
ELK
有同样的需求,想直接用 MongoDB。期待大神的最佳实践
ELK
用ELK
我也建议你使用 阿里云的日志服务 SLS
ES
神策,感觉适合你这个需求
生产日志到kafka ,可以分业务弄topic, 然后想怎么看就怎么看
既然你需要对日志的查询 肯定不希望重启服务,数据就丢失了 并且记录日志是个优先级不高的业务
不想要第三方付费什么的
队列 延迟 记录到mysql 即可
写日志瓶颈不在本地的写入,本地写入是几乎不会出现阻塞。唯一问题就是采集太快之后 日志写入的存储会支撑不住压力。可采用kafka降低写入压力
filebeat 或者 logstash 写到es去,走ELK完事
elk
ELK
elk + grafana
阿里云sls日志
elk
laradock elk轻松部署
推荐es, 纯数字记录的话也可以用influnxDB
阿里云 sls 日志,好用方便
1、ClickHouse 2、PostgreSQL 按年分库,按月分表,跑队列,往数据库里写数据。别用ELK,难用的很。
aws cloudwatch