一文搞懂Prometheus、Grafana(含腾讯云上实战)

一、Prometheus和Grafana是什么

通常来说,对于一个运行时的复杂系统,如果系统出了问题是很难排查的。因为你是不太可能在运行时一边检查代码一边调试的。因此,你需要在各种关键点加上监控,通过监控获取的数据,指导我们进一步工作,解决问题。

用开车作为例子:车子本身是一个极其复杂的系统,而当你的车在高速上以 120 公里的速度狂奔时出现了噪音,你是不可能这时候边开车边打开发动机盖子来查原因的。通常来说,好一点的车会有内置电脑,在车子出问题时,告诉你左边轮胎胎压有问题,或是发动机缺水了之类。而这些检测,就是系统监控的一个例子。

对于车辆本身,驾驶员关心的指标如下:

  • 我的速度是多少 - 速度仪表盘
  • 我的油、发动机水温等等关键指标是多少 - 其它仪表盘

通过仪表盘,你不一定能清楚地了解车子出问题的具体原因,但至少可以给你一个大概的方向。比如说,如果水温很高时出现了问题,你大概率可以尝试加点水降温来尝试是否解决问题。

把上面的车类比计算机系统或者一个软件系统:Grafana就是仪表盘,它和车辆的速度表、水温表是一类的,通过这些表盘你可以实时了解系统运行情况。而Prometheus作为一个时序数据库,其实它和大家熟知的Mysql是一类的东西,都是存储数据,提供查询的,它存储了计算机系统在各个时间点上的监控数据。而Grafana仪表盘上的数据,就是通过查询Prometheus获取的。

二、监控系统组成

1.Grafana

是一个监控仪表系统,由Grafana Labs公司开源的的一个系统监测 (System Monitoring) 工具。帮助用户简化监控的复杂度,用户只需要提供需要监控的数据,它就可以生成各种可视化仪表。同时它还支持报警功能,可以在系统出现问题时通知用户。并且Grafana不仅仅只支持Prometheus作为查询的数据库,它还支持如下:

  • Prometheus
  • Graphite
  • OpenTSDB
  • InfluxDB
  • MySQL/PostgreSQL
  • Microsoft SQL Serve
  • 等等

2.Prometheus

Prometheus是一个时间序列数据库。但是,它不仅仅是一个时间序列数据库。它涵盖了可以绑定的整个生态系统工具集及其功能。Prometheus主要用于对基础设施的监控,包括服务器(CPU、MEM等)、数据库(MYSQL、PostgreSQL等)、Web服务等,几乎所有东西都可以通过Prometheus进行监控。而它的数据,则是通过配置,建立与数据源的联系来获取的。

虽然Grafana可以从多种数据(如Prometheus、MySQL/PostgreSQL、OpenTSDB)等等中获取数据,不过Prometheus天生就是为了监控而生,所以我们用的最多的还是Prometheus。这也是我们的标配哦~

3.数据源

在Prometheus的架构设计中,Prometheus并不直接服务监控特定的目标,就比如我们监控linux系统,Prometheus不会自己亲自去监控linux的各项指标。其主要任务负责数据的收集,存储并且对外提供数据查询支持。

因此为了能够监控到某些东西,如主机的CPU使用率,我们需要使用到Exporter。Exporter是一个相对开放的概念,不是专门指某一个程序。它可以是一个独立运行的程序,独立于监控目标以外(如Node Exporter程序,独立于操作系统,却能获取到系统各类指标)。也可以是直接内置在监控目标中的代码(如在项目代码层面接入普罗米修斯API,实现指标上报)。总结下来就是,只要能够向Prometheus提供标准格式的监控样本数据,那就是一个Exporter。

而Prometheus周期性的从Exporter暴露的HTTP服务地址(通常是/metrics)拉取监控样本数据。

对于大家常见的监控主机运行的指标如CPU, 内存,磁盘等信息,我们可以为linux系统下载Node Exporter程序,该程序会监控linux各项指标,并通过:http://<IP>:9100/metrics来展示各项指标。而其给我们返回的内容如下图所示:

本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

原作者: yuann,欢迎转载,但请注明出处。

原文链接:《一文搞懂Prometheus、Grafana(含腾讯云上实战)》

发布日期:2021-01-06

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
一文搞懂Prometheus、Grafana(含腾讯云上实战)
通常来说,对于一个运行时的复杂系统,如果系统出了问题是很难排查的。因为你是不太可能在运行时一边检查代码一边调试的。因此,你需要在各种关键点加上监控,通过监控获取...
<<上一篇
下一篇>>