> For the complete documentation index, see [llms.txt](https://zhangguanzhang.gitbook.io/prometheus-up-running/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zhangguanzhang.gitbook.io/prometheus-up-running/part-i-introduction/what-is-prometheus.md).

# 1.What Is Prometheus?

&#x20;      Prometheus是一个开源的基于指标的监控系统。当然，Prometheus远不是其中唯一的那个，那么是什么让它脱颖而出？&#x20;

&#x20;      Prometheus它做了一件非常好的事情。它有一个简单而强大的数据模型和查询语言(PromQL)，可让您分析应用程序和基础架构的执行情况。它不会尝试解决指标之外的问题，而是将其留给其他更合适的工具。

&#x20;      自2012年开始，只有少数开发人员在SoundCloud工作时，Prometheus的社区和生态系统不断发展。 Prometheus主要使用Go编写，并根据Apache 2.0许可证授权。有数百人为项目本身做出了贡献，项目不受任何一家公司控制。总是很难说出开源项目里有多少用户，但我估计，截至2018年，成千上万的组织正在使用Prometheus投入到生产中。 2016年，Prometheus项目成为 Cloud Native Computing Foundation（CNCF）基金会的第二个成员。

&#x20;      为了检测自己的代码，所有流行的语言中都有客户端库和 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的监控，因为他非常关心他的每秒帧数。

&#x20;       简单的文本格式可以轻松地向Prometheus公开指标。 其他开源或商业的监控系统，都增加了对这种格式的支持。这允许所有这些监控系统更多地关注核心功能，而不是让用户花费精力去实现支持这些监控系统

&#x20;      数据模型不仅仅标识了每个时间序列的名称，还标识 一组称为标签的无序键值对。 PromQL查询语言允许通过任何这些标签来聚合，因此您不仅可以分析每个过程，还可以分析每个数据中心和每个服务或您定义的任何其他标签。 这些可以 在Grafana等仪表板系统中绘制图表。

&#x20;       PromQL不仅可以被用来画成图形还能被用来定义成告警依据的条件或阈值，而标签(Labels)使警报维护起来更加容易，因为您可以创建涵盖所有可能标签值的单个警报。而 在一些其他的监控系统里，您必须为每台机器单独创建一个警报或者应用。 相关地，服务发现( service discovery)可以自动判断应从源中收集哪些应用或机器的指标。源的话有如下几种Kubernetes，Consul， Amazon Elastic Compute Cloud（EC2），Azure，Google Compute Engine（GCE）和 OpenStack。

&#x20;      对于所有这些功能和优点，Prometheus性能卓越，操作简单。单个Prometheus server每秒可以摄取数百万个样本，Prometheus的所有组件都可以在容器中运行。并且他们避免做任何会妨碍配置管理工具的事情，它旨在集成并构建在你现有的基础架构中，而不是作为管理平台本身。

&#x20;      现在您已经了解了Prometheus的概况，接下来让我们看看Prometheus的主要组成部分是什么，以及Prometheus不是什么。
