prometheus是开源系统监控和报警的工具集合。由soundcloud创建,2012诞生之后,至今已经有很多公司和组织开始使用它。这个开源项目拥有大量的积极开发和建设的研发人员及社区用户。目前已经是一个独立运行的开源的由各公司自行维护的监控项目。为了让项目更充实、更清晰,2016年加入了cncf。继k8s之后第二个加入改组织的成员。

监控现状

目前比较实用的技术工具:

  1. 依赖于自行开发脚本,进行简单的系统级别信息采集,很难自动化和报警相关的处理
  2. 目前的一些被广泛实用的工具:nagios、cacti、icinga 、zabbix、ntop、prometheus
  3. 报警目前的实现:商业报警系统paperduty、自建语音报警系统、邮件短信等

监控愿景

  1. 自愈式监控提示:遇到问题,可以不需要人工干预,被各种自动化集成、人工智能、灾备等系统自行修复
  2. 完整链路式监控:在各个层级的报警间的链路中,能真正发现和暴露真正引起问题的地方,帮助开发和运维迅速解决问题

prometheus能为监控带来什么

prometheus对于上面的监控愿景中的,监控的准确性和精确性带来很大贡献。
具体的优点:

  1. 基于时间序列的模型,等时间间隔的采样数据。
  2. 继续k v的数据模型。键值对的概念。
  3. 数据格式简单、速度快、易维护开发
  4. 采样数据的查询:基于数学运行的查询表达式
  5. 数据采集:http pull/push两种数据采集传输方式
  6. 开源,大量的社区成品插件:prometheus.io
  7. 本身自带图形调试:本身就有图形成形界面,帮助运维调试。
  8. 精细的数据采样:理论可以打到每秒采集,自己定制频率。但是基于数据量的考虑,不建议1s的采集间隔。

客观缺点:

  • 不支持集群化
  • 监控集群过大,本身性能会遭遇瓶颈
  • 中文支持不好
  • io cpu过大之后,偶尔数据丢失(2.0之前)
    prometheus对于运维的要求
  • 需要操作系统展示的知识,不能浮于表面
  • 对数学思维有一定的要求,基本内核是数学公式组成
  • 对监控的经验有很高的要求,定制监控项需要很细的定制