公司系统的日志不算大,百万级别而已。
但是有两个问题:
1.使用mysql存储,并且所有API接口的日志全都放在一个表里
2.因为是系统的所有接口产生的日志全被塞到同一个表里,导致各种数据都有,五花八门的。虽说都是JSON格式,但是现在平时系统维护中,如果需要查询某个关键字的数据,查询效率比较低。经常导致mysql提示磁盘加载压力大(说明查询导致了磁盘的scan)。
几个月前就想解决这个问题,当时考虑了两个方案:
1.hbase存储key-value结构的json日志,当时已经把haddop+hbase的环境搭建好了。
后面看到一些资料说,hbase存储日志没问题,但是系统运维过程中,如果经常性的有较复杂的查询需求,可能需要自己写很多逻辑。
总之是hbase存储日志方便,但是查询起来不太好用.
2.ELK.
这个就不用多说了,以前在携程,用的就是这个。但是当时只是作为使用者,调用接口对关键的业务逻辑写埋点,并未自己搭建过ELK平台(搭建ELK是携程基础架构组的同事的工作).
今天周末闲着无事,在家里用自己的win7 x64的机器搭建了ES + LOGSTASH + KIBANA.
没想到还比较顺利,很快就搭建起来了(中间其实还包括安装了ES-HEAD, NODEJS,npm,grunt等组件)。
个人觉得在linux上应该比windows更加容易搭建,毕竟在生产环境中更多的还是使用linux。
所以后面有空在公司生产环境中搭建一套ELK来取代现在的mysql日志。