监控系统的选型建议,这是一款灵活( 四 )


安装比较复杂: 个人的亲身感受 , 由于它是从小米内部衍生出来的 , 虽然去掉了对小米内部的依赖 , 但是组件还是比较多 , 如果对整个架构不熟悉 , 安装很难一蹴而就 。
3. Prometheus(号称下一代监控)
监控系统的选型建议,这是一款灵活
文章图片
Prometheus(普罗米修斯)是由前google员工2015年正式发布的开源监控 , 采用Go语言 。 它不仅有一个很酷的名字 , 同时它有Google与k8s的强力支持 , 开源社区异常火爆 。
Prometheus 2016年加入云原生基金会 , 是继k8s后托管的第二个项目 , 未来前景被相当看好 。 它和Open-Falcon最大不同在于:数据采集是基于Pull模式的 , 而不是Push模式 , 并且架构非常简单 。
先来了解下Prometheus的架构设计:
监控系统的选型建议,这是一款灵活
文章图片
Prometheus架构图 , 来自网络
Prometheus Server: 核心组件 , 用于收集、存储监控数据 。 它同时支持静态配置和通过Service Discovery动态发现来监控目标 , 并从监控目标中获取数据 。 此外 , Prometheus Server 也是一个时序数据库 , 它将监控数据保存在本地磁盘中 , 并对外自定义的 PromQL 语言实现对数据的查询和分析 。
Exporter: 用来采集数据 , 作用类似于agent , 区别在于Prometheus是基于Pull方式拉取采集数据的 , 因此 , Exporter通过HTTP服务的形式将监控数据按照标准格式暴露给Prometheus Server , 社区中已经有大量现成的Exporter可以直接使用 , 用户也可以使用各种语言的client library自定义实现 。
Push gateway: 主要用于瞬时任务的场景 , 防止Prometheus Server来pull数据之前此类Short-lived jobs就已经执行完毕了 , 因此job可以采用push的方式将监控数据主动汇报给Push gateway缓存起来进行中转 。
Alert Manager: 当告警产生时 , Prometheus Server将告警信息推送给Alert Manager , 由它发送告警信息给接收方 。
Web UI: Prometheus内置了一个简单的web控制台 , 可以查询配置信息和指标等 , 而实际应用中我们通常会将Prometheus作为Grafana的数据源 , 创建仪表盘以及查看指标 。
下面是Prometheus的优势:
轻量: 架构简单 , 不依赖外部存储 , 单个节点可直接工作 , 二进制文件启动即可 , 属于轻量级的Server , 便于迁移和维护 。
较强的处理能力: 监控数据直接存储在Prometheus Server本地的时序数据库中 , 单个实例可以处理数百万的metrics 。
灵活的数据模型: 同Open-Falcon , 引入了tag , 属于数据模型 , 聚合统计更方便 。
强大的查询语句: PromQL允许在同一个查询语句中 , 对多个metrics进行加法、连接和取分位值等操作 。
很好地支持云环境: 能自动发现容器 , 同时k8s和etcd等项目都了对Prometheus的原生支持 , 是目前容器监控最流行的方案 。
下面是Prometheus的劣势:
功能不够完善: Prometheus从一开始的架构设计就是要做到简单 , 不集群化方案 , 长期的持久化存储和用户 , 而这些是企业变大后所必须的特性 , 目前要做到这些只能在Prometheus之上进行扩展 。
网络规划变复杂: 由于Prometheus采用的是Pull模型拉取数据 , 意味着所有被监控的endpoint必须是可达的 , 需要合理规划网络的安全配置 。
监控的选型建议
通过上面的介绍 , 大家对主流的监控应该有了一定的认识 。 面对选型问题 , 我的建议是:


推荐阅读