基于Prometheus的微服务应用监控
北京易观智库网络科技有限公司
作者:李泰庆
导语:
Prometheus是一套开源的系统监控报警框架。它启发于Google的borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于2015年正式发布。2016年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于Kubernetes 的项目。
现今公司分布式系统都采用Spring Cloud去实现,其简单高效为开发者带来了极大的便利。Spring Cloud本身也有对服务的监控应用指标,如Actuator可以显示系统各种基本信息。但是对于我们业务开发人员,其指标还是过于简单,为了能够详细清楚的描述当前一个微服务的应用指标,我们使用Prometheus对微服务进行指标采集与分析。
材料准备:
1.Spring Boot(被监控的对象微服务应用)
2.Prometheus(指标采集的时间序列数据库)
3.Alertmanager(监控预警组件)
4.Micrometer(微服务指标暴露者)
5.Grafana(对指标进行丰富的图像展示)
Prometheus搭建
Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。
作为新一代的监控框架,Prometheus 具有以下特点:
强大的多维度数据模型:
1.时间序列数据通过metric 名和键值对来区分。
2.所有的metrics 都可以设置任意的多维标签。
3.数据模型更随意,不需要刻意设置为以点分隔的字符串。
4.可以对数据模型进行聚合,切割和切片操作。
5.支持双精度浮点类型,标签可以设为全unicode。
灵活而强大的查询语句(PromQL):在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作。
易于管理:Prometheus server 是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。
高效:平均每个采样点仅占 3.5 bytes,且一个 Prometheus server 可以处理数百万的 metrics。
使用 pull 模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的 metrics。
可以采用 push gateway 的方式把时间序列数据推送至 Prometheus server 端。
可以通过服务发现或者静态配置去获取监控的 targets。
有多种可视化图形界面。
易于伸缩。
需要指出的是,由于数据采集可能会有丢失,所以 Prometheus 不适用对采集数据要 100% 准确的情形。但如果用于记录时间序列数据,Prometheus 具有很大的查询优势,此外,Prometheus 适用于微服务的体系架构。
→下载2.3.2 / 2018-07-12
wget https://gith