1.What Is Prometheus?
Prometheus是一个开源的基于指标的监控系统。当然,Prometheus远不是其中唯一的那个,那么是什么让它脱颖而出?
Prometheus它做了一件非常好的事情。它有一个简单而强大的数据模型和查询语言(PromQL),可让您分析应用程序和基础架构的执行情况。它不会尝试解决指标之外的问题,而是将其留给其他更合适的工具。
自2012年开始,只有少数开发人员在SoundCloud工作时,Prometheus的社区和生态系统不断发展。 Prometheus主要使用Go编写,并根据Apache 2.0许可证授权。有数百人为项目本身做出了贡献,项目不受任何一家公司控制。总是很难说出开源项目里有多少用户,但我估计,截至2018年,成千上万的组织正在使用Prometheus投入到生产中。 2016年,Prometheus项目成为 Cloud Native Computing Foundation(CNCF)基金会的第二个成员。
为了检测自己的代码,所有流行的语言中都有客户端库和 runtimes,包括Go,Java/JVM,C#/.Net,Python,Ruby,Node.js,Haskell,Erlang和Rust。像Kubernetes和Docker这样的软件已经使用了Prometheus的客户端库。对于公开指标的第三方软件 非Prometheus格式,有数百种集成可用。这些称为导出器(Exporter),包括HAProxy,MySQL,PostgreSQL,Redis,JMX,SNMP,Consul和kafka。我的一位朋友甚至添加了对Minecraft Server的监控,因为他非常关心他的每秒帧数。
简单的文本格式可以轻松地向Prometheus公开指标。 其他开源或商业的监控系统,都增加了对这种格式的支持。这允许所有这些监控系统更多地关注核心功能,而不是让用户花费精力去实现支持这些监控系统
数据模型不仅仅标识了每个时间序列的名称,还标识 一组称为标签的无序键值对。 PromQL查询语言允许通过任何这些标签来聚合,因此您不仅可以分析每个过程,还可以分析每个数据中心和每个服务或您定义的任何其他标签。 这些可以 在Grafana等仪表板系统中绘制图表。
PromQL不仅可以被用来画成图形还能被用来定义成告警依据的条件或阈值,而标签(Labels)使警报维护起来更加容易,因为您可以创建涵盖所有可能标签值的单个警报。而 在一些其他的监控系统里,您必须为每台机器单独创建一个警报或者应用。 相关地,服务发现( service discovery)可以自动判断应从源中收集哪些应用或机器的指标。源的话有如下几种Kubernetes,Consul, Amazon Elastic Compute Cloud(EC2),Azure,Google Compute Engine(GCE)和 OpenStack。
对于所有这些功能和优点,Prometheus性能卓越,操作简单。单个Prometheus server每秒可以摄取数百万个样本,Prometheus的所有组件都可以在容器中运行。并且他们避免做任何会妨碍配置管理工具的事情,它旨在集成并构建在你现有的基础架构中,而不是作为管理平台本身。
现在您已经了解了Prometheus的概况,接下来让我们看看Prometheus的主要组成部分是什么,以及Prometheus不是什么。
Last updated