1、夜莺是中国的,Prometheus是美国的
夜莺的研发人员都是国内人员,符合未来国产化趋势,自主可控,中美贸易战的当前,这是选型的重点因素之一。如果Prometheus在美国政府干预下修改了开源协议,那国内用户就尴尬了。
2、夜莺经过了生产检验
夜莺的前身是Open-Falcon,众多大企业都有应用成功案例,比如小米、美团、滴滴、360、百度安全、京东金融、金山云、平安云、七牛云、58同城、新浪微博、爱奇艺、快网、SEA、方正证券等等超过200家大型商业公司在用。
3、Prometheus是单点,夜莺可以水平扩展
小米有1亿监控指标,滴滴有7亿,Prometheus无法解决这种大规模场景。
比如某银行客户当前1万台设备(有部分小机),后面换成x86设备,每个x86设备上面跑50个容器,就轻松达到100万监控对象,每个对象200个指标,总共2亿监控指标(还有很多业务指标没有计算在内,那些通常比机器指标还要多),假设10s采集一次,每秒要处理2000万指标,Prometheus在高性能机器部署的话,单机每秒能抗50万左右,所以单点的Prometheus处理不了这么大量的监控指标。
当前社区出现了Thanos等号称是分布式Prometheus的解决方案,但是刚出来没多久,还需要继续打磨,国内没有大公司在生产环境成功应用。
4、告警这块Prometheus缺少生产级的灵活性
比如告警收敛、告警升级、告警认领、分时段告警、留观时长、静默恢复、策略继承,这些生产环境落地的时候要求的一些灵活性,Prometheus都不具备。另外Prometheus的告警策略是使用配置文件配置的,易用性太差,维护管理也非常不方便,比如下面是配置的一个告警规则:
groups:
# name:组名,报警规则组名称
- name: general.rules
rules:
# alert:告警名称
- alert: NodeFilesystemUsage
# expr:表达式。 磁盘使用率 大于百分之 80 触发
expr: 100 - (node_filesystem_free_bytes{mountpoint="/",fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"} * 100) > 80
# for:持续时间
for: 1m
# labels:定义当前告警规则级别
labels:
# severity: 指定告警级别
severity: warning
# annotations: 告警通知
annotations:
# 调用标签具体指附加通知信息
summary: "Instance {{ $labels.instance }} :{{ $labels.mountpoint }} 分区使用率过高" # 自定义摘要
description: "{{ $labels.instance }} : {{ $labels.job }} :{{ $labels.mountpoint }} 这个分区使用大于百分之80% (当前值:{{ $value }})" # 自定义具体描述
5、PromQL学习成本很高,而且容易OOM
就像SQL一样,这是一个研发人员用的特性,让操作人员,普通运维人员直接使用学习成本太高,如果是一个大的查询,涉及到的时间比较久、实例数比较多,Prometheus集群会吃掉非常多内存,导致OOM(Out of Memory),进程被操作系统杀死。
6、夜莺支持日志监控,符合国内业务监控的诉求
业务监控,比如监控某些API接口的成功率、访问延迟、QPS等等,夜莺支持日志监控,通过正则匹配日志里边的关键词,提取相关指标,也支持SDK埋点的方式。而Prometheus只支持SDK埋点,要求业务开一个暴露自身健康指标的http接口,比如/varz(这是从Google学来的规范),而这个规范太强了,国内公司难以接受。还是日志这种外挂式采集更容易落地。
7、夜莺支持与内部CMDB系统良好打通
夜莺的监控数据结构中,自带了endpoint这个概念,通常代表机器,有服务树组件可以对机器做灵活分组,同时搞定物理机、虚机、容器、交换机、中间件,在一个平台监控所有设备。
8、Prometheus通常只存储15天的监控数据,夜莺可以存储几年的监控数据
核心原因是夜莺做了降采样归档处理,历史数据降采样保存,占用硬盘空间更小,Prometheus没有降采样机制,所以能够存储的监控指标的量会更小,真实落地的时候,存储的时间通常不会超过1个月。
总结:
- 夜莺是依据运维最佳实践,设计的一个运维属性的完备的监控告警产品,可以与公司内部运维体系紧密结合,并在很多大公司落地实践;
- Prometheus是一款高级的TSDB,内置了自己的查询语言,更多考虑的是时序数据的处理,而不是运维场景的实践,偏工具;