数据标准化
处理日志信息首要问题是要统一日志格式,保证采集到数据的准确性,80%的应用部署在虚机上,20%部署在QAE中,监控采集需同时兼容两种部署方式。
Nginx日志,提供统一化运维平台,封装Nginx安装、扩容、克隆等操作,内置工具统一Nginx日志模块,统一日志格式;
Exception日志,提供通用化配置方案,支持QAE应用及虚机应用,分别采用不同数据流处理,将kafka流合并后统一消费;
业务日志,提供统一日志组件,打印request、response相应信息即可。
机器采集性能瓶颈,延迟
采集日志客户端(Venus-Agent)部署在应用机器上,目前通过CGroup限制资源使用(默认使用1核128M内存),采集效率依赖于CPU、内存资源等资源,同时也被提取规则的复杂程度所影响。
对于大流量应用来说,应尽可能精简提取规则,同时平衡资源等关系;
精简无用日志打印,尽可能一条请求打印一条日志,避免重复打印;
日志流量过大,考虑采样提取。
减少计算资源,节约成本
计算资源同样需要合理分配,Druid单Task预计能消费15Wqps的消息,增加Task可以提高处理能力。由于Druid自身的partition能力不是特别出色,所以多5倍资源并不能提升5倍的处理能力。所以采取将高QPS的实时数据拆分成多个子Topic的方式,接入Druid多个Datasource,对于百万QPS的Nginx流量来说,有如下两种节约方案,采用第二点方案,拆分多个数据流后,相应计算资源节约了120core:
采样流量数据。优点:改造成本小;缺点:Nginx日志对排查问题极为重要,采样会缺少相应日志;
Nginx机器流量拆分,高流量应用Nginx集群独立部署,拆分多个数据流。优点:可避免流量冲击对其他Nginx集群造成影响,保证核心业务的稳定性;缺点:改造成本高,依赖于基础运维体系。