查询
日志的存储方案为应对高效和低成本查询,我们采用自研的方式实现。全链路上报的数据按用户ID或请求ID作为主key进行hash分片。分片后的数据在缓存模块累积1min或1M大小,然后写入文件服务器集群。文件写入集群后,将hash值与文件路径的映射关系写入ElasticSearch。
查询数据提供两类能力:
第一类是按主key查询。查询方式是对待查询key计算hash值,从ES中检索出文件路径后送入查询模块过滤查找;
第二类查询能力是非主key的关键字查找。根据业务场景,提供的查询策略是查询到含关键字的日志即可。该策略的出发点是平衡查询性能,避免检索全量文本。也就是第一次查询1000个文件,如果有查询结果则停止后续的查询。如果无查询结果返回,则递增查找2000个文件,直到查询10万个文件终止。
为满足多样的业务场景。我们在数据处理模块抽象了ETL能力,做到插件化扩展和可配置实现。并提供统一的任务管理和集群管理能力。
总结
全链路日志监控的开发过程有以下经验可借鉴:
使用成熟的开源组件构建初级业务功能;
在业务运行过程中,通过修改开源组件或自研提升系统处理能力和稳定性,降低运营成本和提升运维效率;
采用无状态化和路由负载均衡能力实现标准化;
抽象提炼功能模型,建立平台化能力,满足多样业务需求。
Ps:附上最近的招聘信息,有需要的同学可以联系我们
【工作岗位】运营开发
【工作地点】深圳
【岗位职责】 负责织云监控体系建设,调研业界优秀监控方案,深入理解用户需求,规划和实施监控体系升级和演进。 负责织云监控海量数据存储架构设计和建设。深入掌握当前织云监控海量存储架构,调研对比业界优秀存储方案后,对现有架构进行优化升级。 负责织云监控海量数据处理架构设计和建设。深入掌握当前织云监控海量数据处理架构,调研对比业界优秀数据处理框架,对现有架构进行优化升级。 负责织云监控功能开发,打造业界优秀的监控解决方案。
【岗位要求】 计算机相关专业,本科以上学历,三年以上软件开发经验优先。 深入理解Linux系统,熟悉TCP/IP网络原理、HTTP协议工作原理。 精通如下任一语言, C/C++, java, python, 深入理解敏捷开发理念且具有实际经验。 熟悉网络编程框架和开源消息队列,mysql,redis等数据库。 有大数据系统开发经验者优先,如深入掌握 jstorm, hadoop, zookeepe, druid等大数据套件。 有较强的技术钻研能力、逻辑思维能力、沟通和执行力;有良好的合作精神和学习热情。 |