Nginx 日志对很多企业而言,都属于宝藏,这是为什么呢?
首先,Nginx 作为互联网基础设施,是请求访问的必要入口。
其次,很多部门对 Nginx 日志中可分析的数据都很重视。比如,对于运维团队而言,服务质量和流量带宽等统计 KPI 都可以从 Nginx 日志中获取。而对于公司的业务运营团队而言,运营活动或商品访问的 PV,UV 等,也可以从 Nginx 日志中统计出来。另外,像金融行业的风控模块,对 Nginx 日志其实也是有很大需求的。
假设某公司想优化自己某个产品的带宽成本,那么就可以通过对 Nginx 日志分析得到一个成本指标,倒推研发团队优化流程降低指标。这个指标应该会成为研发,运维,管理层共享的一个 KPI/OKR。
而想要对 Nginx 日志做分析,需要解决三个核心问题:
传统方案
传统方案有两种,一种是大数据领域的方案,一种是运维领域的方案。
方案一
运维领域常见的方案是使用 ELK 全家桶, 通过 Logstash 收集,直接写入 ElasticSearch, 配合 web 插件 Kibana 完成交互分析部分。
但是,这套架构的缺点也很明显:
其中第四点是真正触及用户核心价值的需求,因为我们做的所有前置处理其实最终都是为了得到几个衡量自己 KPI/OKR的指标。
方案二
第二种是大数据解决方案,使用 flume 收集日志,使用 Kafka 作为数据队列,使用 Spark/Flink 消费Kafka 将日志写入对象存储。最后,再接一套完整的数据分析工具。
这套架构也有一些不足之处,比如:
那么有没有一种端到端的解决方案,帮助我们快速获取信息并得到需要管理的指标呢?
日志收集部分,只需要将对象存储通过 JuiceFS 挂载成服务器本地目录,然后直接将 Nginx 日志写入到那个目录即可。
相比传统方案:
大家唯一可能担心的是,Nginx 直接写 JuiceFS 可能会影响 Nginx 的正常运行,有两方面可以帮大家减少一些顾虑:
II. 数据 ETL & 探索 & 分析
数据分析部分,则可以使用 Byzer 来进行分析。Byzer 可以直接读取 JuiceFS 里的日志数据,然后使用 可编程SQL语法 在 Byzer 专属的开源产品 Byzer Notebook 中进行分析。
Byzer Notebook 界面是这样的:
相比传统方案的优点:
III. 指标管理和分析,绑定 KPI/OKR, 赋能公司管理和决策
指标管理和分析部分,则可以使用 Kyligence Zen, 它可以直接对接 Byzer 处理的数据(放在诸如对象存储和云上的 Catalog 里的数据),然后用户可以通过可视化界面或者导入 YAML 指标定义文件来完成指标的创建,最终形成指标看板。比如我们通过 Nginx 日志中每个请求的比特数得到流量,然后乘以带宽成本,形成云存储成本的一部分。 以成本为例,可得到指标管理视图如下:
可以看到,Zen 可以很好地展示和管理指标,形成指标目录,并且提示相关分险。
另外,这些指标还可以和诸如飞书等管理工具集成,比如 Kyligence Zen 可以自动发送飞书信息:
当前 Kyligence Zen 正在内测阶段,可以访问 https://kyligence.io/zen 申请试用
总结
综上,用户仅仅需要使用 JuiceFS/Byzer/Kyligence Zen 三个组件就可以完成数据的收集和分析以及指标驱动等一整套体系。具有如下优点: